KaiCalls

A phone number API for AI agents

KaiCalls gives an AI agent its own US phone number that it can call out from, answer and text from, through one MCP server or REST API.

Your agent keeps its own reasoning. KaiCalls handles the number, the live voice on the call, consent and calling-hour checks, and sends the result back to your agent as an event.

What the number does

The number belongs to the agent. Outbound calls show it as the caller ID, people can call it back, and texts come from it. Search for an available number, buy it and attach it to an agent from the same connection.

  • Outbound calls with the task in context, for example asking a supplier, office or clinic a question
  • Inbound calls answered on the agent’s own line, with voicemail and transcripts
  • Ring-first: a person’s cell rings first, and the agent picks up when nobody does
  • Texts from the same number, so a reply lands in the same conversation
  • Recordings, transcripts and a status for every call

How a call comes back to your agent

Pass your own reference with the call. Every event about that call carries it, so your agent can match the outcome to the job that asked for it. Events are signed, so your webhook can check they came from KaiCalls.

If the person on the line asks something only your agent or its owner can answer, the call raises a pending question instead of guessing. Your agent answers it once and the call carries on.

Rules checked on every call

Consent, do-not-call lists and calling hours are checked by the server before a call goes out, and a refusal says which rule blocked it. An idempotency key on each request means a retry never dials twice.

Tools for phone calls

ToolWhat it does
search_available_numbersFind a US number to buy, by area code
buy_numberBuy the number for the account
attach_numberPut the number on an agent
make_callPlace an outbound call with the task in context
check_call_statusRead where a call is and how it ended
answer_call_questionAnswer a question the call is waiting on
get_transcriptRead what was said on a call
get_call_recordingFetch the recording of a call
set_branded_caller_idShow a business name with the number

The same tools are on the MCP server, the REST API and the Python SDK.

Events your agent receives for one call
call.started            external_ref "job_8812"
call.question_pending   "How many guests on Saturday?"
call.completed          outcome booked, external_ref "job_8812"
call.recording.saved    recording ready

Questions

Can an AI agent have its own phone number?
Yes. With KaiCalls an agent gets a real US number. It can place calls from it, answer calls to it, take voicemail and send texts, and every outcome is sent back to the agent as a signed event.
Does my agent need its own voice model to make calls?
No. KaiCalls runs the live voice on the call. Your agent sends the task and receives the result, and it answers any question the call raises mid-conversation.
Can the agent call personal cell phones?
Only when consent allows it. The server checks consent, do-not-call lists and calling hours before every call. Calls to businesses on behalf of the owner, and callbacks to people who called the business first, are the main uses.
How do I connect it?
Add the remote MCP server at https://www.kaicalls.com/api/mcp to any MCP client, or use the REST API and the Python SDK. The same tools are available on each.

More for agent builders