built by the makers of Gamut
Client setup

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:

  1. 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.
  2. 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.
  3. Welcome to dialmcp (first time only). Enter the first name the assistant should use on calls: “calling on behalf of …”.
  4. 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

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.

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

Cursor

Put this in ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):

{
  "mcpServers": {
    "dialmcp": {
      "url": "https://mcp.dialmcp.com/mcp"
    }
  }
}

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

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:

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:

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.