Use your favorite client.
Updated October 4, 2026
Every client that supports remote MCP uses the same endpoint: https://mcp.dialmcp.com/mcp. Add it, finish the OAuth sign-in, and verify your phone number. There is no API key. This page covers each client from setup to a working first call, plus what to do when a step fails. For file paths and the mcp.json vs settings.json split, see MCP server configuration examples.
What happens the first time
The flow is the same in every client. The client registers itself with DialMCP automatically (OAuth dynamic client registration), then opens a browser window:
- Sign in with your phone. The page names the client asking for access. Enter a US or Canadian number that can receive SMS. That number is your account, and calls go out from it.
- Enter the code. Type the SMS verification code. On a first sign-up, this step also verifies that you own the number, which is what lets it show as your caller ID.
- Welcome to dialmcp (first time only). Enter the first name the assistant should use on calls: “calling on behalf of …”.
- Authorize. The consent screen lists what the client can do: place phone calls as your number, and view call status, transcripts and recordings. Click Allow and return to the client.
If you later connect a second client with the same number, you sign in to the same account and skip the name step. Your call history follows you between clients.
Check the connection without calling anyone
Once the client says it is connected, ask your agent: “List my recent DialMCP calls.” That runs list_calls, which is read-only. It checks the connection without dialing anyone. An empty list on a new account is a pass. An authentication error means the sign-in did not complete. The four tools are described in the tool reference.
Claude Code
claude mcp add --transport http dialmcp https://mcp.dialmcp.com/mcp
# Add --scope user to enable it in every project- Sign in: run
/mcpinside Claude Code, pickdialmcp, and finish the browser steps. Recent versions also haveclaude mcp login dialmcpfrom the shell. - Confirm:
claude mcp listshows! Needs authenticationbefore sign-in and✔ Connectedafter. The/mcppanel shows the tool count next to the server. - Re-authenticate: use “Clear authentication” in the
/mcpmenu, orclaude mcp logout dialmcp, then sign in again. - Project
.mcp.json: include"type": "http". Without it, the URL entry is not loaded as a remote server.
Scopes, statuses and the full walkthrough: Claude Code MCP setup.
Claude.ai or Claude Desktop
Remote DialMCP is a custom connector, not a JSON entry. In current builds, open Customize → Connectors → + Add → Add custom connector. Older builds label it Settings → Connectors. Paste https://mcp.dialmcp.com/mcp and complete the browser sign-in. On Team and Enterprise, an Owner adds the connector and each member clicks Connect.
- Turn it on in a chat: the + button at the lower left of the chat box, then Connectors. Connected but switched off looks exactly like “the tools are missing”.
- Free plan: one custom connector. If you already use it for something else, DialMCP will not add.
- Claude Desktop’s JSON file is for local stdio servers. Pasting the URL there does not register a connector.
Click-by-click: how to add an MCP server to Claude.
ChatGPT
ChatGPT only connects to remote servers. There is no mcp.json. Turn on Developer mode, add https://mcp.dialmcp.com/mcp as a custom connector, and finish OAuth. Calls take minutes, so the tools are asynchronous: place_call returns at once and the model checks progress with get_call. If ChatGPT says it “can’t wait”, ask it to keep checking the call. Click-by-click, including the plan caveat for write tools: ChatGPT MCP connector.
Codex
Add this to ~/.codex/config.toml:
[mcp_servers.dialmcp]
url = "https://mcp.dialmcp.com/mcp"Or from the shell, then sign in:
codex mcp add dialmcp --url https://mcp.dialmcp.com/mcp
codex mcp login dialmcp- Confirm:
codex mcp listin the shell, or/mcpinside the Codex TUI. - Do not set
bearer_token_env_var. DialMCP uses OAuth. A static token is the wrong auth shape. - Timeouts: Codex’s default
tool_timeout_secis 60. DialMCP’s longest blocking call,get_callwithwait_seconds, is capped at 50 seconds, so the default fits. - Re-authenticate: run
codex mcp login dialmcpagain. Other subcommands are listed incodex mcp --help.
Cursor
Put this in ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):
{
"mcpServers": {
"dialmcp": {
"url": "https://mcp.dialmcp.com/mcp"
}
}
}- Sign in: when Cursor asks you to authenticate the server, complete the browser steps above.
- Confirm: enable the server under Customize in the sidebar and check that the four tools appear under Available Tools.
- Logs: open the Output panel and choose MCP Logs. Most failures here are a VS Code-style
serversblock pasted into Cursor’s file.
VS Code
In .vscode/mcp.json, or the user file from MCP: Open User Configuration, use the HTTP server shape:
{
"servers": {
"dialmcp": {
"type": "http",
"url": "https://mcp.dialmcp.com/mcp"
}
}
}- First start: VS Code asks you to trust the server, then opens the browser sign-in.
- Use it: in Copilot Chat with an agent, click the Configure Tools button. DialMCP’s tools are grouped under the server name, and they must be selected.
- Debug: run MCP: List Servers, select
dialmcp, then Show Output.
Gamut
Open Settings → Connectors → Add MCP server, paste the endpoint, choose HTTP / OAuth, and complete SMS verification.
Clients without remote MCP support
Use the stdio bridge. It needs Node.js 18+, still talks to the hosted server, and runs the same browser sign-in:
{
"mcpServers": {
"dialmcp": {
"command": "npx",
"args": ["-y", "dialmcp-connector"]
}
}
}Sign-in errors
These are the exact messages from DialMCP’s sign-in pages:
- “Enter a valid US or Canadian phone number.” The number is not a US/CA number. Accounts are US and Canada only.
- “Too many verification requests. Wait a minute and try again.” Code sends are rate-limited per phone number and per IP address. Wait, then resend once.
- “We couldn't send a code to that number. Try again.” The SMS provider refused the send. Check that the number receives texts.
- “That code didn't match. N attempts left.” Re-type the code from the most recent SMS.
- “Too many incorrect codes…” or “…this flow is locked. Restart from your client.” Start the connection again from the client, which sends a fresh code.
- “This sign-in link expired or was tampered with. Restart the connection from your client.” The sign-in page expired or was reused out of order. Start again from the client, not from browser history.
- “Unknown client” DialMCP doesn’t recognize the client’s registration. Remove the server from the client and add it again.
Clicking Deny on the consent screen returns access_denied to the client. That is expected. Reconnect when you want to allow it.
When a call is refused
Connected clients sometimes report a refused call as if setup were broken. It is not. place_call returns a machine-readable error code, and the agent should relay it:
invalid_number: the destination must be US/CA in E.164 form, for example+14155551234.outside_calling_hours: calls go out only between 8:00 and 21:00 in the destination’s local time.rate_limited: the limit is 3 calls per hour and 10 per day per user. Those rejections includereset_at. A short burst limit just asks you to wait a minute.destination_rate_limited: no more than 2 calls to the same number in 24 hours.concurrent_call_active: one call at a time. Wait for it to finish (get_call) or end it (end_call).suppressed_destination: that number has opted out of DialMCP calls, and the opt-out is permanent.blocked_destination,invalid_destination,excluded_stateorline_type_blocked: the number is outside policy. This covers emergency and premium-rate numbers, +1 numbers outside the US and Canada, excluded states or regions, and refused line types.service_paused: the operator has paused outbound calling. Try again later.objective_rejected: the task failed the safety screen. Rephrase a legitimate task, or do not retry.dial_failed: the carrier rejected the call. Check the number.
The full rules are on the Safety page.
FAQ
Do I need an API key?
No. DialMCP uses OAuth in the browser. Do not add headers, bearer tokens or environment variables. Extra auth fields can break the handshake.
Can I use DialMCP in more than one client?
Yes. Sign in with the same phone number in each client and they share one account and one call history. Rate limits are per user, so they are shared too.
What number does the person I call see?
Your own verified number. DialMCP does not use a random or spoofed caller ID, so the person can call you back directly.
Why did my client stop waiting for the call?
Calls usually take a few minutes, longer than most clients hold a single tool call. DialMCP is built for that: place_call returns a call_id immediately, and get_call returns the result whenever the agent asks. If the agent loses the ID, list_calls finds it.
These examples mirror the open-source connector examples. After setup, review the tool reference before asking an agent to place a call, see the hosted MCP endpoint details, or build your own MCP server if DialMCP is not the right fit.