Back to KaiCallsAgent

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."
    }
  }
}