Dialtone

Telephony for agents

Phone numbers
for AI agents.

Dialtone is the telephony API for AI agents. Give agents their own phone numbers, let them place and receive calls, attach tools, and keep every session observable from your product.

Agent-owned lines

Give each agent its own phone number, caller identity, and routing surface through one API.

Live call execution

Turn instructions into real phone calls with voice, tools, and session state managed for you.

API-native control

Create calls, attach tools, poll status, and fetch results from your own agent runtime.

Every interface your agent speaks

API

REST endpoints

MCP

Tool protocol

SDK

Native clients

CLI

Terminal access

Set up Dialtone (http://localhost:3000/setup.md) and then call Acme Dental, confirm tomorrow's appointment, and write the result back to the CRM.

Live Call

ops-agent-checkin-01

in progress

Target

+1 (415) 555-0182

Instruction

Call the supplier, confirm Monday delivery, ask whether the revised quote was approved, and log the answer.

queued

Voice agent prepared

connected

Answer detected on line

tool action

CRM and calendar available

Platform

The phone layer your agents were missing.

Your agents can search, write, and browse. Now they can call. Real numbers, live conversations, and structured outcomes through one API.

Capability

dial()

Describe the goal, pass the number. Dialtone puts your agent on a live call with a real person and returns a structured transcript and outcome when it ends.

PHONE LAYER

Numbers for agents

Provision and manage phone numbers your agents can use for outbound calls, inbound routes, and account signups.

CALL EXECUTION

Calls with context

Pass the goal, the target number, and the right tools. Dialtone handles the voice session and call lifecycle.

OBSERVABILITY

Calls that report back

Every call returns transcripts, structured outcomes, and a full event timeline. Your agent knows exactly what happened and what to do next.

Workflow

A phone call is just another action.

Keep the control plane in your own agent. Provision the line, start the call, and consume the result like any other agent action.

01

Provision a line

Assign a phone number or caller identity the agent should use when it reaches out to the real world.

agent

voice runtime ready

tools

auth attached

line

caller identity set

connect

Dialtone keeps the server authoritative while the agent moves from request to live call and back to a structured result.

02

Start the call

Post the target, the goal, and any connected tools. Dialtone spins up the voice agent and places the call.

request.jsondraft
{
  "phoneNumber": "+14155550182",
  "fromPhoneNumberId": "agent_line_primary",
  "prompt": "Call the clinic, confirm the visit, and update the CRM.",
  "tools": ["calendar", "crm"]
}

03

Handle the result

Poll or subscribe. When the call ends, your agent gets the full transcript, a structured outcome, and every event along the way.

statuslive poll

initiated

Session created and waiting for connect

queued

Preparing telephony transport

in_progress

Agent is on the line and executing instructions

Start Calling

Give your agent a phone line now.

Dialtone makes telephony an API primitive for AI agents: numbers, calls, routing, and results in one agent-friendly surface.

npm install dialtone
Agent runtimeTool executionAPI access