MCP server that lets Claude make phone calls
For people who would rather ask than write code, and for AI agents that need to make a phone call as one step of a larger job: Wixzel Voice ships an official Model Context Protocol server, wixzel-voice-mcp, that puts the whole API in front of Claude, Cursor or any MCP client as tools. Connect it once with OAuth, and "call this number and confirm the delivery slot" becomes something an agent can do, over your own SIP trunk, from your prepaid balance, and never without asking before it dials.
Last updated
How do you build an AI agent that makes phone calls over MCP with Wixzel Voice?
- 01claude mcp add --transport http wixzel-voice https://mcp.voice.wixzel.com/mcp
The hosted server, for Claude Code, claude.ai, Claude Desktop and any client that speaks MCP over HTTP. Sign in with OAuth, tick the scopes the client may use, and it is connected. No key is pasted anywhere.
- 02npx -y wixzel-voice-mcp
The same server run locally over stdio with an API key in the environment, for Claude Code, Cursor, Windsurf, VS Code, offline work, or pointing at a self-hosted server.
- 03/mcp__wixzel-voice__quickstart
A prompt the server ships: it connects a carrier, registers a number, builds an agent and places a first call, stopping before anything that dials. diagnose_call explains a failed call from its record, usage and SIP logs; spend_report turns a period into dollars by component and by call.
- 04place_call, start_campaign, create_topup, purchase_phone_number
The tools that spend money or ring a real phone are annotated so the client asks before running them. purchase_phone_number buys a number on your own carrier account, which your carrier bills. place_call, create_topup and purchase_phone_number carry an idempotency key, and a retry is safe only when the client passes the same idempotency_key again, which the tool description asks it to do. start_campaign takes none: starting a stopped campaign dials every lead again.
- 05AI clients, in the console
Every connected client is listed with its scopes. Disconnect one and its key stops working immediately.
Which voice engine fits a phone call placed by Claude or another MCP client?
Use the classic engine on Wixzel Voice, at $0.0867 per connected minute. The quickstart prompt builds its first agent on the default engine, which is the cheapest reliable pairing for English. An agent can ask for sarvam for Indian languages or gemini-live for the lowest latency; the engines are listed by a tool, so it never has to guess a model name.
What does a phone call placed by Claude or another MCP client cost on Wixzel Voice?
Wixzel Voice engine time for 3-minute calls on the classic engine, at typical speech rates, billed per second of actual usage. Telephony is your own trunk at your carrier’s rate and is not included, and shorter calls cost proportionally less.
| Calls per month | Connected minutes | Engine cost per month |
|---|---|---|
| 100 | 300 | $26.01 |
| 500 | 1,500 | $130 |
| 2,000 | 6,000 | $520 |
Prepaid: add credit from $5 and the calls spend it. Estimate your own mix.
Which guides show how to build an AI agent that makes phone calls over MCP on Wixzel Voice?
Connect the Wixzel Voice MCP server to Claude Code or claude.ai, and Claude can build a voice agent, place a call over your own SIP trunk and read you the transcript.
Four requests to a ringing phone, what a call record returns, and what a call costs.
Twilio, Telnyx, Plivo, Vonage, Bandwidth, Exotel, Vobiz or any SIP provider: what to set at the carrier.
Frequently asked questions
- Can Claude make phone calls with Wixzel Voice?
- Yes. Add https://mcp.voice.wixzel.com/mcp as a connector in claude.ai or Claude Desktop, or run
claude mcp add --transport http wixzel-voice https://mcp.voice.wixzel.com/mcpin Claude Code, sign in, and Claude can create an agent, place a call over your SIP trunk, wait for it to finish and read the transcript. The tool that dials asks for confirmation first. - Which AI clients work with the MCP server?
- Any MCP client. Over HTTP with OAuth: Claude Code, claude.ai, Claude Desktop and other remote-capable clients. Over stdio with an API key: Claude Code, Claude Desktop, Cursor, Windsurf, VS Code and anything that launches servers from a JSON config. Clients that speak HTTP but cannot do OAuth send an API key as a bearer token. ChatGPT can connect custom MCP servers where your workspace allows it; it has not been tested with Wixzel Voice yet.
- Does the AI agent get my API key?
- Not with the hosted server. OAuth issues the client a key of its own, limited to the scopes you approved on the consent screen, and you can revoke it from the AI clients page in the console at any time. With the local server, the key you put in the environment decides what the agent can do; the console preselects the standard agent scopes when you create one.
- Can an AI agent spend my money without asking?
- The tools that spend money or ring a phone are annotated as such, and MCP clients ask before running them. billing:write, which starts a top-up, api_keys:write, which mints keys, and phone_numbers:purchase, which buys a number on your carrier account, are never offered by default and have to be granted deliberately. There is no admin scope. Everything the agent does is itemised in the usage log like any other API call.
- What does a call placed from Claude cost?
- The same as a call placed from code: the engine's per-minute price, billed per second from your prepaid balance, plus your carrier's rate for the trunk. There is no fee for using the MCP server.
- Does the MCP server work with a self-hosted server?
- Yes. Run the local form, wixzel-voice-mcp from npm, with an API key from your own install and its API host in the environment. A self-hosted server also serves its own MCP endpoint, so the hosted form works against it too.
- Do I still need a SIP trunk?
- For phone calls, yes. Wixzel Voice does not sell numbers or minutes; the quickstart prompt walks the agent through connecting a carrier trunk and registering a number before it builds anything that dials. If you connected Twilio, Telnyx, Plivo, Vobiz or Vonage in one step from the console, the agent can also search for a number and buy it on your own carrier account with search_available_numbers and purchase_phone_number. It shows you the number and the carrier's price first, and your carrier bills you. Sessions in a web or mobile app need no trunk.
What else do developers build on Wixzel Voice?
Build an agent that answers the phone, checks availability and books an appointment, over your own SIP trunk, with the booking written back through the API.
Upload leads, start a campaign, and have an agent call each one over your own SIP trunk and ask your qualifying questions. Every call is a record with its status and transcript, linked to the lead.
Answer a support number with an agent that reads from a knowledge base you upload, handles the common questions, and leaves a transcript of every call.
Run phone agents in Indian languages on models built for them, with the sarvam engine covering speech-to-text, the language model and text-to-speech end to end.
Put an agent in a browser page, a Flutter app or a kiosk with no SIP trunk and no phone number: your server mints a one-minute session, the app streams audio over a WebSocket, and the session is billed like a call.
Operator, prices, limits, refunds and data location, on one page.
