{"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 API with x402 crypto payments or free trial.","url":"https://www.kaicalls.com","version":"1.0","provider":{"organization":"KaiCalls","url":"https://www.kaicalls.com"},"documentationUrl":"https://www.kaicalls.com/docs/api","capabilities":{"streaming":false,"pushNotifications":false},"authentication":{"schemes":["bearer"],"description":"API key returned from POST /api/v1/signup. Pass as Authorization: Bearer <api_key>."},"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."}],"endpoints":{"signup":{"url":"https://www.kaicalls.com/api/v1/signup","method":"POST","description":"Create account and API key. With x402 payment, provision phone number and AI agent inline. Without x402, returns Stripe Checkout URL for card capture before activation.","contentType":"application/json","body":{"business_name":{"type":"string","required":true},"email":{"type":"string","required":true},"business_type":{"type":"string","required":false},"website":{"type":"string","required":false},"phone_forward_to":{"type":"string","required":false},"plan_id":{"type":"string","required":false,"default":"starter"}},"returns":{"api_key":"string","business_id":"string","agent_id":"string | null","phone_number":"string | null","dashboard_url":"string","trial_ends_at":"string","provisioning_deferred":"boolean","payment_capture":"x402 | stripe_checkout | manual","checkout_url":"string (present when Stripe Checkout is created)","dashboard_magic_link":"string (one-time owner login link for dashboard access)"}},"sdr_pipeline":{"url":"https://www.kaicalls.com/api/sdr/pipeline","method":"GET","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","scope":"sdr:read","query":{"businessId":{"type":"string","required":true},"segment":{"type":"string","required":false},"limit":{"type":"integer","required":false}},"returns":{"businessId":"string","enabled":"boolean","summary":{"total_leads":"integer","actionable":"integer","needs_manual":"integer"},"leads":"array of lead objects with segment, score, touch_count, next_action, paused"}},"sdr_action":{"url":"https://www.kaicalls.com/api/sdr/action","method":"POST","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","scope":"sdr:write","contentType":"application/json","body":{"businessId":{"type":"string","required":true},"leadId":{"type":"string","required":true},"action":{"type":"string","required":true,"enum":["call","email","sms","skip","pause","resume"]}},"returns":{"success":"boolean","action":"string","leadId":"string","detail":"string (optional, on success)","error":"string (optional, on failure)","nextAllowedAt":"string (ISO timestamp, if rate-limited by cadence)"}},"sdr_config":{"url":"https://www.kaicalls.com/api/sdr/config","methods":["GET","PUT"],"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","scopes":{"GET":"sdr:read","PUT":"sdr:write"},"getQuery":{"businessId":{"type":"string","required":true}},"putBody":{"businessId":{"type":"string","required":true},"enabled":{"type":"boolean","required":false},"min_touch_gap_hours":{"type":"integer","required":false},"max_touches":{"type":"integer","required":false},"auto_call":{"type":"boolean","required":false},"auto_email":{"type":"boolean","required":false},"auto_sms":{"type":"boolean","required":false},"sdr_agent_id":{"type":"string","required":false},"business_hours_start":{"type":"integer","required":false,"description":"0-23"},"business_hours_end":{"type":"integer","required":false,"description":"0-23"},"email_from_account_id":{"type":"string","required":false}}},"sdr_run":{"url":"https://www.kaicalls.com/api/sdr/run","method":"POST","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","scope":"sdr:write","contentType":"application/json","body":{"businessId":{"type":"string","required":true},"dryRun":{"type":"boolean","required":false}},"returns":{"success":"boolean","summary":{"calls_queued":"integer","emails_queued":"integer","sms_sent":"integer","escalated":"integer","failed":"integer"},"results":"array of dispatch results"}},"sdr_report":{"url":"https://www.kaicalls.com/api/sdr/report","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","scope":"sdr:read","query":{"businessId":{"type":"string","required":true},"period":{"type":"string","required":false,"enum":["today","week","month"]}}},"sdr_activity":{"url":"https://www.kaicalls.com/api/sdr/activity","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","scope":"sdr:read","query":{"businessId":{"type":"string","required":true},"leadId":{"type":"string","required":false},"limit":{"type":"integer","required":false}}},"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."},"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."},"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."}},"pricing":{"model":"subscription","currency":"USD","plans":[{"name":"Solo","price":69,"unit":"month","minutes":360,"answeredCalls":150,"phoneNumbers":1,"custom":false},{"name":"Pro","price":199,"unit":"month","minutes":1440,"answeredCalls":600,"phoneNumbers":1,"custom":false},{"name":"Custom","price":0,"unit":"month","minutes":0,"answeredCalls":null,"phoneNumbers":100,"custom":true}],"overage":"No per-minute overage and no surprise bills. Allowances are a generous fair-use cushion; if your call volume consistently grows, we right-size you to the next plan (and back down if it drops) — always with a heads-up first and a one-tap \"keep me here\" option.","trial":{"days":7,"requiresPayment":true,"capture":"Stripe Checkout captures a payment method before activation unless x402 is used."},"agentPricing":{"payPerCall":"$0.50/call","description":"AI agents can opt for per-call pricing instead of a subscription."}},"payment":{"x402":{"enabled":true,"network":"eip155:8453","asset":"USDC","price":"$5.00","description":"x402 HTTP 402 payment protocol for machine-to-machine payments. 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. API signup returns checkout_url when x402 is not used. Stripe also acts as the x402 machine-payments facilitator for crypto (USDC) settlement."}}}