built by the makers of Gamut
Protocol reference

MCP server commands and tool calls.

Updated September 13, 2026

Search results for "MCP server commands" mix three different things: JSON-RPC methods on the wire, the tool names a model can pick, and shell commands that launch a local server. This page is the first of those. The DialMCP-specific tool names and call lifecycle live on the tool reference.

You rarely type these methods. Claude, Cursor, Codex, VS Code, and other hosts send tools/list and tools/call for you. After you connect DialMCP, ask the agent to place a call and approve the tool invocation. This page is for operators who need the wire shape, or who are building a client.

Commands vs tools vs prompts vs resources

Tool names are not methods. You never POST method: "place_call". You POST method: "tools/call" with params.name set to place_call.

List, then call

Servers that support tools declare a tools capability, optionally with listChanged. Clients discover the catalog with tools/list:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list",
  "params": {}
}

The result is an array of tool definitions. Each name should be 1–128 characters, case-sensitive, and limited to letters, digits, underscore, hyphen, and dot. DialMCP's four names fit that rule.

To run a tool, the client sends tools/call:

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "place_call",
    "arguments": {
      "destination": "+1…",
      "objective": "Confirm Tuesday 3pm with the clinic"
    }
  }
}

The argument keys above are illustrative of what place_call needs in prose (a US or Canadian destination and a stated objective). The live inputSchema is what tools/list returns after you connect; do not hard-code a private schema from this page. Product behavior for each tool is on the tool reference.

On Streamable HTTP, a 2026-07-28 request is one POST to the MCP endpoint (for DialMCP, https://mcp.dialmcp.com/mcp) with JSON-RPC in the body. The spec also requires protocol metadata on the request (MCP-Protocol-Version, Mcp-Method, and for tools/call a Mcp-Name header matching params.name). Hosts that already speak remote MCP set those. You do not add them to client config snippets.

What comes back

A completed tool result includes a content array (usually type: "text"). It may also include structuredContent when the tool advertised an outputSchema. The 2026-07-28 schema adds resultType: "complete" on a finished result.

Two different error channels exist, and mixing them is the usual client bug:

A long-running tool may stream an SSE body on that same POST. That is still one tools/call, not a second method. DialMCP does not use that pattern for the phone call itself: place_call returns a call ID immediately, and the agent polls get_call. The call ID is an ordinary string in the tool result, then an argument on the next call. MCP has no protocol-level session handle for that; see "Stateful Tools" in the tools spec (checked September 13, 2026).

What this is not

DialMCP mapping

After OAuth and SMS verification, a connected client should see four tools. Typical agent loop:

  1. tools/callplace_call (destination + objective) → call ID.
  2. tools/callget_call until a terminal status.
  3. Read the structured resolution, transcript, and recording link from that result.
  4. tools/callend_call only if the user wants to hang up early.
  5. tools/calllist_calls to find an older ID.

Guardrails (disclosure, caller ID, hours, rate limits, blocked ranges) are enforced on the hosted server, not by extra JSON-RPC methods. Details: Safety and the tool reference. Connect first: install. Back to the docs hub.