Call the human
callRing the human's phone (iPhone or Android), read question aloud word
for word, and return what they say back as text. Waits up to ~30s.
status "completed" carries their words in `transcript` (empty if they only
listened). "ringing" (not picked up yet) or "in_call" (listening) means the
call has not settled: pass call_id to poll_result until it does. An
unanswered ring settles as "missed" within about a minute; "declined" means
they refused it. Do not retry an unanswered call in a loop: send one `text`
instead.
By default the line stays open after their answer ("open": true): they hear
a soft hold sound while you think, and a voice assistant tells them you are
working on it. Reply with `say`, finish with `hang_up`; after about two
minutes of silence the line drops by itself. Anything they said while
waiting comes back with their next answer as "said_while_waiting". The
"language" and "language_name" fields report what the recognizer heard, as
information only. `voice` picks who speaks (female first: bella, sarah,
jessica, ...; male: roger, eric, brian, ...) and sticks for later calls.
Reuse the returned session_token in later calls and texts so the phone
keeps one thread. The `from` in the result is your own number: never call
or text it. Missing `to` returns setup_required with download links.Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"question": "<question>"
},
"name": "call"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | The human's 10-digit Call Me number, from My Number in the app (not a regular phone number). Local clients read it from ~/.aiphone/config.json user_number. In a host without file access, reuse a number given earlier in this chat, but do not claim it is saved across chats. Omit it only to get setup_required with the download links. | |
| voice | No | Who speaks, female first (default "bella"). female: bella, sarah, jessica, matilda, laura, alice (british), lily (british); neutral: river; male: roger, eric, chris, brian, will, liam, bill, george (british), daniel (british), charlie (australian). "female" or "male" picks the first of that kind. Your choice sticks for this session's later calls until you pass another; empty keeps it, or else uses the voice the person chose in their app. | |
| language | No | The language you are speaking, e.g. "tr", "pt-BR" or "Turkish". The call's own short lines (thanks, goodbye) follow it. Empty means English, or on `say` keeps the current one. | |
| question | Yes | What to say, read aloud word for word, up to 2000 characters (about two minutes). It need not be a question: a status update or a summary works too. | |
| keep_open | No | The line always stays up after their answer so you can reply with `say`; end it with `hang_up`. Kept for older clients: false no longer makes a one-shot call. | |
| from_label | No | Who is calling, shown on their phone and spoken: e.g. "Claude on my laptop". | Someone's AI |
| session_token | No | A session_token from an earlier result, to stay in that thread. Omit on first contact. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | Your own agent number. Never call or text it. | |
| next | No | What to do next when the call has not settled. | |
| open | No | True while the line stays up for say or hang_up. | |
| turn | No | Index of the answer within a conversation. | |
| title | No | play_audio: the recording's title. | |
| status | Yes | "completed" (answered), "ringing" or "in_call" (not settled: poll_result), "missed", "declined", "ended", "hanging_up", "playing" (play_audio), or "setup_required" when no number was given. | |
| call_id | No | Pass to poll_result, say and hang_up. | |
| audio_id | No | play_audio: the recording that was offered. | |
| finished | No | play_audio: whether they heard it to the end. | |
| language | No | Language code the recognizer heard, information only. | |
| listened | No | play_audio: whether they chose to listen. | |
| duration_s | No | play_audio: its length in seconds. | |
| listened_s | No | play_audio: seconds they listened. | |
| transcript | No | What the human said; empty if they only listened. | |
| audio_error | No | play_audio: why the recording could not be played. | |
| language_name | No | That language's name. | |
| session_token | No | Reuse in later calls and texts to stay in one thread. | |
| said_while_waiting | No | What they said while you were thinking. |