Connect KaiCalls to Claude, ChatGPT, Grok, Manus & every MCP client
KaiCalls exposes a remote Model Context Protocol (MCP) server at https://www.kaicalls.com/api/mcp. Install the published KaiCalls app in ChatGPT, or add the URL as a custom connector in Claude, Grok, Manus, Gemini, Perplexity, Mistral, Cursor, VS Code / GitHub Copilot, Windsurf, and any other MCP-capable client — the assistant can then read your calls, transcripts, leads, and voicemails, and manage your KaiCalls account on your behalf.
At a glance
- MCP server URL
- https://www.kaicalls.com/api/mcp
- ChatGPT app
- KaiCalls in the ChatGPT app directory (published, no setup needed)
- Transport
- Streamable HTTP (POST JSON-RPC 2.0)
- Auth
- OAuth 2.1 (authorization code + PKCE
S256, refresh tokens, Dynamic Client Registration) for hosted chat clients; or a KaiCalls API key (kc_live_…) Bearer token for developer/CLI clients. - Scopes
calls:read,calls:write,agents:read- Discovery
/.well-known/mcp.json,/.well-known/mcp/server-card.json,/.well-known/oauth-protected-resource
Get an API key (for Bearer-token clients) from the dashboard. For OAuth-based clients you approve the KaiCalls consent screen during setup — no key to paste.
For a no-OAuth MCP setup, create a key with agents:read and calls:read. Add calls:write only for trusted clients that should be allowed to place real outbound calls.
Direct MCP clients can send the key as Authorization: Bearer kc_live_.... Gateways that collect API keys separately can send the same key as X-KaiCalls-API-Key: kc_live_....
Public code
The public SDK, plugin, WordPress source, n8n, and MCP connector repos live under the KaiCalls GitHub organization. The approved WordPress plugin installs from WordPress.org. The private product repository stays private; these repos contain the code and metadata intended for developers, answer engines, and connector directories.
Available tools
Every client below exposes the same tool inventory. Read-only tools are safe to enable broadly; make_call places real outbound phone calls, so treat it as a write / external-effect action and enable it deliberately.
| Tool | Description | Scope | Type |
|---|---|---|---|
| make_call | 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. | calls:write | Write / external effect |
| check_call_status | Check the status of a call by its ID | calls:read | Read-only |
| list_recent_calls | List recent calls for the authenticated business | calls:read | Read-only |
| get_transcript | Get the transcript and summary of a completed call | calls:read | Read-only |
| get_call_recording | Get the real call recording URL for a call so reviewers can listen to the voice/audio instead of relying only on the transcript. | calls:read | Read-only |
| list_agents | List KaiCalls agents available to the authenticated account | agents:read | Read-only |
| get_business_info | Get business information, agent count, and recent call stats | agents:read | Read-only |
| get_operational_settings | 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. | agents:read | Read-only |
| configure_staff_alerts | 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. | agents:write | Write / external effect |
| configure_textable_links | 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. | agents:write | Write / external effect |
| configure_agent_business_rules | 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. | agents:write | Write / external effect |
| list_leads | List leads for the authenticated business, with optional status/source/agent filters. Includes the latest AI lead score when available. | calls:read | Read-only |
| get_lead | Get full details for a single lead by ID, including the latest AI lead score and explanation. | calls:read | Read-only |
| list_voicemails | List recent voicemails for the authenticated business, including transcripts and recording URLs. | calls:read | Read-only |
| list_sms_messages | List recent SMS messages for the authenticated business. Filter by conversation or direction (inbound/outbound). | calls:read | Read-only |
| list_campaigns | List outbound call campaigns for the authenticated business. | calls:read | Read-only |
| create_campaign | 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. | calls:write | Write / external effect |
| list_workflow_templates | 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. | calls:read | Read-only |
| get_analytics | 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. | calls:read | Read-only |
| upsert_lead | 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). 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. | leads:write | Write / external effect |
| send_sms | Send 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. | sms:write | Write / external effect |
| update_agent_config | 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). 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. | agents:write | Write / external effect |
| request_kaicalls_update | 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. | Write / external effect | |
| get_usage | List recent API usage events (endpoint, method, status code, cost) for the caller's account. Mirrors GET /api/v1/usage. | Read-only | |
| get_balance | Get per-business minutes-used and subscription status across every business the caller can access. Mirrors GET /api/v1/balance. | Read-only | |
| list_numbers | List phone numbers owned by the accessible business(es), with capability and compliance flags. Mirrors GET /api/v1/numbers. | numbers:read | Read-only |
| list_conversations | List SMS conversation threads (counterparty timeline metadata) for the authenticated business, most recent first. Mirrors GET /api/v1/sms/conversations. | sms:read | Read-only |
| get_conversation | Get a single SMS conversation thread by ID. Mirrors GET /api/v1/sms/conversations?id=. | sms:read | Read-only |
| get_webhook | List the configured outbound webhook(s) for a business, including supported event types. Mirrors GET /api/v1/webhooks. | webhooks:read | Read-only |
| set_webhook | Create or update a business outbound webhook (URL + subscribed events). Returns a webhook secret on first creation only. Mirrors POST /api/v1/webhooks. | webhooks:write | Write / external effect |
| delete_webhook | Remove a business outbound webhook by ID. Mirrors DELETE /api/v1/webhooks. | webhooks:write | Write / external effect |
| list_evals | List canned mock-conversation eval scenarios for an agent (or all accessible agents). Mirrors GET /api/v1/evals. | evals:read | Read-only |
| run_eval | Run 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. | evals:write | Write / external effect |
| list_voices | 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. | agents:read | Read-only |
| create_agent | 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. | agents:write | Write / external effect |
| attach_number | 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. | numbers:write | Write / external effect |
| detach_number | Release a phone number from a business back to the unassigned registry pool. Mirrors DELETE /api/v1/phone-numbers. | numbers:write | Write / external effect |
| search_available_numbers | Search the carrier for phone numbers available to purchase (real-time Twilio inventory lookup). Mirrors GET /api/v1/phone-numbers/search. | numbers:read | Read-only |
| buy_number | 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. | numbers:write | Write / external effect |
| list_knowledge | List agent knowledge base entries for a business. Mirrors GET /api/v1/knowledge. | knowledge:read | Read-only |
| upsert_knowledge | Create 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. | knowledge:write | Write / external effect |
| list_products | List a business's agent product catalog. Mirrors GET /api/v1/products. | products:read | Read-only |
| upsert_product | Create 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. | products:write | Write / external effect |
| list_config_versions | 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. | agents:read | Read-only |
| get_change_history | 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. | agents:read | Read-only |
| rollback_config | Roll 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. | agents:write | Write / external effect |
| list_observability_events | 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. | events:read | Read-only |
| list_tool_execution_logs | 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". | events:read | Read-only |
| list_subscription_history | 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. | billing:read | Read-only |
| list_overage_charges | 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. | billing:read | Read-only |
| list_rightsize_recommendations | 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. | billing:read | Read-only |
Using the tools well
Recommended first read-only flow
Start with get_business_info, then list_agents, then list_recent_calls. Use returned IDs for check_call_status and get_transcript.
Structured results
Tool definitions advertise outputSchema, and tool responses include human-readable text plus machine-readable structuredContent containing stable fields such as call IDs, agent IDs, status, counts, pagination metadata, and error details. tools/list is public metadata for clients and directories; tools/call enforces authentication and scope checks before returning account data or taking action.
Pagination
list_recent_calls and list_agents accept limit and offset. If structuredContent.has_more is true, call the same tool again with offset set to structuredContent.next_offset.
Outbound calls
make_call places a real phone call. Clients should ask for explicit user confirmation, show the destination number and agent, and only call it with a token that has calls:write.
Claude (Claude.ai & Desktop)
- Open Settings → Connectors → Add custom connector.
- Paste the MCP server URL:
https://www.kaicalls.com/api/mcp. - Approve the KaiCalls OAuth consent screen when Claude opens it.
- Enable the tools you want. To start safely, enable read-only tools first and add
make_callonce you're ready to place calls.
On Team and Enterprise plans, an organization owner adds the connector first under Organization settings → Connectors; members then connect it from their own Connectors settings. Claude connects from Anthropic's cloud, so the KaiCalls server being publicly reachable is already taken care of.
For Claude Code, install the same remote server from a terminal:
bashclaude mcp add --transport http --scope user kaicalls https://www.kaicalls.com/api/mcp claude mcp list
If Claude Code shows kaicalls - Needs authentication, start an interactive Claude Code session, run /mcp, select kaicalls, and choose authenticate. That opens the KaiCalls OAuth flow and stores the token in Claude.
To skip OAuth and use a static KaiCalls API key instead, pass the Bearer header when you add the server:
bashclaude mcp add --transport http --scope user kaicalls-api https://www.kaicalls.com/api/mcp \ -H "Authorization: Bearer kc_live_xxxxx" claude mcp list
A read-only key should use agents:read and calls:read. Include calls:write only if Claude Code should be able to use make_call.
Claude's OAuth callback (claude.ai/api/mcp/auth_callback) is already allowlisted by the KaiCalls authorization server.
ChatGPT (published app or Developer Mode)
Option 1 — Install the KaiCalls app (recommended, all plans)
KaiCalls is a published, OpenAI-approved app in the ChatGPT directory. This is the fastest path — no developer settings required, and it works on every ChatGPT plan, including Free.
- Open the KaiCalls app listing in ChatGPT (or search for "KaiCalls" in the ChatGPT app directory).
- Click Connect and sign in with your KaiCalls account.
- Approve the permissions and pick the business to connect. Then just ask — "List my recent calls" — or @-mention KaiCalls in a conversation.
On ChatGPT Business, Enterprise, and Edu workspaces an admin must enable the app first under Workspace settings → Apps.
Option 2 — Add the MCP server in Developer mode (paid plans)
- Enable Settings → Security and login → Developer mode (also reachable via the connectors/apps settings under Advanced).
- Add a connector with the MCP server URL
https://www.kaicalls.com/api/mcp. - Complete the OAuth sign-in flow with your KaiCalls account.
ChatGPT requires OAuth (it does not accept pasted API keys). The ChatGPT connector callback pattern is allowlisted on the KaiCalls authorization server. Write actions — like placing an outbound call — always ask for confirmation before running.
VS Code & GitHub Copilot
Add an entry to .vscode/mcp.json (workspace) or your user settings:
json{ "servers": { "kaicalls": { "type": "http", "url": "https://www.kaicalls.com/api/mcp" } } }
VS Code triggers the OAuth flow on first use. For non-interactive setups, pass a Bearer token instead via a headers entry ("Authorization": "Bearer kc_live_…").
Cursor
Add KaiCalls to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):
json{ "mcpServers": { "kaicalls": { "url": "https://www.kaicalls.com/api/mcp" } } }
Cursor handles the OAuth handshake automatically. You can also add an "headers": { "Authorization": "Bearer kc_live_…" } block to use a static API key.
Windsurf
Add KaiCalls to ~/.codeium/windsurf/mcp_config.json:
json{ "mcpServers": { "kaicalls": { "serverUrl": "https://www.kaicalls.com/api/mcp" } } }
Reload Cascade's MCP servers, then authorize KaiCalls when prompted.
Mistral Le Chat
- A workspace admin opens Settings → Connectors → Add MCP connector.
- Enter the server URL
https://www.kaicalls.com/api/mcp. Le Chat auto-detects the transport and OAuth. - Complete the OAuth flow and share the connector with your team as needed.
xAI Grok
- Go to grok.com/connectors and click New Connector, then select Custom.
- Enter the MCP server URL
https://www.kaicalls.com/api/mcp. - Complete the authentication step — OAuth sign-in with your KaiCalls account, or a Bearer header
Authorization: Bearer kc_live_…. - Grok discovers the KaiCalls tools automatically. Allowlist the ones you want (start with read-only tools).
Grok connects from xAI's cloud; the KaiCalls MCP server is already publicly reachable over HTTPS, so no tunneling is needed. Grok Business / Enterprise admins can manage connectors org-wide from the same connector management surface.
Manus
- Create a KaiCalls API key in the dashboard (Settings → API Keys). For a safe start, scope it to
agents:readandcalls:read. - In Manus, open Settings → Integrations → Custom MCP Servers → Add Server.
- Enter a server name (e.g. KaiCalls), the server URL
https://www.kaicalls.com/api/mcp, and your API key (kc_live_…) as the Bearer token. - Manus tests the connection and lists the KaiCalls tools alongside its built-in integrations. Try "List my recent KaiCalls calls" to confirm.
Add calls:write to the key only if Manus should be able to place real outbound calls with make_call.
Google Gemini (app & CLI)
In the consumer Gemini app, custom MCP connectors are available inside Gemini Spark: open Settings & help → Connected Apps on gemini.google.com and paste https://www.kaicalls.com/api/mcp into Add a custom app link (personal Google accounts, web-first; then available on mobile too).
For the Gemini CLI, add the server from a terminal:
bashgemini mcp add --transport http kaicalls https://www.kaicalls.com/api/mcp \ --header "Authorization: Bearer kc_live_xxxxx"
Omit the header to use OAuth instead — the CLI discovers the KaiCalls authorization server automatically on the first 401 and walks you through sign-in.
Perplexity
- Open Settings → Connectors → Add Connector → Custom MCP.
- Enter a name, the server URL
https://www.kaicalls.com/api/mcp, and the transport (Streamable HTTP). - Choose OAuth, an API key, or no auth, then complete sign-in.
Enterprise admins can share the connector org-wide; member-added connectors may be disabled by default.
Smithery
KaiCalls is listed on Smithery. Install from that listing or publish the remote server yourself with the canonical MCP URL.
For a self-managed Smithery deployment, add a config schema so Smithery prompts users for a KaiCalls API key and forwards it as a header:
bashsmithery mcp publish "https://www.kaicalls.com/api/mcp" -n @kaicalls/kaicalls \ --config-schema '{"type":"object","properties":{"kaiCallsApiKey":{"type":"string","title":"KaiCalls API Key","description":"Create a KaiCalls API key with agents:read and calls:read. Add calls:write only if this Smithery connection may place outbound calls.","x-from":{"header":"x-kaicalls-api-key"},"x-to":{"header":"X-KaiCalls-API-Key"}}},"required":["kaiCallsApiKey"]}'
Smithery can list the public tool catalog without credentials. Add the config schema above so users can save a KaiCalls API key for authenticated tools/call requests.
Developer clients (Z.ai, Hermes, OpenClaw)
KaiCalls also works with developer/agent runtimes that consume MCP servers. For Z.ai, reference it as an MCP tool source in a chat/completions request:
json{ "tools": [ { "type": "mcp", "server_label": "kaicalls", "server_url": "https://www.kaicalls.com/api/mcp", "transport_type": "streamable-http", "allowed_tools": ["list_recent_calls", "get_transcript"], "headers": { "Authorization": "Bearer kc_live_…" } } ] }
Hermes Agent (~/.hermes/config.yaml) and OpenClaw (openclaw mcp add kaicalls --url https://www.kaicalls.com/api/mcp) both accept the same URL with either an Authorization header or auth: oauth. Start with read-only tools and enable outbound/write tools explicitly.
Verify with MCP Inspector
Before wiring up a client, confirm the server with the official inspector:
bashnpx @modelcontextprotocol/inspector # Transport: Streamable HTTP # URL: https://www.kaicalls.com/api/mcp # tools/list works without auth; run OAuth or add an API key before tools/call
You can also confirm the advertised inventory with curl https://www.kaicalls.com/.well-known/mcp.json.
Troubleshooting first setup
Client says "Needs authentication"
The server URL is installed correctly, but the client has not completed OAuth yet. Open the client's MCP/connector manager and authenticate KaiCalls. In Claude Code, run /mcp inside an interactive session and choose KaiCalls.
OAuth opens, then shows no business
Sign in with a KaiCalls dashboard user that belongs to at least one business. The connector can only access businesses linked to that user.
Bearer token clients get 401
Use a KaiCalls API key that starts with kc_live_ and pass it as Authorization: Bearer kc_live_.... MCP gateways may pass the same key as X-KaiCalls-API-Key: kc_live_.... Pasting the key into the URL or using a dashboard session cookie will not work.
A tool returns "Missing required scope"
Recreate the API key or reconnect OAuth with the needed scope. Read-only setup needs agents:read and calls:read; outbound calls also need calls:write.
Frequently asked questions
What is the KaiCalls MCP server?
The KaiCalls MCP server is a remote Model Context Protocol endpoint at https://www.kaicalls.com/api/mcp. Adding it to an AI assistant such as Claude, ChatGPT, Grok, or Manus lets that assistant read your KaiCalls calls, leads, voicemails, and analytics, and — with your permission — place outbound calls or update your AI receptionist, all scoped to one business you approve.
How do I connect KaiCalls to ChatGPT?
The fastest way is the published KaiCalls app: open the KaiCalls listing in the ChatGPT app directory (chatgpt.com/plugins), click Connect, and sign in with your KaiCalls account. Alternatively, on a paid ChatGPT plan you can enable Developer mode and add https://www.kaicalls.com/api/mcp as a custom connector, then complete the same OAuth sign-in. ChatGPT uses OAuth — no API key to paste.
How do I connect KaiCalls to Claude?
In Claude (web or desktop), open Settings → Connectors → Add custom connector, paste https://www.kaicalls.com/api/mcp, and approve the KaiCalls sign-in screen. In Claude Code, run: claude mcp add --transport http kaicalls https://www.kaicalls.com/api/mcp and authenticate with /mcp. On Team and Enterprise plans an organization owner adds the connector first.
How do I connect KaiCalls to Grok?
Go to grok.com/connectors, click New Connector, choose Custom, and enter the KaiCalls MCP server URL https://www.kaicalls.com/api/mcp. Complete the sign-in when prompted — Grok supports OAuth or an API-key header. Grok then discovers the KaiCalls tools and makes them available in conversations.
How do I connect KaiCalls to Manus?
In Manus, open Settings → Integrations → Custom MCP Servers → Add Server. Enter a name (for example, KaiCalls), the server URL https://www.kaicalls.com/api/mcp, and a KaiCalls API key (kc_live_…) as the Bearer token. Create the key at kaicalls.com/dashboard/settings/api-keys. Manus tests the connection and lists the KaiCalls tools next to its built-in integrations.
Do I need an API key to connect?
Usually not. Hosted chat assistants (ChatGPT, Claude, Grok, Gemini, Mistral, Perplexity) sign in with OAuth — you approve a KaiCalls consent screen and pick a business, with no key to paste. Developer tools (Claude Code, Cursor, VS Code, Windsurf, Manus) can instead use a KaiCalls API key sent as Authorization: Bearer kc_live_…, created in the KaiCalls dashboard under Settings → API Keys.
What can a connected AI assistant access, and is it safe?
Each connection is scoped to exactly one business that you pick on the KaiCalls consent screen, with explicit permission scopes. Read-only tools (calls, transcripts, leads, voicemails, analytics) are separate from write tools; placing a real outbound call requires the calls:write scope and client-side confirmation. You can revoke a connection at any time from your KaiCalls account.
Which AI clients work with the KaiCalls MCP server?
Any client that supports remote MCP servers over streamable HTTP: ChatGPT (published app or Developer mode), Claude and Claude Code, xAI Grok, Manus, Google Gemini (Spark custom apps and the Gemini CLI), Perplexity, Mistral Le Chat, Microsoft Copilot Studio, VS Code and GitHub Copilot, Cursor, Windsurf, Smithery, and developer runtimes like Z.ai, Hermes, and OpenClaw.
Questions? Email support@kaicalls.com or see the Agent Discovery reference for the raw protocol details.