Give your AI agent a phone: place calls, navigate IVRs, wait on hold, get structured answers.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
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." } } }
https://app.dialfetch.com/api/mcp (Streamable HTTP + SSE)Authorization: Bearer df_β¦) or one-click OAuth for custom connectorsAdd to claude_desktop_config.json (Settings β Developer β Edit config):
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:
.vscode/mcp.json:
More configs (Windsurf, Cline, Agent SDK) are in configs/.
| Tool | Inputs | Does |
|---|---|---|
place_call | phone, goal, extract?, context?, disclose_ai?, from_number_id?, max_duration_minutes?, webhook_url? | Start a goal-call; returns { call_id, status } (async) |
get_call | call_id | Status, outcome, answers, notes, transcript, recording URL |
wait_for_call | call_id, timeout_seconds? | Block (with progress) until the call is terminal |
cancel_call | call_id | Cancel a queued / in-progress call |
list_calls | status?, limit?, cursor? | Recent calls, newest first |
get_call_recording | call_id | Short-lived presigned audio URL |
list_phone_numbers | β | Caller-ID numbers you own |
get_pricing | β | Per-call / per-number pricing |
get_credit_balance | β | Prepaid credit balance |
Resource: dialfetch://calls/{id} Β· Prompts: check_store_hours, verify_license, get_order_status
Calls are asynchronous (typically 2β10 minutes; longer with holds or transfers):
place_call({ phone, goal, extract }) β { call_id, status: "queued" }get_call({ call_id }) (or use wait_for_call) until status is completed / failed / canceledanswers, transcript, recording_urlCalls 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.
MIT β see LICENSE.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/dialfetch)<a href="https://allmcps.com/mcp/dialfetch"><img src="https://allmcps.com/api/badge/dialfetch?style=directory" alt="Dialfetch on AllMCPs" /></a>