Better Call Claude
Enables the agent to place outbound phone calls through a Twilio account, deliver spoken messages, ask a single spoken question using speech recognition, and return the transcribed reply.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Better Call ClaudeCall me and ask whether I should approve the production deploy now."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Better Call Claude
Let Claude—or any MCP-compatible AI agent—call your phone, ask a question, and hear your spoken reply.
Better Call Claude adds two focused MCP tools to your AI agent. call_me delivers a
short spoken update, while call_and_ask_user asks one question and returns your
transcribed response to the agent. Calls run through your own Twilio account.
Features
One-command installation and guided configuration
Automatic Claude Code and Codex MCP registration and skill installation
Spoken replies with no server, domain, or Cloudflare account to configure
Compatible with other local stdio MCP clients
No hosted Better Call Claude service or background daemon
Credentials remain on your computer
Fixed recipient number, message limits, cooldowns, and hourly rate limits
Wheel and source distribution published on PyPI
Related MCP server: AgentPhone MCP Server
Quick start
uvx better-call-claude setupThe guided setup saves your Twilio credentials locally, registers both calling tools with every detected supported agent, and installs a small skill that teaches the agent when a phone call is appropriate. Restart Claude Code or Codex, then try:
Call me and say the setup worked.
Or ask for a response:
Call me and ask whether you should deploy now. Continue based on my answer.
How spoken replies work
For a one-way notification, Twilio receives inline TwiML and reads the agent's message
aloud. For a question, Better Call Claude starts a local callback server and a temporary
Cloudflare Quick Tunnel.
Twilio asks the question with <Gather input="speech">, then posts the transcript back
through that encrypted tunnel. The callback server verifies Twilio's signature before
accepting the response and shuts down the tunnel after the call.
Setup reuses cloudflared when it is already installed. Otherwise, it downloads the
official binary from Cloudflare's latest GitHub release, verifies the release SHA-256
digest, and stores it inside Better Call Claude's private configuration directory. No
Cloudflare login is required.
This makes it useful for requests like:
“Run the migration and call me when it finishes.”
“Call me if the production health check fails.”
“In 20 minutes, check the build and call me with the result.”
“Call me, ask whether I approve the deployment, and continue from my answer.”
The scheduling or monitoring still belongs to your agent. Better Call Claude handles the final phone call.
How it works
Claude or another agent
│
│ call_and_ask_user({ question }) over local MCP stdio
▼
Better Call Claude ───► temporary Cloudflare tunnel
│ ▲
│ authenticated call │ signed speech-result webhook
▼ │
Twilio ─────────────────► your configured phone
│ │
└──── transcribed reply ◄───┘The AI can supply only the spoken message. Your Twilio credentials and destination number are loaded by the local process and are never included in the model's tool arguments.
What you need
Python 3.10 or newer
uv(recommended) orpipxClaude Code, or another client that supports local stdio MCP servers
Twilio trial accounts can generally call only verified recipients. Calls use your Twilio account and may incur normal voice charges.
During setup you will be asked for your Twilio Account SID, Auth Token, Twilio number, and personal number. Phone numbers must use E.164 format, such as +14155552671. The Auth Token prompt is hidden.
pipx alternative
pipx run better-call-claude setupCommands
# Guided configuration and agent installation
better-call-claude setup
# Validate configuration without placing a call
better-call-claude doctor
# Place a real test call
better-call-claude call "The deployment finished successfully."
# Ask one question and print the transcribed reply
better-call-claude ask "Should I deploy now?"
# Start the stdio MCP server (normally launched by your agent)
better-call-claude mcpFor non-interactive setup:
TWILIO_ACCOUNT_SID=AC... \
TWILIO_AUTH_TOKEN=... \
TWILIO_FROM_NUMBER=+14155550100 \
BETTER_CALL_CLAUDE_NUMBER=+14155550101 \
uvx better-call-claude setup --agent claudeOther MCP clients
uvx better-call-claude setup --agent genericThe command prints a stdio MCP configuration for your client. The server exposes two tools:
call_me(message: str)
call_and_ask_user(question: str)The recipient is deliberately absent from the tool input. It is fixed during setup, so an agent cannot use your Twilio account to dial arbitrary numbers.
Select an agent explicitly
uvx better-call-claude setup --agent claude
uvx better-call-claude setup --agent codex
uvx better-call-claude setup --agent allFor Codex, run codex mcp get better-call-claude to verify the connection, then restart Codex. The Codex CLI, IDE extension, and ChatGPT desktop app share MCP configuration on the same Codex host.
Configuration and safety
Configuration is stored at ~/.config/better-call-claude/config.json with owner-only permissions. Set BETTER_CALL_CLAUDE_CONFIG to use a different path. Environment variables override saved values:
Variable | Purpose |
| Twilio Account SID |
| Twilio Auth Token |
| Voice-capable Twilio number |
| Fixed recipient |
| Twilio |
| Voice language; default |
| Spoken introduction |
Built-in guardrails:
One fixed recipient, hidden from the model except for a masked hint
Messages capped at 600 characters
Three calls per hour by default
A 60-second cooldown between calls
Skill instructions require explicit or previously granted authorization
No automatic retry after a failed or unanswered call
A new random callback path and temporary tunnel for every question
Twilio signature validation on every transcript and status callback
The Auth Token is a valuable secret. Do not commit the config file, paste it into a prompt, or share it in logs. Spoken answers are processed by Twilio speech recognition and pass through Cloudflare's network to the local callback server. Better Call Claude does not retain transcripts after returning them to the agent.
Development
uv sync
uv run pytest
uv run ruff check .
uv build --no-sourcesTo point Claude Code at a local checkout:
claude mcp add --scope user --transport stdio better-call-claude-dev -- \
uv --directory "$PWD" run better-call-claude mcpThe integration follows Claude Code's documented local stdio MCP configuration. Twilio calls use the documented Call resource with inline TwiML.
Publishing to PyPI
uv build --no-sources
uv publish --dry-run
UV_PUBLISH_TOKEN=pypi-your-token uv publishCreate an API token in your PyPI account settings and keep it out of the repository and shell history. Test the exact wheel first with uvx --from dist/better_call_claude-0.3.0-py3-none-any.whl better-call-claude --help.
Conversation scope
call_and_ask_user collects one spoken answer per call. It is intentionally bounded,
rather than an open-ended realtime voice conversation. A later version can add multiple
back-and-forth turns with Twilio ConversationRelay or bidirectional Media Streams.
License
MIT
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Give AI agents a phone: outbound AI calls that return a summary, transcript, and extracted fields.
Give your AI agent a phone. Place outbound calls to US businesses to ask, book, or confirm.
Give AI agents a phone layer for consent-based calls, transcripts, summaries, and outcomes.
- DialMCPOAuthcom.dialmcp
Let AI agents place real phone calls from your verified number, with transcripts and recordings.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to make real-world phone calls with AI voice technology and provides tools to track call status, transcripts, and summaries. It supports automated communication with both live numbers and simulated businesses for testing and demonstration purposes.-
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to manage phone numbers, send/receive SMS, and place voice calls through natural language, connecting to the phone network via the AgentPhone API.7,395121MIT
- FlicenseNot gradedqualityDmaintenanceEnables Poke to place real outbound phone calls using ElevenLabs Conversational AI and Twilio, with tools to manage calls and receive summaries.-
- AlicenseBqualityBmaintenanceEnables MCP-compatible agents to make safe, consented phone calls using Twilio and Deepgram.4Apache 2.0