Skip to content
MCP ThesaurusMCP Thesaurus

dialfetch

CommunityGood72/100Claim

streamable-httpMITupdated 1mo ago

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.

SourceWebsite

What can you do with dialfetch?

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
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

How calls work

Calls are asynchronous (typically 2โ€“10 minutes; longer with holds or transfers):

  1. place_call({ phone, goal, extract }) โ†’ { call_id, status: "queued" }
  2. Poll get_call({ call_id }) (or use wait_for_call) until status is completed / failed / canceled
  3. Read 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.

License

MIT โ€” see LICENSE.