Make Call
make_callPlace an outbound call through a KaiCalls AI agent: call back a customer who previously called this business, give the owner a voice preview, or call on the owner's behalf (a landlord, clinic, pharmacy, school or utility) with the task in context. For a customer callback, pass the existing lead_id and callback goal in context. Kai verifies the business's inbound-call consent for the exact destination; a verified callback can go directly to a cell phone without connecting the owner. Contact existence alone is not callback permission, and opt-outs still block calls. A call never proves inbound routing or advances activation. report_language sets the language the result is reported in, and Kai then confirms exact details for that reader; Kai speaks call_language (English by default) on the phone. A new account's first call to a US or Canada business line is free; after that the account needs a plan. Kai calls businesses, not personal cell phones, on a free call. For a business that answers on a cell phone, connect_me has Kai ring the person's own saved phone and connect them, so they do the talking. While the call runs, check_call_status shows its live_transcript and send_call_note steers Kai. hold_for_me has Kai wait on hold at a business and connect the person when someone answers. An idempotency_key makes the request safely retryable. Only to is required: with no agent_id the account's one agent places the call.
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": {
"to": "<to>"
},
"name": "make_call"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Phone number to call (E.164 format, e.g. +19085551234) | |
| name | No | Caller/lead name (optional) | |
| context | No | Call context or reason (optional) | |
| lead_id | No | Existing lead ID to associate (optional) | |
| agent_id | No | KaiCalls agent ID to use for the call (optional). Leave it out when the account has one agent: Kai uses that one. With several agents and none named, no call is placed and the answer lists them | |
| caller_id | No | Which number the other side sees (optional). 'own' shows the person's own verified number (start_own_caller_id) so they recognize who is calling; with none verified, no call is placed. 'business_line' shows the KaiCalls line. Left out, the account's saved choice applies. A free first call always shows the KaiCalls line | |
| connect_me | No | True when the person wants to talk to `to` themselves, for example a business that answers on a cell phone: Kai rings the person's own phone saved on the account (set_owner_phone), says one line and connects them to `to`. Kai never speaks to `to`. Takes no lead_id and cannot be listen-only (optional) | |
| hold_for_me | No | True when the person wants Kai to wait on hold for them: Kai calls `to`, gets through the phone menu and hold queue, and the moment a live person answers, says one line and connects the person's own phone saved on the account (set_owner_phone) so they do the talking. If they don't pick up, Kai does the task in context itself. Needs a saved phone and a plan (not on the free first call). Takes no lead_id and cannot be listen-only or connect_me (optional) | |
| listen_only | No | True to only listen: Kai calls a business, stays silent, records what answers (voicemail, answering service, phone menu or no answer) and hangs up within about 75 seconds without leaving a message. Takes no lead_id; context is ignored (optional) | |
| external_ref | No | Your own reference for the conversation or task this call belongs to (up to 200 characters, optional). It comes back unchanged on check_call_status and on every webhook event for this call (call.question_pending, call.completed), so your agent can return the result to the right conversation. | |
| call_language | No | Language Kai speaks on the call (optional, default en) | |
| first_message | No | Override the agent greeting message (optional) | |
| idempotency_key | No | Client-chosen key that makes this call exactly-once: retries with the same key never place a second call (optional but recommended) | |
| report_language | No | Language the person asking reads, as a code or name (e.g. ar, ht, tr, bn, es, zh, vi). Kai confirms names, dates and numbers so the result can be relayed in this language (optional) | |
| connector_activation_call | No | True only for the one-time connector activation call the recipient explicitly requested in this conversation. This is not permission for marketing, SMS, or future calls. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| call | No | ||
| error | No | Present when success is false | |
| success | Yes | Whether the tool completed successfully | |
| replayed | No | ||
| intent_id | No | ||
| external_ref | No | ||
| preview_only | No | ||
| call_language | No | ||
| idempotency_key | No | ||
| report_language | No | ||
| counts_toward_activation | No |