KaiCalls MCP Server
OfficialAllows reading Stripe-verified subscription checkout receipts for a business, enabling billing and checkout status checks through Stripe.
This server has a remotely hosted endpoint. Open its connector listing for connection details, authentication requirements, and setup instructions:
KaiCalls MCP Server
A phone number for your business or your AI agent. Kai answers it and calls businesses for you.
Get a business number (or keep yours) with Kai built in. Your phones ring first; Kai answers misses and after-hours calls, takes the details and texts you. See current plans and pricing. This repository is the public connector definition for the hosted KaiCalls MCP server — it documents the endpoint, authentication, and tool catalog so MCP clients and directories can discover and connect to it.
The KaiCalls platform itself is a hosted SaaS — there is no server to install. You connect to the live endpoint below with your KaiCalls account.
MCP endpoint |
|
Transport | Streamable HTTP (JSON-RPC over HTTP POST) |
Auth | OAuth 2.1 (PKCE S256 + DCR) or |
Setup endpoint |
|
Tools | 171 on the account endpoint (60 read-only, 111 write/setup); 37 on the setup endpoint |
Homepage | |
Provider | |
License | MIT (connector definitions and docs) |
Status | GA — live in production |
Give your AI agent a phone number
A person can connect ChatGPT, Claude or any MCP client and get a real US number:
Kai calls businesses for you.
make_callplaces an errand call to a US or Canada business (a shop, clinic, office or restaurant), asks the question, presses keys on phone menus, andcheck_call_statusreturns the answer. Kai says up front that it is an assistant calling for you, and it does not place AI calls to personal cell phones.Kai answers the callback. The business calls your own number back, and Kai takes the message.
The first call for a new connector account is free. After that, calls run on a plan: see kaicalls.com/ai-agent-phone-number.
Related MCP server: VoIPBin MCP Server
Quick Answer
What is the KaiCalls MCP connector? It is the official hosted MCP connector for KaiCalls. Existing customers use https://www.kaicalls.com/api/mcp; a first-time buyer can use the setup-only surface at https://www.kaicalls.com/api/mcp/acquisition.
Who should use it? Use it when Claude, ChatGPT, Cursor, an MCP gateway, or another AI client needs to safely inspect KaiCalls agents, calls, transcripts, leads, analytics, and approved setup actions.
Does it require hosting your own server? No. KaiCalls hosts the MCP server. Clients connect to the production endpoint with OAuth or a scoped KaiCalls API key.
Is this the WordPress plugin? No. The approved KaiCalls AI Intake plugin captures website leads from WordPress. This repo documents the agent/MCP connector.
Is this the n8n integration? No. n8n workflows should use n8n-nodes-kaicalls.
Quick connect
Claude (web & desktop)
Add KaiCalls to Claude in one click: Claude opens its Add custom connector box with the name and URL already filled in. Press Add, then sign in. Owners of a Team or Enterprise workspace can use the admin link to add it for everyone.
ChatGPT and other clients
Add a custom connector pointing at https://www.kaicalls.com/api/mcp for an existing
account, or the acquisition endpoint for setup. Sign in with your KaiCalls account,
pick the business on the consent screen, and Allow. See
docs/quickstart.md for screenshots and per-client steps.
API-key clients / MCP gateways
Pass a KaiCalls API key directly — no OAuth round-trip needed:
Authorization: Bearer kc_live_xxxxxxxxxxxxxxxxxxxx(X-KaiCalls-API-Key: kc_live_... is also accepted.) Generate keys in the KaiCalls
dashboard under Settings → API Keys. See docs/authentication.md.
Cline / remote MCP clients
KaiCalls is a remote server — there is nothing to clone or install. Add it to your
MCP client config as a Streamable HTTP server and authenticate with a kc_live_ key.
For Cline, edit cline_mcp_settings.json (or use the Remote Servers tab) and add:
{
"kaicalls": {
"url": "https://www.kaicalls.com/api/mcp",
"type": "streamableHttp",
"headers": { "Authorization": "Bearer kc_live_YOUR_KEY" }
}
}Replace kc_live_YOUR_KEY with a key from the KaiCalls dashboard under Settings →
API Keys. The transport type must be the camelCase string streamableHttp — using
streamable-http or omitting it makes Cline fall back to SSE and the connection fails
with a 405. Once saved, Cline lists the KaiCalls tools and is ready to use. See
llms-install.md for the full agent-driven setup walkthrough.
Gemini CLI and Antigravity
gemini extensions install https://github.com/KaiCalls/kaicalls-mcp
agy plugin install https://github.com/KaiCalls/kaicalls-mcpBoth connect to the hosted server at https://www.kaicalls.com/api/mcp and sign
you in with OAuth the first time a tool runs.
Run locally over stdio (Docker)
Most clients should connect to the hosted server at https://www.kaicalls.com/api/mcp. For stdio-only clients, this repo ships a small bridge with no dependencies:
docker build -t kaicalls-mcp .
docker run -i --rm -e KAICALLS_API_KEY=kc_live_... kaicalls-mcp
# or without Docker: KAICALLS_API_KEY=kc_live_... node stdio-proxy.mjsinitialize and tools/list work without a key. tools/call needs KAICALLS_API_KEY, which you create at https://www.kaicalls.com/dashboard/settings/api-keys.
Tools
The account endpoint exposes 171 tools: 60 read-only and 111 write/setup. Every tool carries MCP
safety annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint).
The setup endpoint (/api/mcp/acquisition) exposes the 37 tools marked Yes in the
Setup surface column, the subset that takes a new business from signup to a working number.
The machine-readable inventory, with full descriptions, scopes and annotations, is in
mcp.json and server-card.json. In-depth notes for the core
tools are in docs/tools.md. The live tools/list response returns each tool's
input schema.
Read-only tools (60)
Tool | Scope | Setup surface | What it does |
|
| Read the authorized advertiser's live Google Local Services aggregate account report, including actual spend, currency and charged lead totals. | |
|
| Inspect Google LSA account selection and sync freshness, with setup steps. | |
|
| List synced Google LSA leads, charge and credit states, source IDs and rating details. | |
|
| Read the latest 200 synced Google LSA conversation events for an LSA lead, including customer and advertiser messages. | |
|
| Report LSA lead counts, types, observed statuses, ratings and credit counts for an explicit UTC window (start inclusive, end exclusive). | |
|
| Builds the publishable manifest and sales kit for an offer draft and returns its fingerprint and revision for publishing. | |
|
| Returns the evidence that a real call reached the client's voice line and produced a delivered lead notification, with a fingerprint for acknowledgement. | |
|
| Returns the staff handoff for an installation with a fingerprint for approval. | |
|
| Shows the client owner the exact intake facts and voice script prepared for their business, with the hashes needed to approve each. | |
|
| Returns the installation release, intake facts, approved script, staff sheet and checks for handoff or records. | |
|
| Shows what offboarding would stop and what it keeps (phone number, sender, connections, billing plan and history), with a fingerprint for approval. | |
|
| Shows the exact review-request text, sender number and recipients for customers with a completed service, with a fingerprint for approval. | |
|
| Read assigned installations, grouped support incidents, accepted billing evidence (also billing:read), or inventory one authorized client's saved facts and actual channel readiness. | |
|
| Yes | Read an owner-authorized extra-number request. |
|
| Yes | Read an owner-authorized setup recovery request by its business and idempotency key. |
|
| Check the status of a call by its ID | |
|
| List recent calls for the authenticated business | |
|
| Get the transcript and summary of a completed call | |
|
| Get the real call recording URL for a call so reviewers can listen to the voice/audio instead of relying only on the transcript. | |
|
| Yes | List the KaiCalls agents on the authenticated account. |
|
| Yes | Read back what a business already has: profile details, how many agents are configured, and recent call volume. |
|
| Yes | Audit the business-level operational setup required before changing a live account: staff alert recipients, SMS/email alert flags, escalation rules, textable send-link entries, and assigned agent voice/model/greeting metadata. |
|
| Yes | Read current call readiness and persisted private-test proof for one accessible business. |
|
| List leads for the authenticated business, with optional status/source/agent filters. | |
|
| Get full details for a single lead by ID, including the latest AI lead score and explanation. | |
|
| List recent voicemails for the authenticated business, including transcripts and recording URLs. | |
|
| Read SMS and WhatsApp message evidence for accessible businesses (sms:read), including provider message ID, carrier status, delivery/failure timestamps and failure code. | |
|
| List outbound call campaigns for the authenticated business. | |
|
| 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. | |
|
| 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. | |
|
| List the meetings Kai was sent into (newest first), or one meeting by id with its live status, minutes used and summary, plus the plan's remaining meeting minutes this month. | |
|
| Yes | List recent API usage events (endpoint, method, status code, cost) for the caller's account. |
|
| Yes | Read the canonical public KaiCalls plan catalog, monthly USD prices and allowances. |
|
| Yes | Read a Stripe-verified subscription checkout receipt for a business you own. |
|
| Read a business's email campaigns: its sending addresses and their setup readiness, recent campaigns with status, revision fingerprint and outcome counts, and the customers who can be emailed (recorded consent, not on the do-not-email list). | |
|
| Read tenant-scoped business-verification document references, pending/approved/rejected staff-review states and secure upload requirements. | |
|
| Read where a business stands on its own carrier registration for business texting: saved details (never the EIN; only whether one is on file), payment, filing stage, whether sales texts are allowed, and the one next step. | |
|
| Read where one business stands on setup: plan, phone number, texting registration, WhatsApp, call and lead alerts, connected mailbox for follow-up email, and email campaign sender. | |
|
| Check whether WhatsApp is connected on a business's KaiCalls number, read live from the carrier. | |
|
| List every customer channel a business can have (phone calls, text messages, WhatsApp, website chat, email, and the ones not offered yet) with its state: ready, needs_setup, blocked or not_available. | |
|
| Read one business's saved KaiCalls trust level (Sprout, Verified, Trusted, Pro, Partner): the current level, the steps to the next one with progress, what each level unlocks, today's outbound calls and texts against the limits the level allows, and any hold. focus 'ladder' explains every level; focus 'level' with level explains one. | |
|
| Get plan terms and usage for accessible businesses. | |
|
| Yes | List phone numbers assigned to the accessible business(es), with capability and compliance flags. |
|
| Yes | Read how calls ring on the business's hosted phone system: which cells and desk phones ring, for how many seconds, and whether after-hours callers go straight to Kai. |
|
| Yes | Read whether the business's hosted phone system is set up: Kai's extension, the team ring group and dial plan ids (never secrets), the phone-system line, and |
|
| List SMS conversation threads (counterparty timeline metadata) for the authenticated business, most recent first. | |
|
| Get a single SMS conversation thread by ID. | |
|
| List the configured outbound webhook(s) for a business, including supported event types. | |
|
| List canned mock-conversation eval scenarios for an agent (or all accessible agents). | |
|
| Yes | List the curated, credential-free voice catalog (id, display name, accent, language, gender, sample URL) used to configure agent voices. |
|
| Yes | Search the carrier for phone numbers available to purchase (live number inventory). |
|
| Yes | List agent knowledge base entries for a business. |
|
| List a business's agent product catalog. | |
|
| Yes | List an agent's hashed, redacted assistant config version history (rollback lineage included). |
|
| Yes | 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. |
|
| List a business-scoped timeline of compact call-runtime events and redacted integration-delivery attempts. | |
|
| List per-call voice-agent tool execution traces — outcome, latency, timeout, and a redacted result preview for each routed tool call. | |
|
| 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. | |
|
| List the idempotent overage-minutes ledger from billing_overage_charges (legacy per-minute-overage tiers only — 2026 plans carry no overage). | |
|
| List per-period auto-right-size decisions from plan_rightsize_recommendations, including the dry_run -> notified -> (kept | applied | superseded) lifecycle. |
Write and setup tools (111)
Tool | Scope | Setup surface | Hints | What it does |
|
| destructive · open-world | Sync an explicitly selected connected LSA advertiser. | |
|
| destructive · idempotent · open-world | Send an authorized text reply inside an existing Google LSA message lead through the Ads API. | |
|
| destructive · idempotent · open-world | Submit an authorized, truthful Google LSA quality survey and return Google's actual bonus-credit decision. | |
|
| idempotent | Registers a new agency for the signed-in user and makes them its owner, using the given brand and support details. | |
|
| destructive · idempotent | Replaces the agency brand, support details and requested commercial mode. | |
|
| — | Creates a staff invitation for an email address with the admin, operator or reader role and returns a one-time invite link that expires in 7 days. | |
|
| idempotent | Joins the agency using the token from an invite link. | |
|
| destructive · idempotent | Cancels a pending staff invitation so its link can no longer be used. | |
|
| idempotent | Gives an active agency staff member access to one client business with the admin or member business role. | |
|
| destructive · idempotent | Removes a staff member's agency assignment to one client business, and removes the business membership if this assignment created it. | |
|
| destructive · idempotent | Removes a staff member from the agency: revokes their membership, all their client assignments, their accepted invites and every API key issued to them through the agency. | |
|
| — | Creates a new API key for yourself in this agency, limited to the requested scopes, and returns the secret once. | |
|
| — | Creates a new offer draft, or replaces an existing draft when offerId and its current revision are given. | |
|
| idempotent | Publishes the previewed offer as a new immutable version and returns its enrollment link. | |
|
| destructive · idempotent | Archives an offer so it can no longer be published or used for new enrollments. | |
|
| idempotent | Starts a business owner's own enrollment in a published agency offer, using the business name and intake facts. | |
|
| idempotent · open-world | Completes a self-service enrollment after the owner has approved the current intake: creates the client business and queues its package installations, which later configure the business's voice agent. | |
|
| idempotent | Lets the client owner replace the intake facts on their own enrollment link. | |
|
| idempotent | Creates an enrollment session for 1-50 existing or new clients against a published offer version and returns one owner approval link per new client. | |
|
| destructive · idempotent | Replaces the client entries of an uncommitted enrollment session. | |
|
| idempotent | Checks every client in the batch for missing facts, owner approval and payer conflicts, and returns what enrolling would install, with the fingerprint and approval IDs needed to enroll. | |
|
| idempotent · open-world | Commits the previewed batch: creates new client businesses, records owner approvals and queues package installations for every ready client; installations later configure each client voice agent. | |
|
| idempotent | Links the signed-in client owner to their enrollment link using its token. | |
|
| idempotent | Records the client owner's approval of the exact offer and intake facts on their enrollment link. | |
|
| destructive | Issues a new owner link for a client in the batch and invalidates the old one, clearing any earlier claim and approval. | |
|
| destructive · idempotent | Revokes an enrollment session and all of its owner links so nothing more can be approved or enrolled from it. | |
|
| idempotent | Records the client owner acknowledging the route test receipt they reviewed. | |
|
| idempotent | Records the client owner approving the exact staff handoff they reviewed. | |
|
| idempotent | Chooses, for each conflicting setting in a proposed package update, whether to keep the client's current value or use the package value, and saves the resolved update. | |
|
| idempotent · open-world | Runs the approved test scenarios as simulated test-mode conversations against the client's voice agent and returns their progress. | |
|
| idempotent | Records the client owner approving either the intake facts or the voice script they reviewed. | |
|
| destructive · idempotent | Withdraws one of the client owner's earlier approvals. | |
|
| destructive · idempotent | Pauses an installation so its package setup and scheduled package work stop. | |
|
| open-world | Re-queues an installation so setup runs again, clearing its last error; setup configures the client's voice agent. | |
|
| destructive · idempotent | Starts offboarding: stops the package's jobs, revokes its future automation authority and turns off its scheduled reports. | |
|
| idempotent | Prepares a proposed update to a newer published offer version, or a rollback to an earlier installation revision, and lists any conflicts with client changes. | |
|
| idempotent | Records the client owner approving the updated script of a proposed update. | |
|
| destructive · idempotent · open-world | Applies an approved update and re-queues setup, which replaces the client's live voice agent configuration. | |
|
| idempotent | Marks the client's installation as a canary, so it can receive package updates before other clients of the same agency. | |
|
| idempotent | Builds the client's recorded-activity report for the last 30 days and saves it as a snapshot. | |
|
| destructive · idempotent · open-world | Sets the weekly or monthly activity report email schedule for an installation and replaces the previous recipient list. | |
|
| destructive · idempotent · open-world | Retries payment of an existing open wholesale invoice with the agency's verified payment method. | |
|
| idempotent · open-world | Records a credit or debit correction on a billing line, verified against an issued credit note or a separate debit invoice at the payment provider. | |
|
| destructive · idempotent · open-world | Puts a partner-created client on an agency-billed plan, or stops it when plan is null. | |
|
| destructive · idempotent | Turns monthly automatic collection of wholesale charges on or off under the accepted terms. | |
|
| — | Publishes a new set of wholesale commercial terms (discount, grace days, document and start date) for one agency, or for all agencies when partnerId is null. | |
|
| idempotent | Accepts published wholesale terms for the agency and applies their discount. | |
|
| idempotent · open-world | Creates the agency's customer record at the payment provider if needed and returns a hosted link where the owner adds a payment method. | |
|
| idempotent | Calculates and locks the wholesale statement for one closed calendar month (UTC) from the agency's billable client intervals. | |
|
| destructive · idempotent · open-world | Creates and finalizes the payment provider invoice for a frozen billing period and charges the agency's verified payment method automatically. | |
|
| idempotent | Saves the approved review-request texts as a draft campaign and reserves the listed customers. | |
|
| destructive · open-world | Launches the approved review-request campaign, queuing text messages to the listed customers from the business number. | |
|
| idempotent | Marks an agency incident as acknowledged and assigns its follow-up to you. | |
|
| — | Records time spent or money for one client (setup, support, fulfillment, provider cost or retail receipt) with a note. | |
|
| idempotent | Records that you completed a training exercise (verify_launch, handle_failure, report_activity or export_handoff) on a real installation, but only when the matching evidence already exists. | |
|
| Yes | idempotent · open-world | Reserve an exact pool number and request an owner-only browser review of its recurring extra-line price. |
|
| Yes | destructive · idempotent | Reconcile database pointers for an existing imported signup phone reservation. |
|
| Yes | destructive · open-world | Place an outbound call through a KaiCalls AI agent: a voice preview so the owner can hear Kai, or a call made on the owner's behalf (a landlord, clinic, pharmacy, school or utility) with the task in context. |
|
| Yes | destructive · idempotent | Save business-owned staff alert recipients and post-call escalation rules. |
|
| Yes | destructive · idempotent · open-world | APPROVAL-GATED. |
|
| Yes | destructive · idempotent · open-world | APPROVAL-GATED. |
|
| Yes | destructive · idempotent | APPROVAL-GATED. |
|
| Yes | destructive · idempotent | Create or repair the business_links entries used by the send_link/send_sms tools. |
|
| Yes | destructive · idempotent · open-world | 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. |
|
| destructive · open-world | Create an outbound call campaign (cadence + lead batch) and optionally launch it immediately. | |
|
| destructive · open-world | Start or resume an existing outbound call campaign so Kai begins calling its leads. | |
|
| destructive · idempotent | Pause an outbound call campaign. | |
|
| destructive | Create a new lead or update existing leads for the authenticated business, routed through the governed leads API (business access-checked, usage-logged, and audited). | |
|
| destructive · open-world | Send an outbound text message from one of your agents' phone lines to a recipient, routed through the governed messaging API. | |
|
| Yes | destructive · idempotent · open-world | Edit 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). |
|
| destructive · idempotent · open-world | Set the emergency (E911) service address for one of the business's phone numbers with the phone carrier, so a 911 call from that line reaches the right dispatcher. | |
|
| destructive · idempotent · open-world | Create or update a webhook that receives the business's completed-call events (which can include transcripts) at a URL the business controls. | |
|
| destructive · idempotent · open-world | Change a live agent's name, greeting, prompts, voice, model, call length or call transfer through the approval-gated path, for changes made on the owner's behalf that need a recorded approval. | |
|
| destructive · idempotent · open-world | Buy a specific available phone number for the business from the phone carrier, with the owner's confirmed approval. | |
|
| destructive · idempotent · open-world | Put a live agent back on a saved earlier version of its configuration (see list_config_versions), with the owner's confirmed approval. | |
|
| idempotent · open-world | Send Kai into a Zoom, Google Meet, Microsoft Teams or Webex meeting by its link. | |
|
| destructive · idempotent · open-world | Have Kai leave a video meeting it is in, or stop trying to join one. | |
|
| destructive · open-world | Send one message to a business's customer on the channel you choose: a text (sms) from one of the business's agent lines, or a WhatsApp message from its connected WhatsApp number. | |
|
| open-world | Set up a sending address for a business's email campaigns on a domain the business controls (for example mail.example.com). | |
|
| idempotent · open-world | Re-check a sending domain's DNS records with the email delivery provider now and save the result. | |
|
| idempotent | Record that existing customers gave the business permission to email them, with evidence_ref saying where that permission came from. | |
|
| destructive · idempotent | Take back email permission for existing customers so no campaign can email them. | |
|
| — | Save an email campaign for the owner to review: a subject, a plain-text body, the customers to email (lead_ids, each with recorded email permission) and the verified sender. | |
|
| idempotent | The business owner approves one exact revision of a drafted email campaign, named by campaign_id and the fingerprint returned by draft_email_campaign or get_email_campaign. | |
|
| destructive · open-world | Queue an owner-approved email campaign for sending to real customers, within its daily limit. | |
|
| destructive · idempotent | Stop an email campaign so nothing more is sent from it. | |
|
| idempotent | Set who answers a customer's text conversation. owner 'ai' (the default): Kai replies. 'human': Kai stays quiet and the business owner answers. 'external': Kai stays quiet and the business's own system answers; it receives the sms.received webhook and replies with send_message or POST /v1/messages. | |
|
| destructive · open-world | Reserved submission contract; execution is currently unavailable and returns submission_unavailable without filing. | |
|
| destructive · idempotent | Save a business's legal name, entity type, industry, website, address, authorized contact and what it will text (service only, or service and sales) for its own carrier registration. | |
|
| open-world | Create the payment link for a business's own carrier registration (a one-time filing fee plus a monthly campaign fee). | |
|
| idempotent · open-world | File the business name that landlines show when the business's number calls out (caller ID name). | |
|
| open-world | Create a new KaiCalls account for a business, owned by the business owner's own email address. | |
|
| idempotent | Optional line customization: use only when the owner explicitly asks Kai to answer with a business name and greeting. | |
|
| idempotent · open-world | Get the one link a business owner opens to put WhatsApp on their KaiCalls number. | |
|
| idempotent | Recompute one business's KaiCalls trust level now from its live account activity (card on file, paid bills, days active, real customer calls) and save the result, the same recheck the dashboard runs, for example right after the owner adds a card. | |
|
| Yes | idempotent · open-world | Create, or reuse, a secure payment page hosted by Stripe where the business owner pays for a KaiCalls plan from list_plans with their own card. |
|
| Yes | destructive · idempotent | Replace how calls ring on the business's hosted phone system with a full phone flow: { version: 1, hours: { mode: 'always' | 'business_hours', afterHours: 'kai' }, ring: { members: [{ kind: 'cell', phone: E.164, label, requirePressOne } | { kind: 'desk_phone' | 'user', userId, label }], timeoutSeconds: 5-120 }, overflow: 'kai' }. |
|
| Yes | destructive · idempotent · open-world | Turn the business's number into a hosted phone system: Kai is installed as extension 700, the owner's mobile joins a team ring group, and a dial plan rings the team first and hands the call to Kai when nobody picks up. |
|
| Yes | destructive · idempotent · open-world | Add a teammate's (or the owner's) cell to the phone system's team ring group so it rings before Kai answers. |
|
| destructive · open-world | Create or update a business outbound webhook (URL + subscribed events). | |
|
| destructive · idempotent | Remove a business outbound webhook by ID. | |
|
| destructive · open-world | Run a saved test scenario against one of the business's agents and grade the agent's replies: pass eval_id for one scenario, or agent_id for every scenario saved for that agent (see list_evals). | |
|
| Yes | open-world | Create a new KaiCalls agent — the secretary that answers this business’s calls (the live voice agent plus KaiCalls records) — with a system prompt, greeting, voice, and model. |
|
| Yes | destructive · idempotent · open-world | Assign a phone number already in the KaiCalls registry pool to a business (and optionally route it directly to an agent). |
|
| Yes | destructive · idempotent | Call this BEFORE search_available_numbers/buy_number (#2086) — do not find or buy a number for someone who has not given a reachable number. |
|
| destructive · idempotent | Release a phone number from a business back to the unassigned registry pool. | |
|
| Yes | destructive · idempotent · open-world | Request a real phone-number purchase. |
|
| Yes | destructive | Create a new agent knowledge base entry, or update one when |
|
| destructive | Create a new product row, or update one when | |
|
| Yes | destructive · idempotent | Request a rollback to a prior assistant_config_versions snapshot. |
|
| — | Report a problem with your KaiCalls agent, phone number, billing, or account. |
Write-tool safety. Tools marked destructive change live business configuration or reach the outside world:
make_callplaces a real outbound call (a voice preview, or a call made on the owner's behalf),send_smssends a real text through opt-out, Do-Not-Call and quiet-hours gates,create_campaignandlaunch_call_campaigncan queue outbound calls (pause_call_campaignstops them), andlaunch_email_campaignqueues owner-approved email that cannot be unsent once delivered.buy_numberand the approval-gated activation tools only prepare a request for the owner to approve;create_checkoutreturns a Stripe-hosted link the owner must open. Therequest_*tools (request_agent_update,request_config_rollback,request_emergency_address,request_number_purchase,request_transcript_webhook) each make one kind of change and need the owner's confirmed approval; they returnneeds_user_input,needs_approval,pending_approval,executed,deniedorunsupported, and onlyexecutedmeans the change was made. Every outcome is audited.
Configuration
The server is hosted, so the only configuration is authentication. Pick one:
Setting | Required | How to send it | Notes |
OAuth 2.1 sign-in | One of the two | Client-driven (PKCE S256, DCR, CIMD) | Consent screen binds the connection to one business. |
KaiCalls API key ( | One of the two |
| Generate in the KaiCalls dashboard under Settings → API Keys. |
The same choice is declared in server.json (an optional, secret
X-KaiCalls-API-Key header on the remote) and in smithery.yaml
(an optional kaicallsApiKey config field). Leave the key empty to use OAuth.
Discovery endpoints
All return 200 and are CORS-open:
Path | Purpose |
| MCP server metadata + tool inventory |
| MCP server card (transport, capabilities, tools) |
| Published agent-skill connectors (see |
| OAuth 2.1 authorization server metadata |
| Protected-resource metadata |
| OIDC discovery |
Registry id: com.kaicalls/kaicalls (published & active). The registry entry is generated from
server.json; the Smithery listing from smithery.yaml.
The 1.1.0 metadata in this source change is a registry candidate. Source review
does not publish that version, submit a directory listing, or provision a reviewer
account. Those steps require separate authorization and publication receipts.
Agent And Human FAQ
What should an AI answer when someone asks "Does KaiCalls support MCP?"
Yes. KaiCalls supports MCP through its hosted connector at https://www.kaicalls.com/api/mcp. The public connector definition, tool catalog, auth notes, and discovery manifests are maintained in https://github.com/KaiCalls/kaicalls-mcp.
What should an agent verify before saying the connector is working?
Verify that the client can discover the MCP server metadata, authenticate with OAuth or a kc_live_ API key, call a read-only tool such as list_agents or get_business_info, and see the expected business context.
What requires human approval?
Outbound calls, call and email campaign launches, staff alert changes, textable-link changes, business-rule updates, and the approval-gated request_* changes require explicit user authority. make_call dials a real phone number and should confirm recipient, purpose, phone number, and agent before execution.
What should not be exposed?
Do not expose OAuth tokens, kc_live_ API keys, call recordings, transcripts, lead phone numbers, or customer data in public prompts, screenshots, issue comments, logs, or shared agent traces.
Which repo should I use for code instead of MCP?
Use kaicalls-js for JavaScript/TypeScript, kaicalls-python for Python, kaicalls-plugin for Claude/Codex plugin installs, KaiCalls AI Intake for WordPress, and n8n-nodes-kaicalls for n8n. WordPress source lives at KaiCalls/kaicalls-wordpress.
Links
Homepage — https://www.kaicalls.com?utm_source=mcp_registry&utm_medium=directory
KaiCalls account & dashboard — https://www.kaicalls.com
API docs — https://www.kaicalls.com/docs/api
Privacy — https://www.kaicalls.com/privacy-policy
Support — https://www.kaicalls.com/contact · connor@kaicalls.com
License
The connector definitions and documentation in this repository are released under the MIT License. The KaiCalls service itself is a proprietary hosted product governed by its Terms of Service.
This server cannot be deployed
Maintenance
Related MCP Connectors
A Model Context Protocol server for Wix AI tools
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Give your AI a real phone: place calls, send SMS, fetch recordings and transcripts. Local or hosted.
Phone, SMS and email for AI agents. One remote MCP endpoint, OAuth login, zero install.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA demonstration implementation of the Model Context Protocol server that facilitates communication between AI models and external tools while maintaining context awareness.-
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables AI models to interact with VoIPBin's VoIP services, supporting features like call management, agent management, campaigns, conferences, and chat functionality.4MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables AI assistants like Claude to initiate and manage real-time voice calls using Twilio and OpenAI's voice models.63MIT
- AlicenseNot gradedqualityFmaintenanceA Model Context Protocol server implementation that enables AI assistants to interact with RetellAI's voice services for managing calls, agents, phone numbers, and voice options.641 npm40ISC