your AI agent makes phone calls for you
homeexamplesinstall mcpblogsign up / sign inrules

blog > twilio-mcp-phone-calls

Twilio MCP for phone calls: what works and what you still need to build

We connected to Twilio's public MCP, searched for an outbound call, and retrieved its actual API schema. Here is the difference between documentation tools, an operational MCP, and a voice agent that can finish a conversation.

Nick Khami · · 7 min read
[ 💬 0 ]
Twilio documentation MCP helps your agent build a voice application, while a calling MCP runs the conversation and returns the result

Twilio's public documentation MCP helps Claude Code and Codex build calling applications. It does not place calls itself. An operational Twilio MCP can expose authenticated API actions, but creating a call is still different from giving your coding agent a caller that listens, answers questions, and brings back a usable result.

On October 4, 2026, we connected to https://mcp.twilio.com/docs without a Twilio account or credentials. We discovered its tools, searched for outbound calling, and retrieved the call creation schema. This is an actual MCP test. We did not place a Twilio call or run a conversational Twilio application.

We make call4me, a hosted calling MCP. If you are deciding whether to build with Twilio or connect a calling service to the agent you already use, the useful question is which parts you want to own.

Which Twilio MCP do you mean?

Connection What it gives your agent What it needs to make a conversational call
Twilio's public documentation MCP API and documentation search, followed by schema retrieval A separate authenticated execution path and voice application
Twilio Labs alpha MCP or an operational community implementation The API tools that implementation exposes, using your Twilio credentials Call instructions, a conversational runtime, and a result workflow
Your own calling MCP built on Twilio Whatever task and result tools you implement Your hosted voice application and Twilio account
A hosted calling MCP such as call4me A calling task, call status, questions, and results A service account and calling credits

Twilio's public MCP reference documents the hosted service as read only and lists execution tools as a planned addition. That description applies to this endpoint, not to everything called a Twilio MCP.

The Twilio Labs MCP repository is a separate alpha project. Its package README calls it a proof of concept, requires Twilio API credentials, and supports filtering the exposed API services and tags. Community servers are another implementation choice. Inspect the actual tools, credential handling, and maintained source before treating any of them as interchangeable.

get new posts by email · 1 reader subscribed

Add the public Twilio docs MCP to Claude Code or Codex

For Claude Code, Twilio documents this command:

claude mcp add --transport http twilio-docs https://mcp.twilio.com/docs

For Codex:

codex mcp add twilio-docs --url https://mcp.twilio.com/docs

These are the commands in Twilio's setup guide. The server does not need an OAuth login or a Twilio API key. Our direct client connection also succeeded without either.

In Codex, codex mcp list checks configuration and /mcp shows the servers available to the active session. Open a fresh session if it predates the configuration change. See OpenAI's MCP documentation for client configuration.

Use a request that verifies tool execution:

Use the Twilio documentation MCP to search for creating an outbound phone call. Retrieve the API operation using the exact ID returned by search. Show the method, endpoint, required fields, and how the call receives its instructions. Do not execute the API, purchase a number, or place a call.

A model explaining Twilio from memory is different from a successful tool invocation. Check that it actually called twilio__search and twilio__retrieve.

Our actual Twilio MCP test

We used the installed TypeScript MCP client, version 2.1.0, over Streamable HTTP. This test ran directly through the protocol client, rather than through a Claude Code or Codex model session. It establishes the endpoint's tools and responses, not every client's connection behavior.

Step Actual result
Connect without authentication Succeeded
List available tools twilio__search and twilio__retrieve, both annotated as read only
Search the core API for an outbound phone call Returned CreateCall as the first result
Retrieve that returned operation ID Returned the request body fields and response fields
Search documentation for an outbound Conversation Relay application Returned the Conversation Relay guide among the results
Retrieve the documentation result's returned ID Returned an error expecting an API operation ID

The outbound search arguments were:

{
  "query": "Create an outbound phone call",
  "source": "api",
  "product": "api_v2010",
  "limit": 3
}

The first result gave us this operation:

ID: op::twilio_api_v2010::CreateCall
Method: POST
Path: /2010-04-01/Accounts/{AccountSid}/Calls.json

We passed that returned ID to twilio__retrieve. The response required AccountSid in the path and To and From in the request body. It also exposed fields including Url, Twiml, StatusCallback, TimeLimit, Record, SendDigits, and MachineDetection.

This was schema retrieval, not a submitted call. The result did not include a new call SID, a connected destination, or an audio recording. The public endpoint had no tool for creating the call.

The documentation lookup revealed a useful limitation. Search returned a Conversation Relay article with a uri: ID. Passing that exact ID to retrieve returned unknown id prefix and said it expected op::. API retrieval succeeded in the same batch. For this attempt, we used the documentation text and source URL returned by search, then opened the official guide directly. We did not invent an operation ID or treat the documentation retrieval as successful.

Creating a call is one layer of the application

Twilio's outbound calling guide explains how an authenticated request to the Calls resource starts a call and supplies its instructions. A simple TwiML greeting can speak to a recipient. A conversational assistant also needs a path for hearing a reply, deciding what to say, handling interruptions, and ending with a result your coding agent can use.

Two documented Twilio paths are relevant:

Voice path Twilio's role Your application's role
Conversation Relay Handles speech recognition and speech generation, exchanging text and events over WebSocket Generates responses, keeps the task state, invokes your business tools, and decides when to finish
Bidirectional Media Streams Exchanges call audio with your WebSocket application Connects the audio to your chosen voice runtime and handles the conversation and task logic

These are documented architecture choices. We did not deploy either in this test, so we cannot compare their call quality, setup time, or reliability against call4me.

For an agent asking a restaurant about private dining, a custom implementation needs more than a CreateCall wrapper. We would build these behaviors into the task interface:

  1. Accept the destination, research questions, facts the caller may share, and limits on commitments.
  2. Start one call and return a stable identifier the coding agent can follow.
  3. Expose progress separately from the transcript and answered questions.
  4. Pause for missing information or terminate when the caller lacks authority to proceed.
  5. Return the outcome, unresolved questions, and available recording to the original research task.

These are our implementation criteria. They are not a claim that the public Twilio docs MCP supplies those behaviors.

Plan keypad handling and voicemail together

One retrieved schema detail matters if the business has a phone menu. SendDigits sends a preset sequence after connection. The schema states that specifying it causes MachineDetection to be ignored. That is different from a caller listening to an unfamiliar menu and choosing the appropriate option during the conversation.

The media path matters too. Twilio's Media Streams reference says bidirectional streams support DTMF events from Twilio to the media server, but do not support sending outbound DTMF from that server to Twilio. Do not assume your audio WebSocket can send a native keypad action just because it can play speech.

Conversation Relay provides a separate outbound sendDigits message in its WebSocket protocol. After your application decides which key to press, the documented message shape can express that choice:

{
  "type": "sendDigits",
  "digits": "2"
}

This is an illustrative message, not one we submitted to a live Twilio call. The distinction between the two media paths matters when designing menu navigation. Check the chosen path's controls and test the destination reached. A spoken promise to press a button is insufficient evidence.

Our calling MCP comparison includes real Vapi Agent Phone and Bland calls that reached a restaurant's private dining voicemail. It also shows why reaching the branch and ending without leaving a message are separate checks. Those recordings are evidence from those services, not a Twilio benchmark.

When connecting a calling MCP makes more sense

Building on Twilio is useful when the voice application itself is part of your product, you need account and infrastructure control, or you want to design a specific conversation runtime. The docs MCP can help your coding agent find the current API fields while it builds that application.

If your immediate goal is to give the Claude Code or Codex session you already use a way to call a business, a hosted calling MCP provides that workflow directly. You can still use the Twilio docs MCP alongside it for development research.

For call4me, start with our Claude Code setup and actual call or Codex setup and research example. The Claude Code example includes a Foreign Cinema recording and the exact tool sequence. It reached private dining voicemail, not a person, and did not obtain a quote.

The practical test is the same for a custom Twilio application or a hosted service: can the agent carry out the allowed task, expose what happened, and report what remains unknown? A configured server proves setup. An API schema proves what a request accepts. The completed conversation and its evidence establish what the caller actually accomplished.

twilio · mcp · claude code · codex · ai phone assistant

Nick Khami @skeptrunebuilds call4me, the phone for your AI agent. software engineer; previously founded Trieve. email me@call4.me.

get new posts by email · 1 reader subscribed
no tracking, no spam; one email per post, unsubscribe in one click. or use the atom feed. posts marked paid need a supporter subscription (monthly, cancel any time).

0 comments

read next

Instinct Concierge and an existing coding agent with a phone calling MCP tool
Instinct AI phone calls: Concierge or a phone for your existing agent?
Instinct offers phone calls through Concierge. If you already work in Claude Code or Codex, you can also add a calling tool to that session. Here is the difference, how Call4me signup works, and what we have actually tested.
OCT 4 · Nick Khami
A phone menu routes through keypad input to either a person or voicemail, with separate checks for routing and task completion
Can AI phone agents navigate phone trees? Vapi, Bland and Call4me evidence
A phone menu, a successful keypad press, and a completed task are different results. Here is how to configure, diagnose, and test each step.
OCT 4 · Nick Khami
Claude Code or Codex saves a call schedule, call4me waits until the chosen time, and a later agent session retrieves the result
Schedule phone calls from Claude Code or Codex for tomorrow
Give your agent the full brief now, let call4me keep the schedule, and retrieve the result in a later session. Here are the exact tools, time formats, and live pending and canceled records we checked.
OCT 4 · Nick Khami

newer: Can AI phone agents navigate phone trees? Vapi, Bland and Call4me evidence
older: Instinct AI phone calls: Concierge or a phone for your existing agent?
all posts · archive · atom feed