KaiCalls
REMOTE · WWW.KAICALLS.COM · SCANNED AUG 4
AI phone secretary: place calls, read transcripts, list calls, agents, and stats.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →
Endpoint Security97
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- The endpoint enforces authorisation, advertised via RFC 9728 protected-resource metadata. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism. View diagnostics → Pass
Transport & Reachability0
- Transport blocked by authentication: the endpoint requires auth we don't have to verify streamable-http. See how to fix → View diagnostics → Unverified
Schema Quality & AI Usability0
- Schema blocked by authentication: the endpoint requires auth we don't have to read it. See how to fix → Unverified
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
- Tool coverage blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Capabilities0
- Capabilities blocked by authentication: the endpoint requires auth we don't have to read them. See how to fix → Unverified
Unverified: 5 categories
Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · www.kaicalls.com
claude mcp add --transport http com-kaicalls-kaicalls https://www.kaicalls.com/api/mcp
[mcp_servers.com-kaicalls-kaicalls] url = "https://www.kaicalls.com/api/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-kaicalls-kaicalls": {
"type": "remote",
"url": "https://www.kaicalls.com/api/mcp",
"enabled": true
}
}
} openclaw mcp add com-kaicalls-kaicalls --url https://www.kaicalls.com/api/mcp --transport streamable-http
mcp_servers:
com-kaicalls-kaicalls:
url: "https://www.kaicalls.com/api/mcp" {
"mcpServers": {
"com-kaicalls-kaicalls": {
"type": "http",
"url": "https://www.kaicalls.com/api/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 1 Aug 26 −36
- Endpoint reachability: reachable → behind authorisation ▼ security
- Transport: pass → unverified ▼ security
- Stability: 0.17 → unverified ▼ security
- Authorization: The endpoint enforces authorisation, advertised via RFC 9728 protected-resource metadata. security
- Capabilities: fail → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- First check of Schema quality: unverified functional
- 31 Jul 26 +7
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 29 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Jul 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Jul 26 66
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Aug 2026 · Probed https://www.kaicalls.com/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=www.kaicalls.com | CN=YR2,O=Let's Encrypt,C=US | 20 Jun 2026 | 18 Sept 2026 | RSA 2048 | SHA256-RSA | 50bdac0ddc08bc0eedac503838df7e99aa4 |
| SANs: www.kaicalls.com | ||||||
| CN=YR2,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | 4ebd24947e24d394802d84a52fd5b319 |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
DNSSEC insecure
Validation of www.kaicalls.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| kaicalls.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On connection |
| HTTP status | 401 |
WWW-Authenticate challenge Bearer resource_metadata="https://www.kaicalls.com/.well-known/oauth-protected-resource", scope="agents:read calls:read calls:write"
Bearer resource_metadata="https://www.kaicalls.com/.well-known/oauth-protected-resource", scope="agents:read calls:read calls:write" | Header | Value |
|---|---|
| strict-transport-security | max-age=63072000 |
| www-authenticate | Bearer resource_metadata="https://www.kaicalls.com/.well-known/oauth-protected-resource", scope="agents:read calls:read calls:write" |
Protected resource metadata
| Document | https://www.kaicalls.com/.well-known/oauth-protected-resource |
|---|---|
| Retrieved | Yes |
| Resource | https://www.kaicalls.com/api/mcp |
| Authorisation server | https://www.kaicalls.com |
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://www.kaicalls.com/api/mcp | Auth required | 401 | |
| http (plaintext) | http://www.kaicalls.com/api/mcp | HTTPS enforced | 308 | https://www.kaicalls.com/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
attach_number Attach Phone Number ~116
Assign a phone number already in the KaiCalls registry pool to a business (and optionally route it directly to an agent). Does NOT purchase a new number — use search_available_numbers + buy_number for that. Mirrors POST /api/v1/phone-numbers.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | — | Agent ID to route this number to directly (optional). |
| business_id | string | — | Business ID (optional only when the token can access exactly one business). |
| phone_number | string | yes | E.164 phone number already in the registry. |
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | — |
| error | string | — | Present when success is false |
| number | object | — | — |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
buy_number Buy Phone Number ~466
Purchase a real phone number from the carrier and register it to a business. This spends real money — the number is billed by the carrier immediately, so the purchase is APPROVAL-GATED: without human-grade authority (an authority envelope with mode human_confirmed, or a dashboard approval) the tool executes nothing and returns a pending_approval record the business owner approves or denies from the dashboard — relay the returned confirmation text to them. Agent-initiated purchases never run unattended. Does not auto-attach an agent; call attach_number afterward to route it. Mirrors POST /api/v1/phone-numbers/purchase via the numbers.purchase update intent. Compliance: KaiCalls automatically applies state-aware AI-disclosure and consent handling to numbers it provisions, and flags high-risk business categories for extra review.
| Name | Type | Req | Description |
|---|---|---|---|
| actor | object | — | Who is asking: { type: agent|human|system|integration, id, display_name }. |
| agent_id | string | — | Agent ID to route this number to directly once purchased (optional; requires the number to also be voice-runtime-imported, which is not guaranteed at purchase time — prefer a follow-up attach_number… |
| authority | object | — | How the purchase was authorized: { mode, confirmed_by, confirmed_at, confirmation_ref }. human_confirmed requires all three confirmation fields; anything weaker returns pending_approval. |
| business_id | string | — | Business ID (optional only when the token can access exactly one business). |
| dry_run | boolean | — | Validate tenant, scope, and policy without buying anything. |
| idempotency_key | string | — | Stable key for the purchase request; repeating it returns the original outcome. Defaults to a key derived from the phone number — pass your own to retry a previously failed purchase. |
| phone_number | string | yes | The exact E.164 phone number to purchase, as returned by search_available_numbers. |
| queue_for_approval | boolean | — | When authority is insufficient, create a durable dashboard approval (default true). Set false to get needs_approval and retry yourself with the same idempotency_key once a human confirms. |
| reason | string | — | Optional reason recorded in the durable audit. |
| source_ref | string | — | External source reference, such as a ticket or automation run ID. |
| Name | Type | Req | Description |
|---|---|---|---|
| approval | object|null | — | — |
| business_id | string|null | — | — |
| code | string|null | — | — |
| error | string | — | Present when success is false |
| message | string|null | — | — |
| request_id | string|null | — | — |
| result | object|null | — | On executed: { number, vapi_registered, agent_attached, compliance: { high_risk_category, disclosure_note } }. |
| risk_level | string|null | — | — |
| status | string | — | — |
| success | boolean | yes | Whether the tool completed successfully |
| summary | object|null | — | — |
No examples provided.
check_call_status Check Call Status ~32
Check the status of a call by its ID
| Name | Type | Req | Description |
|---|---|---|---|
| call_id | string | yes | The call ID to check |
| Name | Type | Req | Description |
|---|---|---|---|
| call | object | — | — |
| error | string | — | Present when success is false |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
configure_agent_business_rules Configure Agent Business Rules ~318
Safely add or replace a named operational rules section inside an agent inbound prompt, then route the prompt patch through the governed agent.patch broker. Use this for cross-business handoffs, callback language, alert promises, and client-specific operating rules without round-tripping the whole prompt manually.
| Name | Type | Req | Description |
|---|---|---|---|
| actor | object | — | Who is asking: { type: agent|human|system|integration, id, display_name }. |
| agent_id | string | yes | KaiCalls agent ID to update |
| authority | object | — | Human-grade authority for live prompt changes: { mode: human_confirmed|dashboard_session|system_policy, confirmed_by, confirmed_at, confirmation_ref }. |
| business_id | string | — | Business ID. Required when the agent has multiple accessible assignments. |
| dry_run | boolean | — | Validate and show the prompt patch metadata without writing. |
| idempotency_key | string | — | Required for writes. Reuse the same key when retrying the same proposed prompt change. |
| mode | string | — | replace (default) or append. |
| queue_for_approval | boolean | — | When authority is missing, create a pending dashboard approval instead of returning needs_approval. |
| rules | array | yes | Plain-language operational rules to insert as bullets, e.g. callback capture, sister-location boundaries, urgent alert handling. |
| section_title | string | — | Prompt section heading to replace/append. Default: Operational handoff rules. |
| source_ref | string | — | External source reference, such as a support ticket or Claude conversation ID. |
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string|null | — | — |
| approval | object|null | — | — |
| business_id | string|null | — | — |
| code | string|null | — | — |
| error | string | — | Present when success is false |
| request_id | string|null | — | — |
| result | object|null | — | — |
| rules_count | integer|null | — | — |
| section_title | string|null | — | — |
| status | string | — | — |
| success | boolean | yes | Whether the tool completed successfully |
| summary | object|null | — | — |
No examples provided.
configure_staff_alerts Configure Staff Alerts ~207
Configure business-owned staff alert recipients and post-call escalation rules. Use this for emergency/urgent texts, callback alerts, billing/provider follow-up alerts, and ensuring alerts go only to the correct business staff.
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | Business ID (optional only when the token has exactly one accessible business) |
| dry_run | boolean | — | Validate and show the proposed settings without writing. |
| email_notifications | boolean | — | Enable or disable email staff alerts for this business. |
| escalation_rules | array | — | Post-call escalation rules evaluated against completed transcripts. Each rule is { id?, when, then, enabled? }. v1 action then includes text_owner. |
| notification_email | string|array | — | Comma-separated string or array of staff email addresses that receive escalation emails. |
| notification_phone | string|array | — | Comma-separated string or array of staff phone numbers that receive SMS escalation alerts. |
| sms_notifications | boolean | — | Enable or disable SMS staff alerts for this business. |
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | — |
| current_settings | object|null | — | — |
| dry_run | boolean | — | — |
| error | string | — | Present when success is false |
| proposed_settings | object | — | — |
| settings | object | — | — |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
configure_textable_links Configure Textable Links ~125
Create or repair the business_links entries used by the send_link/send_sms tools. Use this when callers need booking, directions, cancellation, sister-location, or service-specific links texted without exposing raw URLs in the voice prompt.
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | Business ID (optional only when the token has exactly one accessible business) |
| dry_run | boolean | — | Validate and show create/update plan without writing. |
| links | array | yes | Links to create/update by link_key. New links require label and destination_url. Existing links can be deactivated with is_active=false. |
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | — |
| dry_run | boolean | — | — |
| error | string | — | Present when success is false |
| links | array | — | — |
| plan | array | — | — |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
create_agent Create Agent ~234
Create a new KaiCalls voice agent (Vapi assistant + KaiCalls records) with a system prompt, greeting, voice, and model. Mirrors POST /api/v1/agents. Every subsequent mutation to this agent is versioned (assistant_config_versions) and reversible via rollback_config — inspect history with get_change_history / list_config_versions. Compliance: KaiCalls automatically applies state-aware AI-disclosure and consent handling to every agent it provisions, and flags high-risk business categories for extra review.
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | yes | Business ID to create the agent under. |
| first_message | string | — | Spoken greeting (optional). |
| metadata | object | — | Extra KaiCalls metadata to store (optional). |
| model | object | — | Language model selection: { provider, model, temperature } (optional). |
| name | string | yes | Agent display name. |
| system_prompt | string | yes | The agent's inbound system prompt / instructions. |
| voice | object | — | Raw voice selection: { provider, voiceId } (optional). |
| voice_catalog_id | string | — | Preferred: a curated catalog id from list_voices (optional). |
| Name | Type | Req | Description |
|---|---|---|---|
| agent | object | — | — |
| compliance | object | — | — |
| error | string | — | Present when success is false |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
create_campaign Create Campaign ~181
Create an outbound call campaign (cadence + lead batch) and optionally launch it immediately. Launching queues calls for the orchestrator; existing TCPA/consent gating still applies at dial time. Requires admin role on the business.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | — | Agent ID to place the calls. Required when launch is true. |
| business_id | string | — | Business ID (required only when the token can access multiple businesses). |
| cadence_config | object | yes | Cadence configuration. { template: standard|aggressive|nurture|custom, attempts: number }. |
| description | string | — | Optional campaign description. |
| launch | boolean | — | When true, launch the campaign immediately after creating it. |
| lead_ids | array | — | Lead IDs to enroll in the campaign (optional at create time). |
| name | string | yes | Campaign name. |
| Name | Type | Req | Description |
|---|---|---|---|
| campaign | object | — | — |
| error | string | — | Present when success is false |
| launched | boolean | — | — |
| queued | integer|null | — | — |
| sequence_id | string|null | — | — |
| success | boolean | yes | Whether the tool completed successfully |
| total_leads | integer|null | — | — |
No examples provided.
delete_webhook Delete Webhook ~59
Remove a business outbound webhook by ID. Mirrors DELETE /api/v1/webhooks.
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | Business ID (optional only when the token can access exactly one business). |
| id | string | yes | Webhook ID to remove. |
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | — |
| error | string | — | Present when success is false |
| message | string | — | — |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
detach_number Detach Phone Number ~70
Release a phone number from a business back to the unassigned registry pool. Mirrors DELETE /api/v1/phone-numbers.
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | Business ID (optional only when the token can access exactly one business). |
| phone_number | string | yes | E.164 phone number to release. |
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | — |
| error | string | — | Present when success is false |
| released_phone_number | string | — | — |
| success | boolean | yes | — |
No examples provided.
get_analytics Get Analytics ~62
Get a dashboard summary (lead counts by status, conversion rate, call volume and duration, top agents, and business outcomes by type) over a recent time window.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | — | Lookback window in days (default 30, max 90) |
| Name | Type | Req | Description |
|---|---|---|---|
| agents | object | — | — |
| calls | object | — | — |
| error | string | — | Present when success is false |
| leads | object | — | — |
| outcomes | object | — | — |
| outcomes_total | integer | — | — |
| period | object | — | — |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
get_balance Get Balance ~33
Get per-business minutes-used and subscription status across every business the caller can access. Mirrors GET /api/v1/balance.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| businesses | array | — | — |
| error | string | — | Present when success is false |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
get_business_info Get Business Info ~39
Get business information, agent count, and recent call stats
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | Business ID (optional, defaults to first accessible business) |
| Name | Type | Req | Description |
|---|---|---|---|
| agent_count | integer | — | — |
| business | object | — | — |
| calls_last_30_days | integer | — | — |
| error | string | — | Present when success is false |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
get_call_recording Get Call Recording ~53
Get the real call recording URL for a call so reviewers can listen to the voice/audio instead of relying only on the transcript.
| Name | Type | Req | Description |
|---|---|---|---|
| call_id | string | yes | The KaiCalls call ID to get the recording for |
| Name | Type | Req | Description |
|---|---|---|---|
| call | object | — | — |
| error | string | — | Present when success is false |
| recording_available | boolean | — | — |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
get_change_history Get Agent Change History ~123
List an agent's recent config-change audit trail (change_type, change_source, old/new value, timestamp) from admin_change_history — the same record the admin_get_change_history voice tool reads over the phone. Every mutation KaiCalls makes to an agent (via update_agent_config, configure_agent_business_rules, the admin call-in secretary, or the dashboard) is logged here and reversible with rollback_config.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | yes | Agent ID to fetch change history for. |
| limit | integer | — | Max results to return (default 20, max 100). |
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | — | — |
| changes | array | — | — |
| error | string | — | Present when success is false |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
get_conversation Get SMS Conversation ~44
Get a single SMS conversation thread by ID. Mirrors GET /api/v1/sms/conversations?id=.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | yes | The conversation ID to fetch. |
| Name | Type | Req | Description |
|---|---|---|---|
| conversation | object | — | — |
| error | string | — | Present when success is false |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
get_lead Get Lead ~41
Get full details for a single lead by ID, including the latest AI lead score and explanation.
| Name | Type | Req | Description |
|---|---|---|---|
| lead_id | string | yes | The lead ID to fetch |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | — | Present when success is false |
| lead | object | — | — |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
get_operational_settings Get Operational Settings ~69
Audit the business-level operational setup Claude needs before changing a client account: staff alert recipients, SMS/email alert flags, escalation rules, textable send-link entries, and assigned agent voice/model/greeting metadata.
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | Business ID (optional, defaults to first accessible business) |
| Name | Type | Req | Description |
|---|---|---|---|
| agents | array | — | — |
| available_setup_tools | array | — | — |
| business | object | — | — |
| business_links | array | — | — |
| error | string | — | Present when success is false |
| notification_settings | object|null | — | — |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
get_transcript Get Transcript ~35
Get the transcript and summary of a completed call
| Name | Type | Req | Description |
|---|---|---|---|
| call_id | string | yes | The call ID to get the transcript for |
| Name | Type | Req | Description |
|---|---|---|---|
| call | object | — | — |
| error | string | — | Present when success is false |
| success | boolean | yes | Whether the tool completed successfully |
| transcript | string|null | — | — |
| transcript_available | boolean | — | — |
| transcript_length | integer | — | — |
| transcript_truncated | boolean | — | — |
No examples provided.
get_usage Get API Usage ~85
List recent API usage events (endpoint, method, status code, cost) for the caller's account. Mirrors GET /api/v1/usage.
| Name | Type | Req | Description |
|---|---|---|---|
| end | string | — | ISO date/time upper bound (optional). |
| limit | integer | — | Max results to return (default 100, max 500). |
| start | string | — | ISO date/time lower bound (optional). |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | — | Present when success is false |
| has_more | boolean | — | — |
| success | boolean | yes | Whether the tool completed successfully |
| usage | array | — | — |
No examples provided.
get_webhook Get Webhook Configuration ~55
List the configured outbound webhook(s) for a business, including supported event types. Mirrors GET /api/v1/webhooks.
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | Business ID (optional only when the token can access exactly one business). |
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | — |
| error | string | — | Present when success is false |
| events | array | — | — |
| success | boolean | yes | Whether the tool completed successfully |
| webhooks | array | — | — |
No examples provided.
list_agents List Agents ~71
List KaiCalls agents available to the authenticated account
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | Business ID to filter by (optional, must be accessible) |
| limit | integer | — | Max results to return (default 50, max 100) |
| offset | integer | — | Zero-based pagination offset (default 0) |
| Name | Type | Req | Description |
|---|---|---|---|
| agents | array | — | — |
| count | integer | — | — |
| error | string | — | Present when success is false |
| filters | object | — | — |
| has_more | boolean | — | — |
| limit | integer | — | — |
| next_offset | integer|null | — | — |
| offset | integer | — | — |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
list_campaigns List Campaigns ~65
List outbound call campaigns for the authenticated business.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max results to return (default 25, max 100) |
| offset | integer | — | Zero-based pagination offset (default 0) |
| status | string | — | Filter by campaign status (optional) |
| Name | Type | Req | Description |
|---|---|---|---|
| campaigns | array | — | — |
| count | integer | — | — |
| error | string | — | Present when success is false |
| filters | object | — | — |
| has_more | boolean | — | — |
| limit | integer | — | — |
| next_offset | integer|null | — | — |
| offset | integer | — | — |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
list_config_versions List Agent Config Versions ~121
List an agent's hashed, redacted assistant config version history (rollback lineage included). Pass `version` to fetch one version's full redacted config_snapshot instead of the list. Mirrors GET /api/v1/agents/versions.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | yes | Agent ID (required). |
| limit | integer | — | Max versions to return when listing (optional, default 50, max 100). |
| version | integer | — | Fetch a single version by its per-agent version_number, including its redacted config_snapshot (optional; omit to list). |
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | — | — |
| error | string | — | Present when success is false |
| success | boolean | yes | Whether the tool completed successfully |
| version | object|null | — | — |
| versions | array | — | — |
No examples provided.
list_conversations List SMS Conversations ~58
List SMS conversation threads (counterparty timeline metadata) for the authenticated business, most recent first. Mirrors GET /api/v1/sms/conversations.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max results to return (default 50, max 100). |
| Name | Type | Req | Description |
|---|---|---|---|
| conversations | array | — | — |
| error | string | — | Present when success is false |
| has_more | boolean | — | — |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
list_evals List Agent Evals ~48
List canned mock-conversation eval scenarios for an agent (or all accessible agents). Mirrors GET /api/v1/evals.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | — | Filter by agent ID (optional). |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | — | Present when success is false |
| evals | array | — | — |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
list_knowledge List Agent Knowledge ~75
List agent knowledge base entries for a business. Mirrors GET /api/v1/knowledge.
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | Business ID (optional only when the token can access exactly one business). |
| category | string | — | Filter by category (optional). |
| query | string | — | Free-text search over title/content (optional). |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | — | Present when success is false |
| knowledge | array | — | — |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
list_leads List Leads ~107
List leads for the authenticated business, with optional status/source/agent filters. Includes the latest AI lead score when available.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | — | Filter by agent ID (optional) |
| limit | integer | — | Max results to return (default 50, max 100) |
| offset | integer | — | Zero-based pagination offset (default 0) |
| source | string | — | Filter by lead source (optional) |
| status | string | — | Filter by lead status (optional) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| error | string | — | Present when success is false |
| filters | object | — | — |
| has_more | boolean | — | — |
| leads | array | — | — |
| limit | integer | — | — |
| next_offset | integer|null | — | — |
| offset | integer | — | — |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
list_numbers List Phone Numbers ~48
List phone numbers owned by the accessible business(es), with capability and compliance flags. Mirrors GET /api/v1/numbers.
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | Business ID to filter by (optional). |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | — | Present when success is false |
| numbers | array | — | — |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
list_observability_events List Observability Events ~245
List a business-scoped timeline of compact call-runtime events and redacted integration-delivery attempts. Mirrors GET /api/v1/observability-events and uses bounded keyset pagination.
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | Business ID (optional only when the token can access exactly one business). |
| call_id | string | — | Runtime-event call UUID filter. |
| connection_id | string | — | Integration connection UUID filter. |
| conversation_id | string | — | Runtime-event filter. |
| correlation_id | string | — | Runtime-event filter. |
| cursor | string | — | Opaque next_cursor returned by the previous page. |
| event_type | string | — | Runtime-event filter. |
| from | string | — | — |
| limit | integer | — | — |
| object_id | string | — | Integration-delivery filter. |
| object_type | string | — | Integration-delivery filter. |
| operation | string | — | Integration-delivery filter. |
| outcome | string | — | Integration-delivery filter. |
| provider | string | — | Integration-delivery filter. |
| severity | string | — | Runtime-event filter. |
| source | string | — | Event stream to read (default: all). |
| to | string | — | — |
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | — |
| error | string | — | Present when success is false |
| events | array | — | — |
| pagination | object | — | — |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
list_overage_charges List Overage Charges ~128
List the idempotent overage-minutes ledger from billing_overage_charges (legacy per-minute-overage tiers only — 2026 plans carry no overage). GET /v1/balance/get_balance only returns an aggregate; this returns the underlying per-period ledger rows. Mirrors GET /api/v1/overage-charges.
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | Business ID (optional only when the token can access exactly one business). |
| from | string | — | — |
| limit | integer | — | — |
| status | string | — | — |
| to | string | — | — |
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | — |
| charges | array | — | — |
| error | string | — | Present when success is false |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
list_products List Agent Products ~88
List a business's agent product catalog. Mirrors GET /api/v1/products.
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | Business ID (optional only when the token can access exactly one business). |
| category | string | — | Filter by category (optional). |
| inventory | boolean | — | Include current inventory quantity per product (optional). |
| query | string | — | Free-text search over name/description (optional). |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | — | Present when success is false |
| products | array | — | — |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
list_recent_calls List Recent Calls ~77
List recent calls for the authenticated business
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | — | Filter by agent ID (optional) |
| limit | integer | — | Max results to return (default 20, max 100) |
| offset | integer | — | Zero-based pagination offset (default 0) |
| status | string | — | Filter by status (optional) |
| Name | Type | Req | Description |
|---|---|---|---|
| calls | array | — | — |
| count | integer | — | — |
| error | string | — | Present when success is false |
| filters | object | — | — |
| has_more | boolean | — | — |
| limit | integer | — | — |
| next_offset | integer|null | — | — |
| offset | integer | — | — |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
list_rightsize_recommendations List Plan Right-Size Recommendations ~124
List per-period auto-right-size decisions from plan_rightsize_recommendations, including the dry_run -> notified -> (kept | applied | superseded) lifecycle. Answers "is this business about to get right-sized". Mirrors GET /api/v1/rightsize-recommendations.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | — | — |
| business_id | string | — | Business ID (optional only when the token can access exactly one business). |
| from | string | — | — |
| limit | integer | — | — |
| status | string | — | — |
| to | string | — | — |
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | — |
| error | string | — | Present when success is false |
| recommendations | array | — | — |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
list_sms_messages List SMS Messages ~93
List recent SMS messages for the authenticated business. Filter by conversation or direction (inbound/outbound).
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | — | Filter by conversation ID (optional) |
| direction | string | — | Filter by direction: inbound or outbound (optional) |
| limit | integer | — | Max results to return (default 50, max 100) |
| offset | integer | — | Zero-based pagination offset (default 0) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| error | string | — | Present when success is false |
| filters | object | — | — |
| has_more | boolean | — | — |
| limit | integer | — | — |
| messages | array | — | — |
| next_offset | integer|null | — | — |
| offset | integer | — | — |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
list_subscription_history List Subscription Change History ~118
List plan/price change history from subscription_change_history — the billing analogue of admin_change_history, written from the Stripe webhook and the right-size apply job. Mirrors GET /api/v1/subscription-history.
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | Business ID (optional only when the token can access exactly one business). |
| change_type | string | — | — |
| from | string | — | — |
| limit | integer | — | — |
| source | string | — | e.g. stripe_webhook, rightsize_apply_job. |
| to | string | — | — |
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | — |
| changes | array | — | — |
| error | string | — | Present when success is false |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
list_tool_execution_logs List Tool Execution Logs ~185
List per-call Vapi tool execution traces from vapi_tool_execution_logs — outcome, latency, timeout, and a redacted result preview for each routed tool call. Mirrors GET /api/v1/tool-execution-logs. Answers "did this tool call actually work".
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | Business ID (optional only when the token can access exactly one business). |
| call_id | string | — | Vapi call/conversation id filter. |
| from | string | — | — |
| limit | integer | — | — |
| outcome_status | string | — | Outcome envelope status filter (e.g. success, needs_clarification, unavailable, queued, retryable_delay, hard_failure). |
| to | string | — | — |
| tool_call_id | string | — | Exact tool_call_id filter. |
| tool_name | string | — | Tool name filter (e.g. send_sms). |
| Name | Type | Req | Description |
|---|---|---|---|
| business_id | string | — | — |
| error | string | — | Present when success is false |
| logs | array | — | — |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
list_voicemails List Voicemails ~60
List recent voicemails for the authenticated business, including transcripts and recording URLs.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max results to return (default 20, max 100) |
| offset | integer | — | Zero-based pagination offset (default 0) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | — | — |
| error | string | — | Present when success is false |
| has_more | boolean | — | — |
| limit | integer | — | — |
| next_offset | integer|null | — | — |
| offset | integer | — | — |
| success | boolean | yes | Whether the tool completed successfully |
| voicemails | array | — | — |
No examples provided.
list_voices List Voice Catalog ~102
List the curated, credential-free voice catalog (id, display name, accent, language, gender, sample URL) used to configure agent voices. Mirrors GET /api/v1/voices.
| Name | Type | Req | Description |
|---|---|---|---|
| gender | string | — | Filter by gender: male or female. |
| language | string | — | Filter by language label, e.g. English or Spanish. |
| provider | string | — | Filter by provider, e.g. vapi, 11labs, or azure. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string | — | Present when success is false |
| success | boolean | yes | Whether the tool completed successfully |
| voices | array | — | — |
No examples provided.
list_workflow_templates List Workflow Templates ~90
List the cadence/campaign workflow templates KaiCalls can run (standard, aggressive, nurture, custom), including each template's retry interval, defaults (call windows, days, attempts), and a ready-to-use cadence_config example. Call this before create_campaign so an external agent can trigger a multi-step sequence with launch=true instead of guessing the cadence_config shape blind. Static catalog — no per-business state.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| cadence_config_fields | array | — | — |
| defaults | object | — | — |
| error | string | — | Present when success is false |
| success | boolean | yes | Whether the tool completed successfully |
| templates | array | — | — |
| usage | string | — | — |
No examples provided.
make_call Make Call ~195
Initiate a real outbound phone call via a KaiCalls AI agent. Pass an idempotency_key to make the request safely retryable: a replay with the same key returns the original call instead of dialing again, and the same key with different arguments is rejected.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | yes | KaiCalls agent ID to use for the call |
| context | string | — | Call context or reason (optional) |
| first_message | string | — | Override the agent greeting message (optional) |
| idempotency_key | string | — | Client-chosen key that makes this call exactly-once: retries with the same key never place a second call (optional but recommended) |
| lead_id | string | — | Existing lead ID to associate (optional) |
| name | string | — | Caller/lead name (optional) |
| to | string | yes | Phone number to call (E.164 format, e.g. +19085551234) |
| Name | Type | Req | Description |
|---|---|---|---|
| call | object | — | — |
| error | string | — | Present when success is false |
| idempotency_key | string | — | — |
| intent_id | string | — | — |
| replayed | boolean | — | — |
| success | boolean | yes | Whether the tool completed successfully |
No examples provided.
request_kaicalls_update Request KaiCalls Update ~514
Ask the KaiCalls on-behalf update broker to perform a scoped, governed mutation. Supported intents: phone.emergency_address.set, transcripts.sink.configure, agent.patch, numbers.purchase, agent.config.rollback. Prefer update_agent_config for prompt/voice/model edits, configure_agent_business_rules for a single named operational prompt section, upsert_lead for lead create/update, send_sms for outbound texts, configure_staff_alerts for alert recipients/rules, and configure_textable_links for send-link setup. Mutating requests need an idempotency_key; high-risk changes need human authority. The broker returns needs_user_input, needs_approval, pending_approval, executed, denied, or unsupported — never an unaudited side effect.
| Name | Type | Req | Description |
|---|---|---|---|
| actor | object | — | Who is asking: { type: agent|human|system|integration, id, display_name }. |
| authority | object | — | How the change was authorized: { mode: none|agent_asserted|human_confirmed|dashboard_session|system_policy, confirmed_by, confirmed_at, confirmation_ref }. human_confirmed requires all three confirma… |
| business_id | string | — | Business ID. Required when the API key can access multiple businesses. |
| dry_run | boolean | — | Validate tenant, scope, schema, authority, and policy without executing. |
| idempotency_key | string | — | Required for any mutating request. Repeating a key returns the original outcome instead of re-running provider side effects. |
| intent | string | yes | Update intent: phone.emergency_address.set, transcripts.sink.configure, agent.patch, numbers.purchase, or agent.config.rollback |
| payload | object | — | Intent payload. E911: address + disclosure_acknowledged=true. transcripts: webhook_url + events. agent.patch: name, inbound_prompt, outbound_prompt, sms_prompt, first_message, voice, model, max_durat… |
| queue_for_approval | boolean | — | When authority is missing, create a pending dashboard approval instead of returning needs_approval. |
| reason | string | — | Required when changing raw vapi_config; recorded in the durable audit. |
| requester | object | — | Optional legacy requester metadata for audit trails (prefer actor). |
| source_ref | string | — | External source reference, such as a Discord message or automation run ID. |
| target | object | — | Target identifiers, e.g. { phone_number } for E911 or { agent_id } for agent.patch. |
| Name | Type | Req | Description |
|---|---|---|---|
| approval | object|null | — | — |
| business_id | string|null | — | — |
| code | string|null | — | — |
| error | string | — | Present when success is false |
| intent | string|null | — | — |
| message | string|null | — | — |
| missing_fields | array|null | — | — |
| request_id | string|null | — | — |
| result | object|null | — | — |
| risk_level | string|null | — | — |
| status | string | — | — |
| success | boolean | yes | Whether the tool completed successfully |
| summary | object|null | — | — |
No examples provided.