{"id":499162,"name":"KaiCallsAgent","description":"AI-powered call answering service for law firms, home service businesses, and AI agents. Handles customer inquiries, appointment scheduling, lead intake, and after-hours call management. Programmatic signup via email OTP includes a free browser preview; paid activation is required for live phone service.","card_url":"https://kaicalls.com/.well-known/agent-card.json","endpoint":"https://www.kaicalls.com/api/mcp","protocol_version":"0.3.0","first_seen":"2026-10-28T15:48:37.216071+00:00","last_verified":"2026-10-28T21:49:35.165389+00:00","card":{"url":"https://www.kaicalls.com","name":"KaiCallsAgent","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."},{"id":"sdr-automation","name":"SDR Pipeline Automation","description":"Automated sales development: segments leads into actionable buckets (speed-to-lead, warm demo, trial-stuck, etc.), decides the next-best action (call/email/SMS/skip/escalate), enforces cadence rules, and records every touch. Accessible via /api/sdr/* endpoints for programmatic pipeline management."}],"payment":{"x402":{"asset":"USDC","price":"$5.00","enabled":false,"network":"eip155:8453","description":"Optional activation_mode=payment only, when enabled: send request without a payment header, receive 402 with requirements (Stripe-issued deposit address + X-Payment-Challenge id), sign the transfer, and retry with a PAYMENT-SIGNATURE header echoing the challenge id.","facilitator":"Settled via Stripe Machine Payments (crypto deposit PaymentIntents) when X402_PROVIDER=stripe, or a generic x402 facilitator otherwise."},"stripe":{"enabled":true,"description":"Standard card/subscription payments via Stripe Checkout. Payment-mode signup returns checkout_url; the verified paid webhook activates carrier service after the first payment succeeds. Default OTP signup creates only a browser preview. Stripe also acts as the x402 machine-payments facilitator for crypto (USDC) settlement."}},"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."},"sdr_run":{"url":"https://www.kaicalls.com/api/sdr/run","body":{"dryRun":{"type":"boolean","required":false},"businessId":{"type":"string","required":true}},"scope":"sdr:write","method":"POST","returns":{"results":"array of dispatch results","success":"boolean","summary":{"failed":"integer","sms_sent":"integer","escalated":"integer","calls_queued":"integer","emails_queued":"integer"}},"contentType":"application/json","description":"Manually trigger a full pipeline review + action dispatch for a business. Pass dryRun=true to preview actions without dispatching. Fails 400 if SDR is not enabled for the business.","authentication":"Bearer API key (sdr:write scope) OR user session"},"sdr_cron":{"url":"https://www.kaicalls.com/api/cron/sdr-pipeline","method":"GET","description":"Scheduled SDR pipeline runner (every 2h). Reviews + dispatches for every business with SDR enabled. Cron-secret protected; not callable by API key or session."},"sdr_action":{"url":"https://www.kaicalls.com/api/sdr/action","body":{"action":{"enum":["call","email","sms","skip","pause","resume"],"type":"string","required":true},"leadId":{"type":"string","required":true},"businessId":{"type":"string","required":true}},"scope":"sdr:write","method":"POST","returns":{"error":"string (optional, on failure)","action":"string","detail":"string (optional, on success)","leadId":"string","success":"boolean","nextAllowedAt":"string (ISO timestamp, if rate-limited by cadence)"},"contentType":"application/json","description":"Trigger a single SDR action on a lead. Actions: call, email, sms, skip, pause, resume. Enforces cadence rules (min_touch_gap_hours, max_touches) and records the touch in sdr_activity_log.","authentication":"Bearer API key (sdr:write scope) OR user session"},"sdr_config":{"url":"https://www.kaicalls.com/api/sdr/config","scopes":{"GET":"sdr:read","PUT":"sdr:write"},"methods":["GET","PUT"],"putBody":{"enabled":{"type":"boolean","required":false},"auto_sms":{"type":"boolean","required":false},"auto_call":{"type":"boolean","required":false},"auto_email":{"type":"boolean","required":false},"businessId":{"type":"string","required":true},"max_touches":{"type":"integer","required":false},"sdr_agent_id":{"type":"string","required":false},"business_hours_end":{"type":"integer","required":false,"description":"0-23"},"min_touch_gap_hours":{"type":"integer","required":false},"business_hours_start":{"type":"integer","required":false,"description":"0-23"},"email_from_account_id":{"type":"string","required":false}},"getQuery":{"businessId":{"type":"string","required":true}},"description":"Read or update per-business SDR configuration (enabled flag, cadence windows, auto-channel toggles, SDR agent ID for outbound calls, default email account).","authentication":"Bearer API key (sdr:read for GET, sdr:write for PUT) OR user session"},"sdr_report":{"url":"https://www.kaicalls.com/api/sdr/report","query":{"period":{"enum":["today","week","month"],"type":"string","required":false},"businessId":{"type":"string","required":true}},"scope":"sdr:read","method":"GET","description":"Aggregated SDR pipeline report: action counts, outcomes, hot leads, stale leads. Pass ?businessId=<uuid>. Optional: &period=today|week|month (default week).","authentication":"Bearer API key (sdr:read scope) OR user session"},"sdr_activity":{"url":"https://www.kaicalls.com/api/sdr/activity","query":{"limit":{"type":"integer","required":false},"leadId":{"type":"string","required":false},"businessId":{"type":"string","required":true}},"scope":"sdr:read","method":"GET","description":"Recent SDR activity log entries. Pass ?businessId=<uuid>. Optional: &leadId=<uuid>, &limit=<n> (default 50, max 200).","authentication":"Bearer API key (sdr:read scope) OR user session"},"sdr_pipeline":{"url":"https://www.kaicalls.com/api/sdr/pipeline","query":{"limit":{"type":"integer","required":false},"segment":{"type":"string","required":false},"businessId":{"type":"string","required":true}},"scope":"sdr:read","method":"GET","returns":{"leads":"array of lead objects with segment, score, touch_count, next_action, paused","enabled":"boolean","summary":{"actionable":"integer","total_leads":"integer","needs_manual":"integer"},"businessId":"string"},"description":"List leads in the SDR pipeline with segment, score, touch count, and next action. Pass ?businessId=<uuid>. Optional: &segment=<segment>, &limit=<n> (default 100). Segments include: speed_to_lead, fresh_demo_caller, warm_demo_caller, cooling_demo, new_trial_stuck, trial_going_dark, trial_ending, contacted_no_reply, exhausted, churned_recent.","authentication":"Bearer API key (sdr:read scope) OR user session"},"business_booking":{"url":"https://www.kaicalls.com/api/book/confirm","method":"POST","description":"Public, unauthenticated booking for a business's online booking page — read its agent card first for the services and open-times endpoints and the exact body. Requires the customer's real name and email and an idempotency key; the customer is emailed a confirmation and a change link."},"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":"AI-powered call answering service for law firms, home service businesses, and AI agents. Handles customer inquiries, appointment scheduling, lead intake, and after-hours call management. 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://www.kaicalls.com/docs/api","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":"kaicalls.com","signature_status":"unsigned","signature_detail":"No card signature supplied","signature_key_url":null,"signature_checked_at":"2026-10-28T21:49:35.165389+00:00","domain_claimed_at":null,"domain_proof_checked_at":null,"source_name":"Publisher Agent Card","source_url":"https://kaicalls.com/.well-known/agent-card.json","last_check":{"checked_at":"2026-10-28T21:49:35.165389+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},"also_published_at":[{"card_url":"https://www.kaicalls.com/.well-known/agent-card.json"}],"history_urls":["https://kaicalls.com/.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":"sdr-automation","name":"SDR Pipeline Automation","description":"Automated sales development: segments leads into actionable buckets (speed-to-lead, warm demo, trial-stuck, etc.), decides the next-best action (call/email/SMS/skip/escalate), enforces cadence rules, and records every touch. Accessible via /api/sdr/* endpoints for programmatic pipeline management.","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://kaicalls.com/.well-known/agent-card.json","checked_at":"2026-10-28T21:49:35.165389+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},{"card_url":"https://kaicalls.com/.well-known/agent-card.json","checked_at":"2026-10-28T15:48:37.216071+00:00","success":true,"http_status":200,"detail":"Agent Card validated"}],"endpoint_tls_check":{"checked_at":"2026-10-28T21:49:35.165389+00:00","success":true,"detail":"Valid TLS connection to advertised endpoint host; no A2A request sent"},"protocol_check":{"checked_at":"2026-10-28T15:48:37.216071+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-10-28T15:48:37.216071+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://www.kaicalls.com","protocol_binding":"JSONRPC","protocol_version":"0.3.0","selected":false,"state":"unconfirmed","checked_at":"2026-10-28T15:48:37.216071+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://kaicalls.com/.well-known/agent-card.json","last_successful_card_check":"2026-10-28T21:49:35.165389+00:00","latest_card_check":{"checked_at":"2026-10-28T21:49:35.165389+00:00","success":true,"http_status":200,"detail":"Agent Card validated"},"signature_status":"unsigned","signature_checked_at":"2026-10-28T21:49:35.165389+00:00","task_endpoint_tested":true,"task_execution_tested":false,"endpoint_tls_checked_at":"2026-10-28T21:49:35.165389+00:00","endpoint_tls_reachable":true,"protocol_check_state":"jsonrpc_no_task_lookup","protocol_checked_at":"2026-10-28T15:48:37.216071+00:00","provider_identity_verified":false,"domain_claimed_at":null,"domain_proof_checked_at":null},"synthetic_capability_tests":{"agent_id":499162,"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/499162/repair","publisher_report_url":"https://localmark.ai/publishers/kaicalls.com/repair","diagnostics_json_url":"https://localmark.ai/publishers/kaicalls.com/repair/diagnostics.json","diagnostics_csv_url":"https://localmark.ai/publishers/kaicalls.com/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"}}}