{"_id":"@callmcp/driver-kaicalls","_rev":"2-1e5e6458299b86c49a31e28f26085a3e","name":"@callmcp/driver-kaicalls","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@callmcp/driver-kaicalls","version":"0.1.0","license":"MIT","_id":"@callmcp/driver-kaicalls@0.1.0","maintainers":[{"name":"kaicmo","email":"connor@kaicalls.com"}],"dist":{"shasum":"ee7ccc9caaddc76c3b74099a221635917e5d8d0e","tarball":"https://registry.npmjs.org/@callmcp/driver-kaicalls/-/driver-kaicalls-0.1.0.tgz","fileCount":24,"integrity":"sha512-MtQrPQWxAY+ayQfCVwwjMGCvvVIFEiNa7i48LDommRWUWmoqnSxuVfupPAv8eJkqJKSvPPCp6JBfQd6IXDqACA==","signatures":[{"sig":"MEQCIDDVyv/ZSr1/YVoHV57mLAe2sViloQb5fgJNmMtz1argAiAWvkEtZWYQ++L+gr5vR8cImuuIZQ2pHo62G2dqjXEYJA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116424},"main":"./dist/index.js","type":"module","_from":"file:callmcp-driver-kaicalls-0.1.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"dev":"tsc -p tsconfig.json --watch","test":"vitest run","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"kaicmo","email":"connor@kaicalls.com"},"_resolved":"C:\\Users\\cgall\\AppData\\Local\\Temp\\43702e4d0f5637f2a6817786c3be6280\\callmcp-driver-kaicalls-0.1.0.tgz","_integrity":"sha512-MtQrPQWxAY+ayQfCVwwjMGCvvVIFEiNa7i48LDommRWUWmoqnSxuVfupPAv8eJkqJKSvPPCp6JBfQd6IXDqACA==","_npmVersion":"10.8.2","description":"CallMCP hosted driver for KaiCalls (kaicalls.com) — the flagship, fullest-parity driver, mapping the CallMCP Driver contract onto KaiCalls' live 38-tool MCP/REST telephony backend. Normative references: SPEC.md at the repo root and https://callmcp.ai/llms","directories":{},"_nodeVersion":"20.18.1","dependencies":{"@callmcp/driver-interface":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/driver-kaicalls_0.1.0_1783643241132_0.965589198369849","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@callmcp/driver-kaicalls","version":"0.1.1","description":"CallMCP hosted driver for KaiCalls (kaicalls.com) — the flagship, fullest-parity driver, mapping the CallMCP Driver contract onto KaiCalls' live 44-tool MCP/REST telephony backend. Normative references: SPEC.md at the repo root and a live tools/list call ","license":"MIT","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"dependencies":{"@callmcp/driver-interface":"0.1.0"},"devDependencies":{"@types/node":"^20.14.0","typescript":"^5.6.3","vitest":"^2.1.4"},"publishConfig":{"access":"public"},"scripts":{"build":"tsc -p tsconfig.json","dev":"tsc -p tsconfig.json --watch","test":"vitest run","test:watch":"vitest","typecheck":"tsc -p tsconfig.json --noEmit"},"_id":"@callmcp/driver-kaicalls@0.1.1","_integrity":"sha512-wuf/o7I3uz9PWWhe0C0SddHdUasRYtbUQnLhfWUd/XzsV4pBVq7iNq4/9gP9a54CIIXB2CPqyB1i/wXPsyth2A==","_resolved":"C:\\Users\\cgall\\AppData\\Local\\Temp\\1781b2cbd46a3f4baccbcb02a0af320d\\callmcp-driver-kaicalls-0.1.1.tgz","_from":"file:callmcp-driver-kaicalls-0.1.1.tgz","_nodeVersion":"20.18.1","_npmVersion":"10.8.2","dist":{"integrity":"sha512-wuf/o7I3uz9PWWhe0C0SddHdUasRYtbUQnLhfWUd/XzsV4pBVq7iNq4/9gP9a54CIIXB2CPqyB1i/wXPsyth2A==","shasum":"7353f66ed7a9332d4a9a1f079af2ea366d9b74c0","tarball":"https://registry.npmjs.org/@callmcp/driver-kaicalls/-/driver-kaicalls-0.1.1.tgz","fileCount":24,"unpackedSize":119076,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD8aBtLNIw9UkOm1gSkQ6RINEagJlMQSyRCcQ0cwnsyvAIgdX1Lz8ytvlXap7wsZIcORLNlQshDPplkUlmQwl/YJ7Y="}]},"_npmUser":{"name":"kaicmo","email":"connor@kaicalls.com"},"directories":{},"maintainers":[{"name":"kaicmo","email":"connor@kaicalls.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/driver-kaicalls_0.1.1_1783720757809_0.05204147548141491"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-10T00:27:20.958Z","modified":"2026-07-10T21:59:18.163Z","0.1.0":"2026-07-10T00:27:21.259Z","0.1.1":"2026-07-10T21:59:18.021Z"},"license":"MIT","description":"CallMCP hosted driver for KaiCalls (kaicalls.com) — the flagship, fullest-parity driver, mapping the CallMCP Driver contract onto KaiCalls' live 44-tool MCP/REST telephony backend. Normative references: SPEC.md at the repo root and a live tools/list call ","maintainers":[{"name":"kaicmo","email":"connor@kaicalls.com"}],"readme":"# @callmcp/driver-kaicalls\n\n[![npm version](https://img.shields.io/npm/v/@callmcp/driver-kaicalls)](https://www.npmjs.com/package/@callmcp/driver-kaicalls)\n\nCallMCP's hosted driver for [KaiCalls](https://www.kaicalls.com) — the\nproduction 38-tool MCP/REST telephony backend that\n[callmcp.ai](https://callmcp.ai) documents publicly. This is the flagship,\nfullest-parity `Driver` implementation in the CallMCP monorepo: it wraps\nKaiCalls' real, live tool inventory, not a mock or a partial integration.\n\nNormative references, read in full while building this package:\n\n- [`SPEC.md`](../../SPEC.md) at the repo root — the `Driver` contract every\n  method here implements.\n- [`https://callmcp.ai/llms.txt`](https://callmcp.ai/llms.txt) — the live\n  endpoint, auth model, scopes, and 38-tool inventory this driver targets.\n- [`https://callmcp.ai/skill.md`](https://callmcp.ai/skill.md) — the\n  agent-facing onboarding doc, including the x402 self-provisioning flow.\n\n## What's in here\n\n| File | What it's for |\n|---|---|\n| `src/client.ts` | Thin fetch-based wrapper around KaiCalls' MCP JSON-RPC `tools/call` endpoint and its `/api/v1/signup` REST endpoint. |\n| `src/provisioning.ts` | The x402 self-provisioning helper — prepares/parses the 402 challenge and completes the paid retry. **Does not execute payments itself** — see the module doc comment. |\n| `src/driver.ts` | `KaiCallsDriver` — the `Driver` implementation. Maps every method to a real, documented KaiCalls MCP tool. |\n| `src/manifest.ts` | `KAICALLS_MANIFEST` — the static SPEC §6.1 capability manifest, with a comment on every flag explaining what source-doc evidence backs it. |\n| `callmcp.manifest.json` | Static JSON mirror of `KAICALLS_MANIFEST`, per SPEC §6.1. |\n| `test/driver.test.ts` | Tests against a mocked HTTP layer — no real network calls, no real spend. |\n\n## Honesty notes\n\nThis driver is built to be precise about what KaiCalls actually documents\nas live, not what would be convenient to claim:\n\n- **No `end_call`.** KaiCalls' documented tool inventory has no\n  hangup/terminate-call tool. `KaiCallsDriver.endCall` is not implemented\n  (left `undefined`), per SPEC §0.1.2's \"absence, not runtime surprise\" rule.\n- **`send_sms` is SMS-only.** No WhatsApp or RCS channel is documented.\n- **No realtime transcript streaming.** `get_transcript` is documented as a\n  poll/finalize-after-call model, not a live `resources/subscribe` stream.\n- **No elicitation-based approval.** llms.txt's own \"What's real vs not yet\n  built\" section states there is no server-side approval gate today.\n- **`configure_number` is partial.** Only the `agent_config_ref` field maps\n  to a real tool (`attach_number`/`detach_number`); `sms_webhook_url` and\n  `caller_id_name` throw `UnsupportedCapabilityError`.\n- **Field-level response shapes are best-effort.** llms.txt/skill.md\n  confirm tool names, scopes, and categories, not full JSON Schemas —\n  `driver.ts` parses responses defensively over several plausible key\n  aliases and documents every non-obvious inference inline.\n\nSee `src/manifest.ts`'s `known_degradations` array for the complete,\nstructured list.\n\n## Usage\n\n```ts\nimport { KaiCallsDriver } from \"@callmcp/driver-kaicalls\";\n\nconst driver = new KaiCallsDriver({ apiKey: process.env.KAICALLS_API_KEY });\n\nconst call = await driver.makeCall({ to: \"+14155551234\", approval_id: \"a_...allowlisted\" });\nconst status = await driver.getCallStatus({ call_id: call.call_id });\n```\n\nNo API key yet? Provision one via the documented x402 flow:\n\n```ts\nimport { KaiCallsClient, provisionKaiCallsAccount } from \"@callmcp/driver-kaicalls\";\n\nconst client = new KaiCallsClient(); // no apiKey needed for signup itself\nconst result = await provisionKaiCallsAccount(client, {\n  business_name: \"Acme Agent Co\",\n  email: \"ops@acme.example\",\n});\n\nif (result.status === \"provisioned\") {\n  const driver = new KaiCallsDriver({ apiKey: result.api_key });\n} else if (result.status === \"payment_required\") {\n  // Hand `result.challenge` to your own wallet/payment integration, or\n  // call `retryWithPayment(client, request, proof, result.challengeToken)`\n  // once you have a payment proof. This package does not execute payments.\n} else {\n  // result.status === \"deferred_to_human\"\n  console.log(\"Have a human complete checkout:\", result.checkout_url);\n}\n```\n","readmeFilename":"README.md"}