Dialfetch MCP
Dialfetch MCP — give your AI agent a phone ☎️
Connect Dialfetch to Claude, Cursor, VS Code, Windsurf, Cline, the Claude Agent SDK — or any Model Context Protocol client — and your agent can place real phone calls. It navigates IVR phone trees, waits on hold, talks to humans (including after a transfer), and hands back structured answers, a transcript, and a recording.
Give it a phone number and a plain-language goal. Goal in, result out.
"Call the pharmacy at +1 305-555-0148 and tell me what time it closes today." →
{ answers: { closing_time: { value: "9:00 PM", quote: "We close at nine tonight." } } }
🔌 Endpoint:
https://app.dialfetch.com/api/mcp(Streamable HTTP + SSE)🔑 Auth: API key (
Authorization: Bearer df_…) or one-click OAuth for custom connectors📚 Full docs: https://app.dialfetch.com/docs/mcp
🌐 Industry-agnostic: retail & pharmacy hours, flight/travel status, order & claim status, license & insurance verification, government & utility lines
Quick connect
Add to claude_desktop_config.json (Settings → Developer → Edit config):
{
"mcpServers": {
"dialfetch": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://app.dialfetch.com/api/mcp",
"--header", "Authorization: Bearer df_YOUR_KEY"]
}
}
}Settings → Connectors → Add custom connector → paste https://app.dialfetch.com/api/mcp and
finish the one-click OAuth sign-in. No API key to paste.
~/.cursor/mcp.json:
{
"mcpServers": {
"dialfetch": {
"url": "https://app.dialfetch.com/api/mcp",
"headers": { "Authorization": "Bearer df_YOUR_KEY" }
}
}
}.vscode/mcp.json:
{
"servers": {
"dialfetch": {
"type": "http",
"url": "https://app.dialfetch.com/api/mcp",
"headers": { "Authorization": "Bearer df_YOUR_KEY" }
}
}
}More configs (Windsurf, Cline, Agent SDK) are in configs/.
Tools
Tool | Inputs | Does |
|
| Start a goal-call; returns |
|
| Status, outcome, answers, notes, transcript, recording URL |
|
| Block (with progress) until the call is terminal |
|
| Cancel a queued / in-progress call |
|
| Recent calls, newest first |
|
| Short-lived presigned audio URL |
| — | Caller-ID numbers you own |
| — | Per-call / per-number pricing |
| — | Prepaid credit balance |
Resource: dialfetch://calls/{id} · Prompts: check_store_hours, verify_license, get_order_status
How calls work
Calls are asynchronous (typically 2–10 minutes; longer with holds or transfers):
place_call({ phone, goal, extract })→{ call_id, status: "queued" }Poll
get_call({ call_id })(or usewait_for_call) untilstatusiscompleted/failed/canceledRead
answers,transcript,recording_url
Recipes
Safety
Calls disclose they are an AI by default. The agent will not read out or collect sensitive personal data (SSNs, passwords, full card numbers). Goal-screening, credit holds, and rate limits apply to every call and can't be bypassed by a client.
Links
Product & sign-up: https://app.dialfetch.com
MCP docs: https://app.dialfetch.com/docs/mcp
REST API docs: https://app.dialfetch.com/docs
License
MIT — see LICENSE.