Developers

One contract.
Many surfaces.

Every Dials surface — REST, CLI, MCP, webhooks — reaches the same actions. 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 call runs from the dashboard, the CLI, and the MCP tool. Real filters. Real validation. Real records.

  • · Versioned REST
  • · Typed SDKs
  • · `dials` CLI
  • · MCP server
HTTP
GET /api/numbers/search
  ?contains=0100
  &startsWith=512
  &repeatingDigit=5
  &repeatingDigitCount=3
  &region=TX
  &postalCode=78701
  &nearLatLong=30.2672,-97.7431
  &voice=true
  &limit=25
CLI
dials numbers search \
  --contains 0100 \
  --starts-with 512 \
  --repeating-digit 5 \
  --repeating-digit-count 3 \
  --state TX \
  --zip 78701 \
  --near-lat-long 30.2672,-97.7431 \
  --voice \
  --limit 25
MCP
{
  "tool": "dials.numbers.search",
  "arguments": {
    "contains": "0100",
    "startsWith": "512",
    "repeatingDigit": "5",
    "repeatingDigitCount": 3,
    "region": "TX",
    "postalCode": "78701",
    "nearLatLong": "30.2672,-97.7431",
    "voice": true,
    "limit": 25
  }
}

Run a test call.

Pull the SDK, run one command, and watch the same call light up the console, the records, and the CLI.