MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Code & DevOps

KaiCalls

A phone number for your business or your AI agent. Kai answers it and calls businesses for you.

Checks passed
15 / 22

0 failed · 7 not measured

Median response
710 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
37

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Responded

The server completed its last measured handshake. This is an observation, not a guarantee.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
500
Reliability & speedDoes it respond consistently and quickly?
103
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
400
Publisher identityCan the publisher be traced to its source?
402

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 825 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-06-18, serverInfo.name kaicalls-mcp-acquisition.

  • Pass
    Lists tools

    tools/list returned 37 tools.

  • Pass
    Current protocol

    Negotiated 2025-06-18. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 710 ms over 2 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 814 ms over 2 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    2 of 2 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Pass
    Stable tool list

    No tool was removed and no required parameter was added in the last 30 days.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Pass
    Parameters documented

    140 of 175 parameters have a description (80%). The bar is 80%.

  • Pass
    Safety hints

    Every tool sets readOnlyHint or destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Pass
    Website matches publisher

    The website host matches the reverse-domain namespace.

  • Pass
    Source repo linked

    A repository URL is on file.

  • Not measured
    Repo owner matches

    This namespace is not an io.github login, so the owner comparison does not apply.

  • Pass
    Recently updated

    Updated 2026-10-29T20:17:12.004971Z, within 180 days.

  • Not measured
    Open-source licence

    The GitHub licence lookup has not returned an OSI result yet.

Start using KaiCalls

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http kaicalls https://www.kaicalls.com/api/mcp/acquisition

Capabilities

Tools 37

add_team_phone

Add a teammate's (or the owner's) cell to the phones that ring before Kai answers. Idempotent — a cell already listed is reported as already included. Owners and admins are also registered on the admin roster, so calling the business line from that cell reaches the admin secretary; a member only rings. The business's own forwarded-from office line is refused (forwarding_loop) because ringing it would bounce the call straight back. Requires the phone system to be set up first (set_up_phone_system). Mirrors POST /api/v1/phone-system action=add_ring_group_member.

Discovered
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; search_available_numbers and buy_number handle purchases. Mirrors POST /api/v1/phone-numbers.

Discovered
buy_number

Request a real phone-number purchase. This is APPROVAL-GATED: the carrier bills immediately on execution, so the tool only prepares a request for authenticated owner review. Caller-supplied human_confirmed, dashboard_session, or system_policy fields never authorize execution. Returns the stored request and a review URL for the owner; while approval is pending, no number has been purchased. Existing entitlement and carrier reservation checks still apply. Mirrors POST /api/v1/phone-numbers/purchase via numbers.purchase. In the acquisition flow this follows set_owner_phone, which saves a reachable owner number or records a decline.

Discovered
choose_customer_route

APPROVAL-GATED. After private-test proof is complete, save forwarding, published_number, both, or testing. This unlocks the command center but does not claim customer coverage; selected customer routes remain pending until independently verified. Forwarding is optional; testing keeps the existing private-test result without connecting a customer route.

Discovered
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. It covers cross-business handoffs, callback language, alert promises, and client-specific operating rules, and leaves the rest of the prompt unchanged.

Discovered
configure_staff_alerts

Save business-owned staff alert recipients and post-call escalation rules. Saving settings does not prove provider delivery or owner receipt; activation notification proof is tracked separately.

Discovered
configure_textable_links

Create or repair the business_links entries used by the send_link/send_sms tools. These entries let callers receive booking, directions, cancellation, sister-location, or service-specific links by text without raw URLs in the voice prompt.

Discovered
confirm_notification_destination

APPROVAL-GATED. Save the owner-approved phone number (SMS) or email address where KaiCalls sends the owner the result of their first test call, for the exact active activation session. Once that test call's record is ready, KaiCalls sends a real text or email to that destination through its messaging provider; saving the destination alone is not proof anything was delivered. Replaces any destination saved earlier for the session.

Discovered
create_agent

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. Mirrors POST /api/v1/agents. Every subsequent mutation to this agent is versioned (assistant_config_versions) and reversible via rollback_config — history is listed by 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.

Discovered
create_checkout

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. Needs business_id, plan_id and an idempotency_key: retrying with the same key returns the same page, and choosing a different plan needs a new key. This tool charges nothing; only the owner can pay, by opening the page themselves. It never proves payment or that the phone line is live: get_checkout_status reports payment for the returned session_id.

Discovered
get_activation_status

Read current call readiness and persisted private-test proof for one accessible business. Only a currently entitled owner with a coherent assigned number gets the existing private-test setup link. Missing entitlement, incomplete setup or stale sessions do not authorize a call. It cannot assert or advance proof. A completed private test is separate from customer-route coverage; forwarding is optional and does not define whether the assigned phone works.

Discovered
get_business_info

Read back what a business already has: profile details, how many agents are configured, and recent call volume. This shows whether a business number that answers missed calls already exists. When the business has no working phone line yet, `next_step` names the tool that sets one up.

Discovered
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.

Discovered
get_checkout_status

Read a Stripe-verified subscription checkout receipt for a business you own. Requires business_id and session_id from checkout. Confirmed billing does not prove agent, number, or call activation; get_activation_status reports setup proof. This tool never creates checkout or retries provisioning.

Discovered
get_extra_number_status

Read an owner-authorized extra-number request. Billing, assignment and live activation are distinct. Unknown checkout or provider outcomes retain the original request and number, so no replacement purchase is needed or started.

Discovered
get_operational_settings

Read the business-level operational setup of a live account: staff alert recipients, SMS/email alert flags, escalation rules, textable send-link entries, and assigned agent voice/model/greeting metadata.

Discovered
get_phone_flow

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. Reconciled from the phone system on every call. Mirrors POST /api/v1/phone-system action=get_flow. Returns 409 when the hosted phone system is not set up for this business.

Discovered
get_phone_system_status

Read saved phone-system configuration: extension, resource IDs (never secrets), assigned line, and agreement. phone_system_configuration.configuration_allows_calls means provisioned resources plus a permitting agreement only; it does not verify calls can connect. ready_for_calls is null because operational availability is unknown. private_test_readiness uses the existing owner-private call setup authority only with agents:read; otherwise not_checked. Customer coverage and outbound call permission remain not_checked. This read differs from the shared phone-system API configuration flag and changes nothing.

Discovered
get_setup_recovery_status

Read an owner-authorized setup recovery request by its business and idempotency key. Running requests are never automatically stolen, including stale requests. A ready receipt does not prove live activation.

Discovered
get_usage

List recent API usage events (endpoint, method, status code, cost) for the caller's account. Mirrors GET /api/v1/usage.

Discovered
list_agents

List the KaiCalls agents on the authenticated account. Shows whether this business already has a secretary answering its calls.

Discovered
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.

Discovered
list_knowledge

List agent knowledge base entries for a business. Mirrors GET /api/v1/knowledge.

Discovered
list_numbers

List phone numbers assigned to the accessible business(es), with capability and compliance flags. Assignment does not prove a successful inbound test or customer coverage. get_activation_status reports current readiness and private-test proof. Forwarding is an optional customer route. Mirrors GET /api/v1/numbers.

Discovered
list_plans

Read the canonical public KaiCalls plan catalog, monthly USD prices and allowances. Does not select a plan, create checkout, or change billing.

Discovered
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.

Discovered
make_call

Place an outbound call through a KaiCalls AI agent: call back a customer who previously called this business, give the owner a voice preview, or call on the owner's behalf (a landlord, clinic, pharmacy, school or utility) with the task in context. For a customer callback, pass the existing lead_id and callback goal in context. Kai verifies the business's inbound-call consent for the exact destination; a verified callback can go directly to a cell phone without connecting the owner. Contact existence alone is not callback permission, and opt-outs still block calls. A call never proves inbound routing or advances activation. report_language sets the language the result is reported in, and Kai then confirms exact details for that reader; Kai speaks call_language (English by default) on the phone. A new account's first call to a US or Canada business line is free; after that the account needs a plan. Kai calls businesses, not personal cell phones, on a free call. For a business that answers on a cell phone, connect_me has Kai ring the person's own saved phone and connect them, so they do the talking. An idempotency_key makes the request safely retryable.

Discovered
request_extra_number

Reserve an exact pool number and request an owner-only browser review of its recurring extra-line price. Requires numbers:write and billing:write. It never charges included or prepaid capacity; included allocation goes through attach_number. This tool does not approve payment or prove activation.

Discovered
retry_activation_notification

APPROVAL-GATED. Send the owner's activation notification again, as a real text or email through KaiCalls' messaging provider, for the exact active activation session. Only retries a channel whose last attempt failed or has waited long enough; an attempt whose outcome is unknown is never blindly resent. Requires a new idempotency_key.

Discovered
retry_setup

Reconcile database pointers for an existing imported signup phone reservation. Owner-only, entitlement-checked, single-flight and idempotent. Never creates agents, buys numbers, changes provider routing or sends messages. PBX, missing imports, and stale claims return review blockers. Reusing the same key reads or replays the outcome; a failed request is held for review before a new key is accepted. Ready means database agreement, not activation.

Discovered
rollback_config

Request a rollback to a prior assistant_config_versions snapshot. This changes live greeting, voice, prompt and model settings. When the business owner or an admin is signed in through this connector, the rollback applies immediately; otherwise authenticated owner review of the exact stored request is required (the owner is notified with a review link). Caller-supplied authority fields never authorize execution. Targets are listed by list_config_versions and get_change_history; a pending request returns its review URL for the owner. The agent.config.rollback executor preserves version recording and secret exclusion after trusted approval.

Discovered
search_available_numbers

Search the carrier for phone numbers available to purchase (live number inventory). Mirrors GET /api/v1/phone-numbers/search. In the acquisition flow this follows set_owner_phone, which saves a reachable owner number or records a decline.

Discovered
set_owner_phone

Saves the owner's own mobile number on the business record (the number Kai texts whenever it takes a call for the owner) so Kai can ring it first and so activation/forwarding follow-ups can reach a human — connecting a number alone does not prove the owner can be reached. In the acquisition flow this step comes before search_available_numbers and buy_number (#2086). US numbers only; normalized to E.164 and rejected if it cannot be validated as a US mobile/landline number. When ring_first is true (default), also configures ring-first routing so calls hit this cell before overflowing to the secretary — the same path used at signup. declined=true, in place of owner_phone, records a caller who declines to give a number as an inquiry: a KaiCalls lead, with no provisioned business or number.

Discovered
set_up_phone_system

Turn the business's number into a hosted phone system: Kai is installed as extension 700, the owner's mobile joins the list of phones to ring first, and calls reach Kai when nobody picks up. Idempotent and resumable — a re-run reuses everything already created and reports it under `reused`. Needs a complete US street address on file (the emergency-services and tax location) and the owner's mobile: when either is missing the tool fails with `code` missing_address or missing_owner_mobile plus `required_field` and `next_action` naming exactly what is missing, which business_address or owner_mobile accepts. Returns the status shape (existing setup IDs, extension and the phone-system line) and `next_step`, the owner's next action in one line (forward your line here / dial 700 from any office phone). Mirrors POST /api/v1/phone-system action=provision.

Discovered
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: get_change_history and list_config_versions list what changed, and rollback_config undoes it. Mutating changes need an idempotency_key. When the business owner or an admin is signed in through this connector, their own changes apply immediately. High-impact live changes made with an API key or on someone else's behalf queue for the owner's review instead (the owner is notified with a review link). configure_agent_business_rules edits a single named operational-rules section.

Discovered
update_phone_flow

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' }. Applied idempotently (only real differences are written); every member passes the forwarding-loop guard; business_hours mode derives the schedule from the business hours already on file. Because it replaces the whole flow, the input is the full flow as get_phone_flow returns it, with changes applied. Mirrors POST /api/v1/phone-system action=save_flow.

Discovered
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.

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected825 ms37
Connected595 ms37