Agent stack — plugin, MCP, skills, REST
How Payphone Cursor plugin, MCP, skills, and REST compose — use each alone or together.
Agent stack
Payphone agent integration is layered. Each layer works on its own; together they give rules, tools, and operator SMS without duplicate setup.
Layers
| Layer | What it gives | Works alone? | Needs |
|---|---|---|---|
| Cursor plugin | Rules, skills, slash commands, Plugin MCP URL | Yes | pnpm cursor:plugin:install + restart Cursor |
| Plugin MCP | Remote tools at payphone.wtf/mcp (via plugin) | Yes (after plugin + OAuth Login) | Plugin MCP Servers → dial → Login |
| Project MCP (optional) | Same server under Installed MCP | Yes | --with-project-mcp — usually skip if plugin is loaded |
REST + DIAL_API_KEY | All /api/v1/*, operator scripts, CI | Yes | Mint key in billing; export env |
| Skills | Playbooks (dial, payphone, operator-sms) | With plugin or copied to .agents/skills | Plugin install or Codex/Claude skill copy |
Recommended paths
Founder / Cursor (simplest)
pnpm cursor:agent:setup -- --api-key dial_live_… --phone +1…- Restart Cursor → Plugin MCP → dial → Login
- Operator texts use REST (
DIAL_API_KEY+operator-notify.shor agent rule)
Plugin MCP is enough — do not add project .cursor/mcp.json unless you have a specific reason (duplicate dial entries confuse OAuth).
Plugin only (no credentials yet)
pnpm cursor:plugin:installYou get rules + skills + MCP registration. Add DIAL_API_KEY and OAuth when ready.
MCP only (no plugin)
Add to .cursor/mcp.json:
{
"mcpServers": {
"dial": { "type": "http", "url": "https://payphone.wtf/mcp" }
}
}Login under Installed MCP. No always-on rule or /dial-* commands unless you add skills separately.
REST / CI only
Export DIAL_API_KEY — no Cursor required. MCP does not accept dial_live_* today; use REST for headless sends.
Operator SMS — which transport?
| Need | Use |
|---|---|
| Milestone texts (default) | REST operator-notify.sh or agent with DIAL_API_KEY |
| Owned-line two-way | REST only — set DIAL_OWNED_LINE_E164 |
| Quick MCP ping | send_operator_update (OAuth credits, pool only, optional to) |
Policy file: .payphone/operator-notifications.json — created by setup or install-operator-policy.sh.
Billing accounts
- REST
DIAL_API_KEYdebits the key's Payphone account. - MCP OAuth Login debits the logged-in Payphone account — may differ from your API key account if you use both.
Use one account for production, or track both explicitly.
Related
- Quickstart — segmentation funnel
- Agent quickstart — bootstrap blob + Cursor install
- Connect hub — Dial Agent vs MCP entry
- GitHub #560 — composition hardening