About dialfetch
dialfetch is a phone-calling MCP server that lets AI agents call numbers toward a plain-language goal, navigate IVRs or wait on hold, and return structured answers, transcripts, and recordings. It supports tasks such as checking hours, order status, or verification by phone.
Key features
- 01Place calls toward a stated goal
- 02Navigate IVRs and wait on hold
- 03Return structured answers and transcripts
- 04Retrieve recordings and manage call status
Use cases
- 01Call to check store hours
- 02Verify license or insurance details
- 03Check order or claim status
MCP support
dialfetch exposes call tools, a call resource, and prompts to MCP clients over Streamable HTTP and SSE. Clients can place, inspect, wait for, or cancel calls and retrieve structured results and recording links.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://app.dialfetch.com/api/mcpclaude mcp add --transport http com-dialfetch-dialfetch https://app.dialfetch.com/api/mcp{"mcpServers":{"com-dialfetch-dialfetch":{"type":"http","url":"https://app.dialfetch.com/api/mcp"}}}Open in Cursor{"servers":{"com-dialfetch-dialfetch":{"type":"http","url":"https://app.dialfetch.com/api/mcp"}}}Open in VS Code{"mcpServers":{"com-dialfetch-dialfetch":{"type":"http","url":"https://app.dialfetch.com/api/mcp"}}}{"mcpServers":{"com-dialfetch-dialfetch":{"serverUrl":"https://app.dialfetch.com/api/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
Details
From the project READMEDialfetch 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
Claude Desktop
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"]
}
}
}
Claude.ai (web) — custom connector
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
~/.cursor/mcp.json:
{
"mcpServers": {
"dialfetch": {
"url": "https://app.dialfetch.com/api/mcp",
"headers": { "Authorization": "Bearer df_YOUR_KEY" }
}
}
}
VS Code (Copilot agent mode)
.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):
place_call({ phone, goal, extract })→{ call_id, status: "queued" }- Poll
get_call({ call_id })(or usewait_for_call) untilstatusiscompleted/failed/canceled - 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.
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.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.