{"id":609882,"name":"CallMCP","description":"The agent communications interface on the KaiCalls stack: a real phone line for AI agents (calls in and out, SMS, meetings, approved email campaigns, webhooks) behind one MCP endpoint, with owner approval, consent, disclosure, idempotency and audit rails. A2A is in beta: per-business message/send only (text in and out, public business inquiries), no streaming, no task lifecycle. Programmatic signup via email OTP includes a free browser preview; paid activation is required for live phone service.","card_url":"https://callmcp.ai/.well-known/agent-card.json","endpoint":"https://www.kaicalls.com/api/mcp","protocol_version":"0.3.0","first_seen":"2026-11-12T23:00:37.978807+00:00","last_verified":"2026-11-13T06:31:41.279578+00:00","card":{"url":"https://callmcp.ai","name":"CallMCP","skills":[{"id":"phone-answering","name":"AI Phone Answering","description":"Answer inbound calls 24/7 with a customizable AI voice agent. Captures leads, books appointments, and transfers to humans when needed."},{"id":"lead-intake","name":"Lead Intake & Qualification","description":"Collect caller information, qualify leads by case type or service need, and push to CRM."},{"id":"appointment-booking","name":"Appointment Booking","description":"Book appointments via Google Calendar integration during calls."},{"id":"outbound-calls","name":"Outbound Calling","description":"Place outbound calls to leads with TCPA-compliant scheduling and follow-ups."},{"id":"sms-followup","name":"SMS Follow-Up","description":"Send automated SMS follow-ups after calls or missed calls."}],"pricing":{"model":"subscription","plans":[{"name":"Kai Backup","unit":"month","price":10,"custom":false,"minutes":48,"phoneNumbers":1,"answeredCalls":20},{"name":"Kai Line","unit":"month","price":79,"custom":false,"minutes":408,"phoneNumbers":1,"answeredCalls":170},{"name":"Kai Office","unit":"month","price":349,"custom":false,"minutes":1920,"phoneNumbers":1,"answeredCalls":800}],"overage":"There are no per-minute overage charges. Your plan includes an expected monthly call allowance. If your call volume stays higher, we recommend the next plan and notify you before anything changes. You can choose to keep your current plan, and we move you back down if volume drops.","preview":{"channel":"browser","activation":"A successful first subscription payment is required before a dedicated number, inbound calls, forwarding, SMS, or outbound calls are enabled.","verification":"email OTP","carrierAccess":false,"requiresPayment":false},"currency":"USD"},"version":"1.0","provider":{"url":"https://www.kaicalls.com","organization":"KaiCalls"},"endpoints":{"signup":{"url":"https://www.kaicalls.com/api/v1/signup","body":{"email":{"type":"string","required":true},"plan_id":{"type":"string","default":"backup","required":false,"description":"Payment-mode plan selection for paid carrier activation."},"website":{"type":"string","required":false},"otp_code":{"type":"string","required":false,"description":"Email verification code for OTP step 2."},"challenge_id":{"type":"string","required":false,"description":"Challenge returned by OTP step 1."},"business_name":{"type":"string","required":true},"business_type":{"type":"string","required":false},"activation_mode":{"enum":["otp","payment"],"type":"string","default":"otp","required":false},"phone_forward_to":{"type":"string","required":false}},"method":"POST","returns":{"status":"'otp_sent' with HTTP 200 awaits email verification. 'preview_ready' means the browser preview is available but carrier activation remains deferred. 'provisioning_failed' with HTTP 503 indicates incomplete account or preview setup. Payment-mode HTTP 200 is provisioning_deferred; no HTTP status alone proves completed carrier activation.","api_key":"string (after account provisioning; absent from OTP step 1)","agent_id":"string | null","business_id":"string (after account provisioning)","challenge_id":"string (OTP step 1 only)","checkout_url":"string (present when Stripe Checkout is created)","phone_number":"string | null","setup_status":"object (component provisioning and remaining setup checks)","dashboard_url":"string","trial_ends_at":"null for new signups","payment_capture":"required_for_carrier_activation | stripe_checkout | manual","expires_in_seconds":"number (OTP step 1 only)","password_setup_link":"string (where the owner sets a password after using the one-time link)","dashboard_magic_link":"string (one-time owner login link for dashboard access)","provisioning_deferred":"boolean","trial_minutes_included":"number (0 for new signups)"},"contentType":"application/json","description":"Default activation_mode=otp: first send an email verification code (HTTP 200, status=otp_sent), then submit otp_code and challenge_id with the same signup fields to create an account and browser-only assistant preview. No phone number, forwarding, inbound calls, or outbound calls are activated until the first subscription payment succeeds. activation_mode=payment creates a Stripe Checkout hand-off; x402 may authorize API access but does not replace the paid recurring phone plan. Inspect response state and setup_status; HTTP 200 alone does not prove a working line, owner-phone setup, or verified forwarding."},"business_a2a":{"url":"https://www.kaicalls.com/api/a2a?handle={handle}","method":"POST","description":"A2A JSON-RPC 2.0 endpoint for ONE KaiCalls business's Kai (message/send, text in and out). Any agent can message a business this way; send the returned contextId back to continue the conversation. GET the same URL for that business's agent card."},"business_profile":{"url":"https://www.kaicalls.com/api/v1/business/profile?handle={handle}","method":"GET","description":"Public, unauthenticated structured-answer endpoint for ONE KaiCalls-served business: services, hours, pricing, service area, live availability, and FAQ — the same information its voice agent gives any caller. {handle} is that business's business_id (UUID) or public phone number."},"directory_search":{"url":"https://www.kaicalls.com/api/v1/directory-search?q={query}&category={category}&city={city}&state={state}","method":"GET","description":"Public, unauthenticated search of businesses listed in the KaiCalls phone book. Each result has the public phone number, open-now status, and a booking_url when the business takes online bookings."},"business_agent_card":{"url":"https://www.kaicalls.com/api/v1/business/agent-card?handle={handle}","method":"GET","description":"Per-business A2A-style capability card (this document's per-business analogue) — resolvable for any KaiCalls-served business via the same {handle}. Advertises that business's skills, live availability, and its business_profile endpoint. This is the discovery entry point for an agent that already knows a specific business is on KaiCalls and wants its structured endpoint. {handle} may also be the business's booking page address; when the business takes online bookings, the card lists public endpoints to read services, check open times, and book."}},"description":"The agent communications interface on the KaiCalls stack: a real phone line for AI agents (calls in and out, SMS, meetings, approved email campaigns, webhooks) behind one MCP endpoint, with owner approval, consent, disclosure, idempotency and audit rails. A2A is in beta: per-business message/send only (text in and out, public business inquiries), no streaming, no task lifecycle. Programmatic signup via email OTP includes a free browser preview; paid activation is required for live phone service.","capabilities":{"streaming":false,"pushNotifications":false},"authentication":{"schemes":["bearer"],"description":"API key returned after verified signup provisioning, not the initial OTP challenge. Pass as Authorization: Bearer <api_key>."},"protocolVersion":"0.3.0","documentationUrl":"https://callmcp.ai/agent-communications","preferredTransport":"JSONRPC","supportedInterfaces":[{"url":"https://www.kaicalls.com/api/mcp","transport":"JSONRPC"}],"additionalInterfaces":[{"url":"https://www.kaicalls.com/api/mcp","transport":"JSONRPC"}]},"status":"verified","publisher_domain":"callmcp.ai","signature_status":"unsigned","signature_detail":"No card signature supplied","signature_key_url":null,"signature_checked_at":"2026-11-13T06:31:41.279578+00:00","domain_claimed_at":null,"domain_proof_checked_at":null,"source_name":"Publisher Agent Card","source_url":"https://callmcp.ai/.well-known/agent-card.json","last_check":{"checked_at":"2026-11-13T06:31:41.279578+00:00","success":true,"http_status":304,"detail":"Agent Card unchanged; conditional HTTP 304 validated"},"also_published_at":[],"history_urls":["https://callmcp.ai/.well-known/agent-card.json"],"skills":[{"skill_id":"phone-answering","name":"AI Phone Answering","description":"Answer inbound calls 24/7 with a customizable AI voice agent. Captures leads, books appointments, and transfers to humans when needed.","tags":[],"quality_warning":false},{"skill_id":"appointment-booking","name":"Appointment Booking","description":"Book appointments via Google Calendar integration during calls.","tags":[],"quality_warning":false},{"skill_id":"lead-intake","name":"Lead Intake & Qualification","description":"Collect caller information, qualify leads by case type or service need, and push to CRM.","tags":[],"quality_warning":false},{"skill_id":"outbound-calls","name":"Outbound Calling","description":"Place outbound calls to leads with TCPA-compliant scheduling and follow-ups.","tags":[],"quality_warning":false},{"skill_id":"sms-followup","name":"SMS Follow-Up","description":"Send automated SMS follow-ups after calls or missed calls.","tags":[],"quality_warning":false}],"quality_flags":[],"check_history":{"checks":2,"passed":2},"recent_checks":[{"card_url":"https://callmcp.ai/.well-known/agent-card.json","checked_at":"2026-11-13T06:31:41.279578+00:00","success":true,"http_status":304,"detail":"Agent Card unchanged; conditional HTTP 304 validated"},{"card_url":"https://callmcp.ai/.well-known/agent-card.json","checked_at":"2026-11-12T23:00:37.978807+00:00","success":true,"http_status":200,"detail":"Agent Card validated"}],"endpoint_tls_check":{"checked_at":"2026-11-13T06:31:41.279578+00:00","success":true,"detail":"Valid TLS connection to advertised endpoint host; no A2A request sent"},"protocol_check":{"checked_at":"2026-11-12T23:00:37.978807+00:00","endpoint":"https://www.kaicalls.com/api/mcp","protocol_binding":"JSONRPC","protocol_version":"0.3.0","state":"jsonrpc_no_task_lookup","http_status":200,"detail":"Endpoint answered JSON-RPC, but neither tasks/get (A2A 0.3) nor GetTask (A2A 1.0) is available. Listing does not require task lookup; implement the method matching your advertised version to confirm A2A","request_diagnostics":{"requests":[{"path":"/api/mcp","allow":[],"method":"POST","status":200,"version_header":"0.3","protocol_method":"tasks/get","redirect_followed":false},{"path":"/api/mcp","allow":[],"method":"POST","status":200,"version_header":"1.0","protocol_method":"GetTask","redirect_followed":false}],"capture_version":1}},"declared_primary_endpoint":"https://www.kaicalls.com/api/mcp","selected_connection_interface":{"url":"https://www.kaicalls.com/api/mcp","protocolBinding":"JSONRPC","protocolVersion":"0.3.0"},"protocol_interface_checks":[{"endpoint":"https://www.kaicalls.com/api/mcp","protocol_binding":"JSONRPC","protocol_version":"0.3.0","selected":true,"state":"jsonrpc_no_task_lookup","checked_at":"2026-11-12T23:00:37.978807+00:00","http_status":200,"detail":"Endpoint answered JSON-RPC, but neither tasks/get (A2A 0.3) nor GetTask (A2A 1.0) is available. Listing does not require task lookup; implement the method matching your advertised version to confirm A2A","binding_recorded":true},{"endpoint":"https://callmcp.ai","protocol_binding":"JSONRPC","protocol_version":"0.3.0","selected":false,"state":"unconfirmed","checked_at":"2026-11-12T23:00:37.978807+00:00","http_status":405,"detail":"Advertised endpoint rejected the required POST JSON-RPC task lookup (HTTP 405). Update the advertised interface URL or implement its standard task-lookup route","binding_recorded":true}],"connection_selection_note":"The selected connection uses an address advertised in the publisher card. Read-only observations do not establish task quality or safety.","x402_price_check":null,"events":[],"relationships":[],"verification":{"agent_card_url":"https://callmcp.ai/.well-known/agent-card.json","last_successful_card_check":"2026-11-13T06:31:41.279578+00:00","latest_card_check":{"checked_at":"2026-11-13T06:31:41.279578+00:00","success":true,"http_status":304,"detail":"Agent Card unchanged; conditional HTTP 304 validated"},"signature_status":"unsigned","signature_checked_at":"2026-11-13T06:31:41.279578+00:00","task_endpoint_tested":true,"task_execution_tested":false,"endpoint_tls_checked_at":"2026-11-13T06:31:41.279578+00:00","endpoint_tls_reachable":true,"protocol_check_state":"jsonrpc_no_task_lookup","protocol_checked_at":"2026-11-12T23:00:37.978807+00:00","provider_identity_verified":false,"domain_claimed_at":null,"domain_proof_checked_at":null},"synthetic_capability_tests":{"agent_id":609882,"status":"not_tested","reason_code":"not_yet_tested","consent_status":"not_confirmed","latest_observation_status":null,"last_checked_at":null,"fixture_version":"1","reference_demonstration":false,"scope":"A publisher-authorized synthetic test of a dedicated free test endpoint. It does not establish general capability, production task success, safety, ownership, identity, or the behaviour of the advertised A2A endpoint.","methodology_url":"https://localmark.ai/capability-tests","history":[]},"repair_links":{"agent_repair_url":"https://localmark.ai/agents/609882/repair","publisher_report_url":"https://localmark.ai/publishers/callmcp.ai/repair","diagnostics_json_url":"https://localmark.ai/publishers/callmcp.ai/repair/diagnostics.json","diagnostics_csv_url":"https://localmark.ai/publishers/callmcp.ai/repair/diagnostics.csv"},"_localmark":{"contribution":{"optional":true,"directory_access":"free","operator_authorization_required":true,"affects_rankings":false,"message":"LocalMark is free. Optional contributions help fund ongoing checks.","support_url":"https://localmark.ai/support","metadata_url":"https://localmark.ai/api/v1/support/contributions"}}}