MCP server

A native tool
for agents.

The Dials MCP server is a real protocol surface. An agent calls a tool. The tool runs under a verified identity. The platform writes a signed record. The history shows the same row your human ops team sees.

At a glance

What MCP gives an agent.

Discovery
Self-describing
The server enumerates every tool, schema, and required permission.
Permissions
Per-tool
An agent can hold read without holding dial.
Records
One history
Every MCP tool call signs a record under the agent's identity.
Transport
stdio · WS
Local stdio for desktop agents, secure WebSocket for cloud agents.

Call a tool

Same call.
Same record.

The MCP tool name maps to the same scoped API action the dashboard uses. The arguments map one-to-one to typed request fields. The response lands in the same operator history.

  • dials.numbers.search
  • dials.calls.outbound
  • dials.voice_profiles.create
  • dials.messages.send
MCP request
{
  "jsonrpc": "2.0",
  "id": 7,
  "method": "tools/call",
  "params": {
    "name": "dials.messages.send",
    "arguments": {
      "fromNumberId": "pn_123",
      "toE164": "+15125550100",
      "channel": "sms",
      "body": "Reply STOP to opt out.",
      "idempotencyKey": "msg_001",
      "registrationApproved": true,
      "consentApproved": true,
      "optOutPolicyApproved": true
    }
  }
}
MCP response
{
  "jsonrpc": "2.0",
  "id": 7,
  "result": {
    "message": { "id": "msg_queued", "status": "queued" },
    "next": "message_queued_for_adapter"
  }
}

Configure

One config line.

Add the Dials MCP server to any MCP-aware client. Claude Desktop, Cursor, IDE plugins, autonomous workflow runners — they all see the same permission-checked verbs.

  • stdio for desktop
  • WS for cloud
  • Per-tenant audience
  • Per-permission tool sets
claude_desktop_config.json
{
  "mcpServers": {
    "dials": {
      "command": "npx",
      "args":    ["@dials/mcp"],
      "env":     { "DIALS_SCOPE": "dials.read dials.dial" }
    }
  }
}

Wire up an agent.

Drop the MCP block into your client config and start with read-only permissions.