attach_number
ChatGPTAssign 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.
buy_number
ChatGPTPurchase 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.
check_call_status
ChatGPTCheck the status of a call by its ID
configure_agent_business_rules
ChatGPTSafely 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.
configure_staff_alerts
ChatGPTConfigure 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.
configure_textable_links
ChatGPTCreate 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.
create_agent
ChatGPTCreate 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.
create_campaign
ChatGPTCreate 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.
delete_webhook
ChatGPTRemove a business outbound webhook by ID. Mirrors DELETE /api/v1/webhooks.
detach_number
ChatGPTRelease a phone number from a business back to the unassigned registry pool. Mirrors DELETE /api/v1/phone-numbers.
get_analytics
ChatGPTGet 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.
get_balance
ChatGPTGet per-business minutes-used and subscription status across every business the caller can access. Mirrors GET /api/v1/balance.
get_business_info
ChatGPTGet business information, agent count, and recent call stats
get_call_recording
ChatGPTGet the real call recording URL for a call so reviewers can listen to the voice/audio instead of relying only on the transcript.
get_change_history
ChatGPTList 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.
get_conversation
ChatGPTGet a single SMS conversation thread by ID. Mirrors GET /api/v1/sms/conversations?id=.
get_lead
ChatGPTGet full details for a single lead by ID, including the latest AI lead score and explanation.
get_operational_settings
ChatGPTAudit 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.
get_transcript
ChatGPTGet the transcript and summary of a completed call
get_usage
ChatGPTList recent API usage events (endpoint, method, status code, cost) for the caller's account. Mirrors GET /api/v1/usage.
get_webhook
ChatGPTList the configured outbound webhook(s) for a business, including supported event types. Mirrors GET /api/v1/webhooks.
list_agents
ChatGPTList KaiCalls agents available to the authenticated account
list_campaigns
ChatGPTList outbound call campaigns for the authenticated business.
list_config_versions
ChatGPTList 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.
list_conversations
ChatGPTList SMS conversation threads (counterparty timeline metadata) for the authenticated business, most recent first. Mirrors GET /api/v1/sms/conversations.
list_evals
ChatGPTList canned mock-conversation eval scenarios for an agent (or all accessible agents). Mirrors GET /api/v1/evals.
list_knowledge
ChatGPTList agent knowledge base entries for a business. Mirrors GET /api/v1/knowledge.
list_leads
ChatGPTList leads for the authenticated business, with optional status/source/agent filters. Includes the latest AI lead score when available.
list_numbers
ChatGPTList phone numbers owned by the accessible business(es), with capability and compliance flags. Mirrors GET /api/v1/numbers.
list_observability_events
ChatGPTList 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.
list_overage_charges
ChatGPTList 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.
list_products
ChatGPTList a business's agent product catalog. Mirrors GET /api/v1/products.
list_recent_calls
ChatGPTList recent calls for the authenticated business
list_rightsize_recommendations
ChatGPTList 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.
list_sms_messages
ChatGPTList recent SMS messages for the authenticated business. Filter by conversation or direction (inbound/outbound).
list_subscription_history
ChatGPTList 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.
list_tool_execution_logs
ChatGPTList 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".
list_voicemails
ChatGPTList recent voicemails for the authenticated business, including transcripts and recording URLs.
list_voices
ChatGPTList the curated, credential-free voice catalog (id, display name, accent, language, gender, sample URL) used to configure agent voices. Mirrors GET /api/v1/voices.
list_workflow_templates
ChatGPTList 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.
make_call
ChatGPTInitiate 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.
request_kaicalls_update
ChatGPTAsk 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.
rollback_config
ChatGPTRoll an agent's deployed voice configuration back to a prior assistant_config_versions snapshot — restoring greeting, voice, prompt, and scalar model params (never secrets/credentials) onto the live agent. This OVERWRITES the live deployed config, so it 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 rollbacks never run unattended. Wraps the same version-restore logic as POST /api/v1/agents/rollback and the admin_rollback_change voice tool, via the agent.config.rollback update intent. Discover a target with list_config_versions or get_change_history. Every executed rollback records a new config version; to repeat a rollback that already executed, pass a fresh idempotency_key.
run_eval
ChatGPTRun a single eval scenario (eval_id) or every scenario for an agent (agent_id) against its live Vapi assistant and grade the result. Bills Vapi compute. Mirrors POST /api/v1/evals/run.
search_available_numbers
ChatGPTSearch the carrier for phone numbers available to purchase (real-time Twilio inventory lookup). Mirrors GET /api/v1/phone-numbers/search.
send_sms
ChatGPTSend an outbound text message from one of your agents' phone lines to a recipient, routed through the governed messaging API. Compliance gates (opt-out / Do-Not-Call / quiet-hours), rate limits, and message logging all apply. Provide from_agent_id (the sending agent), to (recipient phone in E.164), and message. Optionally link lead_id to attribute the text and respect that lead's automation-pause state.
set_webhook
ChatGPTCreate or update a business outbound webhook (URL + subscribed events). Returns a webhook secret on first creation only. Mirrors POST /api/v1/webhooks.
update_agent_config
ChatGPTEdit an agent's live runtime configuration — greeting/first message, inbound or SMS prompt, voice, language model, max call duration, and call-transfer settings — routed through the governed update broker so every change keeps the consent + audit trail (a versioned config snapshot and change history). Every write here is reversible: inspect what changed with get_change_history or list_config_versions, then undo it with rollback_config. Mutating changes need an idempotency_key; high-impact live changes need human authority (an authority envelope) or queue_for_approval for dashboard sign-off. For just a single named operational-rules section, prefer configure_agent_business_rules.
upsert_knowledge
ChatGPTCreate a new agent knowledge base entry, or update one when id is provided. Mirrors POST /api/v1/knowledge. Creating requires title, content, and content_type.
upsert_lead
ChatGPTCreate a new lead or update existing leads for the authenticated business, routed through the governed leads API (business access-checked, usage-logged, and audited). To create one, pass lead with at least one of name/phone/email plus optional status/source/notes/agent_id/etc. To update, pass updates: an array of { id, ...fields } for one or many existing leads (status, name, phone, email, notes, address, city, state, zip). Updates are access-checked per row and report partial success.
upsert_product
ChatGPTCreate a new product row, or update one when id is provided. Mirrors POST /api/v1/products. Creating requires name and business_id. Pass quantity to set/update inventory.