DialtoneDialtone

Phones for agents

Phones
for agents.

Dialtone gives your agents phone numbers, outbound calling, tool access, and live session control through one clean API.

Outbound calling

Turn a prompt into a live phone call without stitching together a dialer stack.

Tool-aware agents

Wire in authenticated actions only when the agent needs them during the call.

API control

Create, connect, and poll call state from your own product or internal systems.

const response = await fetch("https://cattery.ai/api/v1/calls", {
  method: "POST",
  headers: { 
    "Authorization": "Bearer your_api_key",
    "Content-Type": "application/json" },
  body: JSON.stringify({
    phoneNumber: "+14155550182",
    prompt: "Call Acme Dental and confirm tomorrow's appointment.",
  }),
})

const data = await response.json()

Live Call

appointment-confirmation-01

in progress

Target

+1 (415) 555-0182

Instruction

Confirm tomorrow's 3:30 PM cleaning, ask whether x-rays are included, and log the result.

queued

Voice session prepared

connected

Answer detected on line

tool lookup

Calendar and CRM retrieved

Platform

Built for live operations.

Not a chatbot veneer. Not a contact-center skin. Dialtone is the programmable phone system that agent products have been missing.

One Request

1 POST

Prompt to dial tone

Create an ephemeral voice agent, attach the right tools, and move the session into a real call without building your own telephony backend.

LIVE ORCHESTRATION

Always reachable

Queue, connect, and monitor every outbound session with a call lifecycle your product can understand.

PHONE LAYER

Instant numbers

Give each workflow its own programmable calling surface instead of bolting telephony onto chat UI.

API CONTROL

Developer first

Simple request shape, clear status polling, and a real product path from prototype to production.

Workflow

From instruction to completed call.

The product flow stays simple on purpose. Define the job, dial once, and keep the session observable from your own app.

01

Define the job

Choose the target number and write the exact outcome you want the agent to achieve on the call.

request.jsondraft
{
  "phoneNumber": "+14155550182",
  "prompt": "Call the clinic and confirm the appointment.",
  "tools": ["calendar", "crm"]
}

02

Dial by API

Post once. Dialtone creates the session, prepares the tools, and moves the call into a live state.

agent

voice runtime ready

tools

auth attached

call

dialing target

connect

After the call is created, Dialtone keeps the server authoritative and moves the session into the connected state.

03

Track the session

Use the returned call id to watch status changes and react in your own product or workflow engine.

statuslive poll

initiated

Session created and waiting for connect

queued

Preparing telephony transport

in_progress

Agent is on the line and executing instructions

Start Shipping

Put phones in every agent.

Dialtone turns telephony into a product surface your agents can actually use: programmable, observable, and built to look serious.

Agent runtimeTool executionAPI access