
AgentPhone
Gives Claude a real phone line through the AgentPhone API. You get 26 tools covering the full lifecycle: buy numbers in specific area codes, send and receive SMS, place outbound calls with AI conversation built in, create agents with custom voices and system prompts, set up webhooks for inbound handling, and pull usage breakdowns. The agent model is clever: each one gets its own numbers and voice personality, so you can spin up separate lines for support, sales, or scheduling. Works over stdio for Cursor and Claude Desktop, or hit their hosted streamable HTTP endpoint if you're building a multi-user platform. Useful when you need your AI to actually interact with people over the phone network, not just simulate it.
- GitHub stars
- 125
- tools
- 26
- auth
- Secret needed
- transport
- STDIO, HTTP
- env var
- 1
- last updated
- Oct 21, 2026
Install
From registry metadata$ npx add-mcp https://mcp.agentphone.ai/mcp --name agentphone --header 'Authorization: Bearer ${API_TOKEN}'Run in your terminal. add-mcp asks which agents to add it to, then asks for each value it needs. Add -g to install it for every project.
Review the command, arguments and environment values before installing. MCP servers run with your local permissions.
Other ways
Claude Code
$ claude mcp add --transport http agentphone https://mcp.agentphone.ai/mcp --header 'Authorization: YOUR_AUTHORIZATION'Run in your terminal. Add --scope user to make it available in every project.
Tools
Verified live · 26 toolsVerified live against the running server on Jun 11, 2026.
account_overviewGet a complete snapshot of your AgentPhone account: agents, phone numbers, webhook status, and usage limits. Call this first to orient yourself before using other tools.
Get a complete snapshot of your AgentPhone account: agents, phone numbers, webhook status, and usage limits. Call this first to orient yourself before using other tools.
No parameters. Call it with no arguments.
list_numbersList all phone numbers in your account. Each number has an ID needed by other tools (get_messages, attach_number, list_calls).2 params
List all phone numbers in your account. Each number has an ID needed by other tools (get_messages, attach_number, list_calls).
limitnumberoffsetnumberbuy_numberPurchase a new phone number. Use area_code to request a specific region (e.g. '415' for San Francisco). Tip: pass agent_id to attach it immediately, or use attach_number later.3 params
Purchase a new phone number. Use area_code to request a specific region (e.g. '415' for San Francisco). Tip: pass agent_id to attach it immediately, or use attach_number later.
agent_idstringarea_codestringcountrystringsend_messageSend an SMS or iMessage from one of your agent's phone numbers. USE THIS TOOL WHEN the user wants to text someone. The agent must have at least one phone number attached. If the agent has multiple numbers, use number_id to specify which one to send from.5 params
Send an SMS or iMessage from one of your agent's phone numbers. USE THIS TOOL WHEN the user wants to text someone. The agent must have at least one phone number attached. If the agent has multiple numbers, use number_id to specify which one to send from.
agent_id*stringbody*stringmedia_urlstringnumber_idstringto_number*stringget_messagesGet SMS messages for a specific phone number. Use list_numbers to find the number ID. For threaded conversations, use list_conversations + get_conversation instead.2 params
Get SMS messages for a specific phone number. Use list_numbers to find the number ID. For threaded conversations, use list_conversations + get_conversation instead.
limitnumbernumber_id*stringlist_callsList recent calls. Scope by agent_id or number_id, or use status/direction/search to filter globally. When agent_id or number_id is passed, status/direction/search filters are not applied. Returns call IDs — use get_call with an ID to fetch the full transcript.7 params
List recent calls. Scope by agent_id or number_id, or use status/direction/search to filter globally. When agent_id or number_id is passed, status/direction/search filters are not applied. Returns call IDs — use get_call with an ID to fetch the full transcript.
agent_idstringdirectionstringinbound · outboundlimitnumbernumber_idstringoffsetnumbersearchstringstatusstringget_callGet details and transcript for a specific call. Use list_calls to find call IDs. Pass wait=true to block until an in-progress call finishes before returning.3 params
Get details and transcript for a specific call. Use list_calls to find call IDs. Pass wait=true to block until an in-progress call finishes before returning.
call_id*stringtimeoutnumberwaitbooleanmake_callInitiate an outbound phone call. USE THIS TOOL WHEN the user wants to place a webhook-driven call where your backend handles the conversation logic. DO NOT USE when the user wants an autonomous AI conversation — use make_conversation_call instead. The agent must have a phone n...5 params
Initiate an outbound phone call. USE THIS TOOL WHEN the user wants to place a webhook-driven call where your backend handles the conversation logic. DO NOT USE when the user wants an autonomous AI conversation — use make_conversation_call instead. The agent must have a phone n...
agent_id*stringfrom_number_idstringinitial_greetingstringto_number*stringvoicestringmake_conversation_callPlace a phone call where the AI has an autonomous conversation about a given topic. USE THIS TOOL WHEN the user wants an AI agent to call someone and have a conversation — scheduling, surveys, follow-ups, etc. No webhook setup needed. DO NOT USE when the user wants a webhook-d...8 params
Place a phone call where the AI has an autonomous conversation about a given topic. USE THIS TOOL WHEN the user wants an AI agent to call someone and have a conversation — scheduling, surveys, follow-ups, etc. No webhook setup needed. DO NOT USE when the user wants a webhook-d...
agent_id*stringfrom_number_idstringinitial_greetingstringmax_wait_secondsnumberto_number*stringtopic*stringvoicestringwaitbooleanlist_agentsList all agents with their phone numbers and voice configuration. An agent is required before you can make calls — it owns phone numbers and handles voice/SMS.1 params
List all agents with their phone numbers and voice configuration. An agent is required before you can make calls — it owns phone numbers and handles voice/SMS.
limitnumbercreate_agentCreate a new agent. An agent owns phone numbers and handles calls/SMS. After creating, use buy_number or attach_number to give it a phone number. Set voice_mode to 'hosted' with a system_prompt for autonomous AI voice calls, or 'webhook' (default) to forward call transcripts t...9 params
Create a new agent. An agent owns phone numbers and handles calls/SMS. After creating, use buy_number or attach_number to give it a phone number. Set voice_mode to 'hosted' with a system_prompt for autonomous AI voice calls, or 'webhook' (default) to forward call transcripts t...
begin_messagestringdescriptionstringmodel_tierstringturbo · balanced · maxname*stringsystem_promptstringtransfer_numberstringvoicestringvoice_modestringwebhook · hostedvoicemail_messagestringupdate_agentUpdate an agent's configuration — name, description, voice settings, system prompt, greeting, call transfer, or voicemail. Only provided fields are updated. Use list_voices to see available voice IDs. Switching voice_mode to 'hosted' requires a system_prompt.10 params
Update an agent's configuration — name, description, voice settings, system prompt, greeting, call transfer, or voicemail. Only provided fields are updated. Use list_voices to see available voice IDs. Switching voice_mode to 'hosted' requires a system_prompt.
agent_id*stringbegin_messagestringdescriptionstringmodel_tierstringturbo · balanced · maxnamestringsystem_promptstringtransfer_numberstringvoicestringvoice_modestringwebhook · hostedvoicemail_messagestringdelete_agentDelete an agent permanently. Phone numbers attached to it will be kept but unassigned. DO NOT USE without confirming with the user — this cannot be undone.1 params
Delete an agent permanently. Phone numbers attached to it will be kept but unassigned. DO NOT USE without confirming with the user — this cannot be undone.
agent_id*stringget_agentGet details for a specific agent including its phone numbers, voice configuration, and system prompt.1 params
Get details for a specific agent including its phone numbers, voice configuration, and system prompt.
agent_id*stringattach_numberAttach a phone number to an agent so the agent handles calls/SMS on that number. Use list_numbers to find unassigned number IDs and list_agents for agent IDs.2 params
Attach a phone number to an agent so the agent handles calls/SMS on that number. Use list_numbers to find unassigned number IDs and list_agents for agent IDs.
agent_id*stringnumber_id*stringdetach_numberDetach a phone number from an agent. The number is kept in your account but becomes unassigned. Use list_agents or get_agent to see which numbers are attached.2 params
Detach a phone number from an agent. The number is kept in your account but becomes unassigned. Use list_agents or get_agent to see which numbers are attached.
agent_id*stringnumber_id*stringlist_voicesList available voices for agents. Use the voice_id value when calling create_agent or update_agent.
List available voices for agents. Use the voice_id value when calling create_agent or update_agent.
No parameters. Call it with no arguments.
list_conversationsList SMS conversations. Optionally filter by agent_id to see conversations for a specific agent. Each conversation is a thread between your number and an external contact. Use get_conversation with the ID to read messages.3 params
List SMS conversations. Optionally filter by agent_id to see conversations for a specific agent. Each conversation is a thread between your number and an external contact. Use get_conversation with the ID to read messages.
agent_idstringlimitnumberoffsetnumberget_conversationGet a specific SMS conversation with message history. Use list_conversations to find IDs.2 params
Get a specific SMS conversation with message history. Use list_conversations to find IDs.
conversation_id*stringmessage_limitnumberupdate_conversationSet metadata on a conversation. Use this to store custom state, tags, or context that persists between messages. Pass null to clear metadata.2 params
Set metadata on a conversation. Use this to store custom state, tags, or context that persists between messages. Pass null to clear metadata.
conversation_id*stringmetadata*valueget_usageGet account usage statistics. By default returns a summary with plan limits, quotas, and message/call volume. Use breakdown='daily' or 'monthly' for time-series data.3 params
Get account usage statistics. By default returns a summary with plan limits, quotas, and message/call volume. Use breakdown='daily' or 'monthly' for time-series data.
breakdownstringsummary · daily · monthlydefault: summarydaysnumbermonthsnumberget_webhookGet the webhook configuration. Pass agent_id to get an agent-specific webhook, or omit for the project-level default.1 params
Get the webhook configuration. Pass agent_id to get an agent-specific webhook, or omit for the project-level default.
agent_idstringset_webhookSet a webhook URL to receive inbound messages and call events. Pass agent_id to set a webhook for a specific agent (overrides project default). Omit agent_id to set the project-level webhook for all agents. The webhook secret is returned — use it to verify signatures.4 params
Set a webhook URL to receive inbound messages and call events. Pass agent_id to set a webhook for a specific agent (overrides project default). Omit agent_id to set the project-level webhook for all agents. The webhook secret is returned — use it to verify signatures.
agent_idstringcontext_limitnumbertimeoutnumberurl*stringdelete_webhookRemove a webhook. Pass agent_id to remove an agent's webhook (falls back to project default). Omit agent_id to remove the project-level webhook. DO NOT USE without confirming with the user.1 params
Remove a webhook. Pass agent_id to remove an agent's webhook (falls back to project default). Omit agent_id to remove the project-level webhook. DO NOT USE without confirming with the user.
agent_idstringtest_webhookSend a test event to verify a webhook is working. Returns the HTTP status code and response time. Pass agent_id to test that agent's webhook. Omit to test the project-level webhook.1 params
Send a test event to verify a webhook is working. Returns the HTTP status code and response time. Pass agent_id to test that agent's webhook. Omit to test the project-level webhook.
agent_idstringlist_webhook_deliveriesView recent webhook delivery history. Shows which events were delivered, HTTP status codes, and timing. Pass agent_id to see deliveries for that agent's webhook. Omit for project-level.3 params
View recent webhook delivery history. Shows which events were delivered, HTTP status codes, and timing. Pass agent_id to see deliveries for that agent's webhook. Omit for project-level.
agent_idstringhoursnumberlimitnumberSponsors
Configuration
AGENTPHONE_API_KEY*secretYour AgentPhone API key. Get one at https://agentphone.ai
Readme
AgentPhone MCP Server
Give AI agents real phone numbers, SMS, and voice calls via the Model Context Protocol.
AgentPhone lets your AI agent buy phone numbers, send/receive SMS, and place voice calls — all through natural language in Cursor, Claude Desktop, or any MCP-compatible client.
Agents are the core concept — each agent gets its own phone numbers, voice personality, system prompt, and webhook. Think of an agent as a virtual team member with its own phone line. You can create agents for different purposes (support, sales, scheduling) and configure how they sound and behave on calls.
Quick Start
1. Get your API key
Sign up at agentphone.ai and create an API key from Settings.
2. Connect via MCP
Option A: Remote server (recommended)
Point your MCP client at the hosted endpoint — no install needed:
{
"mcpServers": {
"agentphone": {
"type": "streamable-http",
"url": "https://mcp.agentphone.ai/mcp",
"headers": {
"Authorization": "Bearer your_api_key_here"
}
}
}
}
Details
- Repository
- github.com/agentphone-ai/agentphone-mcp
- Package
agentphone-mcp- Transport
- STDIO, HTTP
- Auth
- Required
- Registry
- MCP registry, active
- Tools verified
- Jun 11, 2026