Card snapshot
www.kaicalls.com
·
2026-05-24 19:11:10 UTC
·
b303c0da31a8f20e912a28ee6540344820557cca610e94ecac0014b94f1a46d6
This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.
{
"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://kaicalls.com",
"version": "1.0",
"provider": {
"organization": "KaiCalls",
"url": "https://kaicalls.com"
},
"documentationUrl": "https://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://kaicalls.com/api/v1/signup",
"method": "POST",
"description": "Create account, get API key, phone number, and AI agent in one call. Supports x402 crypto payments.",
"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
}
},
"returns": {
"api_key": "string",
"business_id": "string",
"agent_id": "string",
"phone_number": "string",
"dashboard_url": "string",
"trial_ends_at": "string"
}
},
"sdr_pipeline": {
"url": "https://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://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://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://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://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://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://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."
}
},
"pricing": {
"model": "subscription",
"currency": "USD",
"plans": [
{
"name": "Starter",
"price": 69,
"unit": "month",
"minutes": 150
},
{
"name": "Growth",
"price": 149,
"unit": "month",
"minutes": 500
},
{
"name": "Professional",
"price": 299,
"unit": "month",
"minutes": 1500
},
{
"name": "Business",
"price": 499,
"unit": "month",
"minutes": 3000
},
{
"name": "Enterprise",
"price": 999,
"unit": "month",
"minutes": 5000
}
],
"trial": {
"days": 30,
"requiresPayment": false
},
"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",
"description": "x402 HTTP 402 payment protocol for machine-to-machine payments. Send request without payment header, receive 402 with requirements, retry with signed payment."
},
"stripe": {
"enabled": true,
"description": "Standard card/subscription payments via Stripe."
}
}
}