Phone lines

A number your agents can call from.

An account owns phone numbers from Twilio or Telnyx. A person calls from the phone editor; an agent calls through MCP tools, only under a phone grant.

A call

Written down before it rings.

The outbound record is written first, with who placed it. The provider's answer is a status record after it. Nothing retries.

How an agent's call is placedAn agent asks to call a number. The send path reads its phone grant, its lines, its verbs, its prefixes and its minutes left today, and holds the first minute from the account's credits. It writes the call record, queued and with the agent as its author, into the conversation file, then asks the provider. The provider's statuses are appended to the same file, and the call's last status settles the charge.statusesAn agentplace_callIts phone grantlines · verbs · to: +1· minutes a dayCredits heldthe first minute,both legsphone/<line>/<-correspondent->.jsonlqueued, byagent:<id>Twilio or Telnyxone interfaceHow an agent's call is placedAn agent asks to call a number. The send path reads its phone grant, its lines, its verbs, its prefixes and its minutes left today, and holds the first minute from the account's credits. It writes the call record, queued and with the agent as its author, into the conversation file, then asks the provider. The provider's statuses are appended to the same file, and the call's last status settles the charge.statusesAn agentplace_callIts phone grantlines · verbs · to: +1 · minutes a dayCredits heldthe first minute, both legsphone/<line>/<correspondent>.jso-nlqueued, by agent:<id>Twilio or Telnyxone interface

Calls and texts, one file a correspondent.

The conversation file of CommandAGI's demo account user-mock-omar: an ops lead at a made-up robot yard. The numbers are 555 numbers that reach no one.

user-mock-omar/phone/+15555550142/+15555550199.jsonldemo account · fictional 555 numbers
03:04:00 sms  out +15555550142 → +15555550199 by acct:user:user-mock-omar  queued
03:04:05 status   of m1  delivered
03:11:00 sms  in  +15555550199 → +15555550142  received
05:42:00 call out +15555550142 → +15555550199 by acct:user:user-mock-omar  queued
05:46:10 status   of c1  completed  duration 248 s

Where it stands

Built, tested, not yet live.

On 2026-10-12 a number was bought from each provider on dev and calls ran between them. No line has sent a text through a live provider yet (docs/phone.md § verified).

Bounds an agent cannot pass

Texts a day, call minutes a day, destination prefixes and the numbers a call may ring first. Two sends at once cannot pass one bound.

The provider's price

A number, a minute and a text cost what the provider charges, with no margin, held before the provider is asked.

A forward-to number is proved

A code goes to the number by the provider's Verify. Only a proved number rings first.

Give your business a number.

Pick a number in the phone editor, see its price, and buy it with credits.