MCP Phone Calls: Give Claude a Real Phone Number with Spix
The Model Context Protocol has become the standard way to give AI models access to external tools. Developers use it to connect LLMs to file systems, databases, and APIs. But most MCP integrations stop at data and text. Two commands. No code. Claude can make real phone calls. This guide covers how to give Claude — or any MCP-capable agent — a real phone number and email inbox using the Spix MCP server. By the end, your agent will pick up the phone as naturally as it searches the web.
What MCP Unlocks
Without MCP, integrating telephony into an AI agent means writing code: API calls, credential management, error handling, state machines. That works for production systems with dedicated engineering teams.
MCP takes a different path. Install the Spix MCP server once and any MCP-capable LLM — Claude, GPT-4o, or anything else that speaks the protocol — can immediately use real phone calls and email as native capabilities. No middleware. No plumbing.
Most AI agent workflows rely on text: write an email, update a record, generate a report. Add phone calls and the use cases expand dramatically:
- A lead-gen agent that qualifies prospects with a live conversation, not a form
- A support agent that follows up unresponsive tickets with an outbound call
- A scheduling agent that calls patients to confirm appointments and reschedule cancellations
- A logistics agent that coordinates deliveries with recipients in real time
- A sales agent that works a call list overnight while your team sleeps
How MCP Phone Calls Work
The Spix MCP server exposes telephony and email as native tool calls. When Claude receives a task that requires calling someone, it invokes spix_call_create the same way it calls any other tool — no special handling required.
The full flow:
- Claude identifies that the task requires a phone call
- Claude calls spix_call_create with the target number and playbook ID
- Spix initiates an outbound call using the voice pipeline: Deepgram Nova-3 for speech-to-text, Claude for conversation logic, Cartesia Sonic-3 for text-to-speech
- The call runs — the agent converses with the human, handles interruptions, detects outcomes. Subtle ambient background audio plays during silence for a natural feel.
- When the call ends, Spix returns the transcript, duration, and outcome to Claude
- Claude continues the task with the structured call data
End-to-end latency from end-of-speech to agent response during the call is approximately 500ms — conversational, not robotic.
Set Up in Two Commands
Install Spix, authenticate, and wire it into Claude Desktop:
# Install Spix
curl -sf https://spix.sh/install | sh
# Authenticate (magic link, no credit card)
spix auth login
# Install the MCP server into Claude Desktop
spix mcp install claudeThe last command writes the MCP configuration to Claude Desktop's config file at ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"spix": {
"command": "spix",
"args": ["mcp", "serve", "--session-name", "claude-desktop", "--no-interactive"],
"env": { "SPIX_API_KEY": "spix_live_sk_..." }
}
}
}Restart Claude Desktop and you are done. Spix appears in Claude's tool list — 43 tools, ready to use. For Cursor, run spix mcp install cursor instead.
43 MCP Tools by Namespace
The Spix MCP server exposes 43 tools in the default safe profile, organized across 8 namespaces. The safe profile excludes destructive operations like releasing phone numbers or changing billing plans.
Calls (6 tools): spix_call_create — initiate a voice call with a playbook. spix_call_list — list recent calls with filters. spix_call_show — get call session details. spix_call_transcript — retrieve the full transcript. spix_call_summary — get AI-generated call summary. spix_call_cancel — cancel an in-progress call.
Playbooks (12 tools): spix_playbook_create, spix_playbook_list, spix_playbook_show, spix_playbook_update, spix_playbook_pause, spix_playbook_resume, spix_playbook_clone, spix_playbook_voice_list, spix_playbook_language_list, spix_playbook_emotion_list, spix_playbook_rule_list, spix_playbook_rule_add.
Phone (4 tools): spix_phone_list, spix_phone_show, spix_phone_bind, spix_phone_unbind.
Email (3 tools): spix_email_send, spix_email_reply, spix_email_list.
Contacts (6 tools): spix_contact_create, spix_contact_list, spix_contact_show, spix_contact_history, spix_contact_summary, spix_contact_tag.
Billing (3 tools): spix_billing_status, spix_billing_credits, spix_billing_credits_history.
Webhooks (3 tools): spix_webhook_endpoint_create, spix_webhook_endpoint_list, spix_webhook_subscription_create.
Auth (3 tools): spix_auth_whoami, spix_auth_key_list, spix_auth_key_create.
SMS (3 tools): spix_sms_send, spix_sms_list, spix_sms_thread.
The full profile (--tool-profile full) adds 6 more tools for destructive operations like playbook deletion, phone number release, and billing plan changes. Use spix mcp tool list to see everything available.
Real Example: Sales Qualification Agent
Here is a concrete multi-step example. You want Claude to work through a lead list, calling each prospect to qualify them.
First, create the playbook. You only need to do this once:
spix --json playbook create \
--type call \
--name "Lead Qualifier" \
--goal "Qualify inbound leads for product demo" \
--persona "You are Alex, a sales development rep at Acme Corp. Friendly, direct, respectful of time." \
--briefing "Introduce Acme Corp developer tools. Ask if the prospect is evaluating new tooling this quarter. If open, offer a 15-minute demo." \
--success-criteria "Lead agreed to a demo or explicitly declined."Then give Claude your lead list and let it work:
I have these leads -- call each one with the Lead Qualifier playbook
and give me a summary.
Phone: +14155551234, Name: Sarah Chen, Company: Acme Labs
Phone: +14155555678, Name: Dave Patel, Company: BuildspaceClaude will call spix_call_create for each lead, wait for completion, retrieve the transcript with spix_call_transcript, and return a summary table with outcomes, key quotes, and recommended next steps. No code. No webhooks. No state management.
Playbook Best Practices
A playbook is the instruction set for your agent on each call. It has three key fields: persona, briefing, and success criteria.
- Persona: Give the agent a name — it increases engagement ("Hi, this is Alex from..."). Specify tone: "friendly and direct" vs "formal and efficient." Keep it 1-2 sentences.
- Briefing: State the goal clearly at the top. Include specific information the agent needs (appointment time, product name, order number). Handle objections: "If they say not interested, thank them and end the call." Specify what NOT to do: "Do not discuss pricing."
- Success criteria: Be specific — "Lead agreed to a 15-minute demo" rather than "Lead was interested." Cover failure cases: "Lead declined or did not answer."
Session Scoping for Production
By default, the MCP server runs unrestricted: Claude can access all your playbooks, numbers, and contacts. For production agents, scope the session down.
spix mcp serve \
--session-name "support-bot" \
--default-playbook plb_call_abc123 \
--allow-playbook plb_call_abc123 \
--allow-channel call \
--no-interactiveNow Claude can only place calls, only with the specified playbook, and only on the voice channel. Any attempt to use a different playbook or send email returns a session_scope_violation error.
Audit Trail
Every action taken through the MCP server is logged with actor_type: mcp and your session name. You always know what Claude did, when, and with what parameters.
Works with Any MCP-Compatible Framework
The Spix MCP server uses standard stdio transport. Any framework that supports MCP works — not just Claude Desktop.
from agents import Agent, Runner
from agents.mcp import MCPServerStdio
spix = MCPServerStdio(
params={"command": "spix", "args": ["mcp", "serve", "--session-name", "my-agent", "--no-interactive"]}
)
agent = Agent(
name="sales_agent",
instructions="Use spix tools to call leads and log outcomes.",
mcp_servers=[spix]
)
result = await Runner.run(agent, "Call +14155551234 with the Lead Qualifier playbook.")FAQ
- Does the MCP server work with non-Claude models? Yes. Any framework that supports MCP stdio transport works. Claude Desktop is the easiest setup, but OpenAI Agents SDK, LangChain, and custom loops all work.
- Can the agent create playbooks via MCP? Yes — spix_playbook_create is a safe-profile tool. Your agent can design its own playbooks on the fly based on the task.
- Does the MCP server need to stay running? Claude Desktop manages the lifecycle — it starts the server when needed. You do not need to keep it running manually.
- What is the difference between spix mcp serve and spix mcp install claude? serve runs the server directly (for custom integrations). install claude writes the config to Claude Desktop's config file automatically.
Credits
MCP calls consume credits at the same rates as CLI or API usage. Voice calls cost 10 credits per minute; unanswered attempts cost 1 credit. The Agent plan at $20/mo includes 500 credits — roughly 50 minutes of answered calls, plenty for testing and light production use. Check your balance anytime with spix billing credits or just ask Claude: "How many Spix credits do I have left?"