Developers

One contract.
Many surfaces.

Every Dials surface — REST, CLI, MCP, webhooks — reaches the same scoped paths. Build against the API once and your agent, your CLI, and your dashboard all behave the same way.

Same path, three ways

One call.
Three ways in.

The same scoped path runs under the dashboard, the CLI, and the MCP tool. Real filters, real validation, real usage event.

  • · Versioned REST
  • · Typed SDKs
  • · `dials` CLI
  • · MCP server
HTTP
GET /api/numbers/search
  ?areaCode=512
  &exchangeCode=555
  &localCallingArea=true
  &limit=25
CLI
dials numbers search \
  --area-code 512 \
  --exchange-code 555 \
  --local-calling-area \
  --limit 25
MCP
{
  "tool": "dials.numbers.search",
  "arguments": {
    "areaCode": "512",
    "exchangeCode": "555",
    "localCallingArea": true,
    "limit": 25
  }
}

Run the smoke flow.

Pull the SDK, run the smoke command, and watch the same audited path light up the console, the ledger, and the CLI.