# CALL-E Integrations **CALL-E is your AI agent for getting phone work done.** Tell CALL-E your goal, and it handles the phone task end-to-end: it plans, calls, adapts in real time, follows through, and improves along the way. Use CALL-E directly, or integrate it into agents, platforms, and business systems through Skills, Plugins, SDKs, or APIs. New users get 20 free calls to get started. [Website](https://www.heycall-e.com/) ยท [Try on ClawHub](https://clawhub.ai/call-e-dev/phone-call-calle) ยท [Get started](#-get-started) ยท [Troubleshooting](#-troubleshooting) ยท [Discord](https://discord.gg/6AbXUzUV8w) ![npm](https://img.shields.io/npm/v/@call-e/cli?label=%40call-e%2Fcli) ![Codex](https://img.shields.io/badge/Codex-CALL--E-black) ![Claude Code](https://img.shields.io/badge/Claude%20Code-CALL--E-orange) ![Cursor](https://img.shields.io/badge/Cursor-CALL--E-blue) ![OpenClaw](https://img.shields.io/badge/OpenClaw-ClawHub-purple) ![Hermes Agent](https://img.shields.io/badge/Hermes%20Agent-ClawHub%20Prompt-green) ![MCP](https://img.shields.io/badge/MCP-Streamable%20HTTP-blue)
## ๐Ÿ’ก Why CALL-E is Different Unlike traditional voice/calling platforms that rely on prebuilt bots and high-volume calls, CALL-E focuses on goal-driven tasks. You provide a goal, and CALL-E manages the call workflow, adapts dynamically, and delivers structured results, enabling automation of low-frequency, personalized phone tasks that were previously too expensive or custom to automate. ## โœจ Key Features - **Quick Start** - Start using CALL-E within minutes via direct use or integration through Skills, Plugins, SDKs, or APIs. - **Goal-Driven Long Tasks** *(in development)* - Tell CALL-E the goal, and it builds the path to get there. It plans the overall task, designs the calling approach, executes the calls, learns from real outcomes, and continuously improves its strategy over time. CALL-E is not just making calls one by one โ€” it is learning how to achieve each phone-based goal more reliably. - **Reliable Voice Interaction** - CALL-E handles natural conversation flow, tone, interruptions, and changing call conditions in real time. ## ๐Ÿงฉ Other Features | Feature | Description | | --- | --- | | Live Task Progress | Track task from planning to final result with status, activity history, call outcomes, and next steps. | | Smart Goal Clarification | Ask missing details before execution (who, when, language, success criteria). | | Managed Call Execution | Handle number/line setup, outbound dialing, monitoring, and result capture. | | Actionable Call Results | Return summaries, transcripts, metadata, and recommended next steps. | | Scheduled & Batch Calling | Schedule individual or batch calls; clarify timing when needed. | | In-Task Optimization | Learn from prior attempts and adjust next steps. | | Continuous Improvement | Improve over time based on historical patterns and outcomes. | | Real-World Voice Runtime | Handle live pickup, voicemail, screening, hold, transfers, silence, interruptions. | | Use Wherever Work Happens | Integrate via Skills, Plugins, MCP, ChatGPT Apps, SDKs, APIs, or enterprise systems. | | Built-In Safety & Governance | Number governance, rate limits, concurrency controls, blocklists, kill switches, redacted logs, audit trails. | ## ๐Ÿš€ Get Started Choose the integration path that matches how you want to use CALL-E. | Goal | Use | Start here | | --- | --- | --- | | Install CALL-E into an AI agent | Agent Install | Copy the stable prompt below or use the [manual install guide](./docs/install/install-guide.md). | | Connect a Streamable HTTP MCP client | MCP | Use the [`openagent_oauth` MCP guide](./docs/mcp/openagent-oauth.md). | | Add CALL-E with a server SDK | SDK | Install the published TypeScript or Python SDK and follow the [SDK docs](https://docs.heycall-e.com/#/sdks). | | Call CALL-E from your backend directly | API | Use the [Developer API reference](https://docs.heycall-e.com/#/api-reference) and curl example below. | --- ### ๐Ÿค– Agent Install For agent installs, the simplest path is to ask your agent to install CALL-E at user-level/global scope, so the same agent can use `calle` across projects. Copy this stable prompt into a local agent that can run shell commands or install skills: ```text Install CALL-E for me: https://open.heycall-e.com/document/mcp-archive/CALL-E-installation-guide.md ``` The linked guide contains the full install steps, so this prompt can stay unchanged when those steps evolve. For manual setup, see the [manual install guide](./docs/install/install-guide.md). > โš ๏ธ **Safety notice:** CALL-E can place real outbound phone calls. Always verify the plan, recipient, and user intent before running a phone task. --- ### SDK CALL-E server SDKs are published for trusted backend services, workers, and automation systems that create and monitor call tasks. Start with the public docs: - [Quickstart](https://docs.heycall-e.com/#/quickstart) - [SDKs](https://docs.heycall-e.com/#/sdks) You can view your API keys in the [CALL-E dashboard](https://dashboard.heycall-e.com/account/api-keys). Install the SDK package for your runtime: ```bash pnpm add @call-e/calle pip install calle-ai ``` Current server SDK packages: - TypeScript: `@call-e/calle@0.2.0` - Python: `calle-ai==0.2.0`, imported as `calle` Set `CALLE_API_KEY` before running the examples: ```bash export CALLE_API_KEY="calle_live_key" ``` TypeScript **Create and wait** sample: ```ts import { CalleClient } from "@call-e/calle"; const client = new CalleClient({ apiKey: process.env.CALLE_API_KEY!, }); const call = await client.calls.createAndWait({ task: "Call and ask whether they can hear clearly.", resultSchema: { type: "object", required: ["can_hear_clearly"], properties: { can_hear_clearly: { type: "string", enum: ["yes", "no", "unknown"] }, }, }, }); console.log(call.status); console.log(call.structuredResult); console.log(call.taskCompleted, call.completionConfidence, call.evidence); ``` Python **Create and wait** sample: ```python import os from calle import CalleClient client = CalleClient(api_key=os.environ["CALLE_API_KEY"]) call = client.calls.create_and_wait( task="Call and ask whether they can hear clearly.", result_schema={ "type": "object", "required": ["can_hear_clearly"], "properties": { "can_hear_clearly": {"type": "string", "enum": ["yes", "no", "unknown"]}, }, }, ) print(call["status"]) print(call["structured_result"]) print(call["task_completed"], call["completion_confidence"], call["evidence"]) ``` --- ### API CALL-E Developer API is available for trusted backend services, workers, and workflow systems that need direct HTTP access. Start with the public docs: - [Quickstart](https://docs.heycall-e.com/#/quickstart) - [Authentication](https://docs.heycall-e.com/#/authentication) - [Calls](https://docs.heycall-e.com/#/calls) - [API Reference](https://docs.heycall-e.com/#/api-reference) You can view your API keys in the [CALL-E dashboard](https://dashboard.heycall-e.com/account/api-keys). Set your API key and base URL before running curl examples: ```bash export CALLE_API_KEY="calle_live_key" export CALLE_BASE_URL="https://api.heycall-e.com" ``` The Developer API supports: - `POST /v1/calls` to create one-recipient or batch call tasks. - `GET /v1/calls/{call_id}` to read status, summaries, structured results, and transcripts. - `GET /v1/calls/{call_id}/events` to list developer-facing call events. - `POST /calle/webhook` for terminal call result webhooks. Object result schemas are strict by default: fields not declared in `properties` are rejected before `structured_result` is returned. API **Create Call** sample: ```bash curl "$CALLE_BASE_URL/v1/calls" \ --request POST \ --header "Authorization: Bearer $CALLE_API_KEY" \ --header 'Content-Type: application/json' \ --header 'Idempotency-Key: wf_123_friday_lunch' \ --data '{ "task": "Call each recipient and ask whether they can attend Friday lunch in San Francisco.", "recipients": [ { "phones": [""], "region": "US", "locale": "en-US" } ], "result_schema": { "type": "object", "required": ["completed_count"], "properties": { "completed_count": { "type": "integer" } } }, "recipient_result_schema": { "type": "object", "required": ["can_attend"], "properties": { "can_attend": { "type": "string", "enum": ["yes", "no", "unknown"] } } }, "metadata": { "workflow_run_id": "wf_123" }, "webhook_url": "https://example.com/calle/webhook" }' ``` API **Read Result** sample: ```bash curl "$CALLE_BASE_URL/v1/calls/call_123" \ --header "Authorization: Bearer $CALLE_API_KEY" ``` Terminal calls include schema-valid `structured_result`, task-level outcome fields from the post-call summary, recipient-level structured results, and attempt transcripts when available: ```json { "status": "completed", "task_completed": true, "completion_confidence": {"score": 0.92, "label": "high"}, "evidence": ["The recipient said they can attend Friday lunch."], "structured_result": { "completed_count": 1 }, "recipients": [ { "structured_result": { "can_attend": "yes" }, "attempts": [ { "transcript_turns": [ {"offset_seconds": 0, "speaker": "bot", "text": "Hi, I am calling about Friday lunch."}, {"offset_seconds": 4, "speaker": "user", "text": "Yes, I can attend."} ] } ] } ] } ``` --- ## ๐ŸŒ Supported Regions and Languages CALL-E calling supports the following recipient region codes and spoken languages. Use these region codes with the SDK and API recipient settings. | Recipient region code | Language(s) | | --- | --- | | US | English | | SG | English | | MY | English | | IN | English, Hindi | | AE | English, Arabic | | AU | English | | CA | English | | GB | English | | VN | Vietnamese | | DE | English, German | | JP | Japanese | | FR | French | | MX | Spanish | | BR | Portuguese | | ID | English | | PH | English | | KE | English | ## ๐Ÿงฏ Troubleshooting If installation, authentication, or MCP tool verification fails, start with the [CALL-E troubleshooting guide](./docs/install/troubleshooting.md). It covers local agent environment issues such as Cursor sandbox/network restrictions, `CONNECT tunnel failed, response 403`, `calle auth login` failures, and verification that `plan_call`, `run_call`, and `get_call_run` are available. ## ๐Ÿงช Examples Runnable MCP client demos live under [examples](./examples): - [Standard MCP OAuth clients](./examples/mcp-oauth-client): TypeScript and Python clients for standard MCP OAuth over Streamable HTTP. - [CALL-E broker login MCP clients](./examples/mcp-broker-client): TypeScript and Python clients for CALL-E brokered login, local token cache, and MCP HTTP calls. - [Python batch runner](./examples/python-batch-runner): Python JSONL batch runner using `calle` CLI auth state, FastMCP, Rich output, and MCP tool-call metadata. These examples are runnable demos. Supported SDK and API surfaces should be documented separately from demo clients. ## ๐Ÿงญ Boundaries - The CLI is not an OAuth server and not an MCP server. It is a local wrapper over the CALL-E broker API and remote MCP HTTP endpoint. - CALL-E can be used directly or integrated through Skills, Plugins, MCP, ChatGPT Apps, SDKs, APIs, and enterprise systems. - SDKs and APIs are supported integration surfaces. Runnable examples are demos and starting points, not the canonical SDK or API contract. - Codex, Claude Code, OpenClaw, skills.sh, and Hermes Agent integrations intentionally reuse the shared `calle` CLI for authentication, token caching, JSON output, MCP tool discovery, and call workflow shortcuts. - The Cursor plugin reuses the existing remote CALL-E MCP server and does not implement a new local MCP server or backend. - The OpenClaw route in this repository does not register OpenClaw-native tools and does not require a gateway restart from this repository. - Hermes Agent support uses the ClawHub Prompt flow for the published OpenClaw skill; this repository does not maintain a separate Hermes plugin. - Future Copilot, VS Code, Gemini, Windsurf, Zed, Cline, Roo, Continue, or other ecosystem integrations should add their own ecosystem-specific entry point instead of sharing the Codex, Claude Code, or Cursor marketplaces. See [docs/agent-integration-layout.md](./docs/agent-integration-layout.md) for layout and marketplace naming rules. ## ๐Ÿ”’ Telemetry / usage data The `calle` CLI sends best-effort usage telemetry to CALL-E to diagnose installation, authentication, MCP tool availability, and early usage drop-off before a first `plan_call` reaches the server. CLI telemetry includes an anonymous installation ID, CLI version, integration source such as `cli/cli/`, `codex/codex_plugin/`, `claude/claude_code_plugin/`, `cursor/cursor_plugin/`, `openclaw/openclaw_cli_skill/`, or `skills_sh/skills_sh_skill/`, command stage, outcome, error type, and server host/hash. It does **not** include phone numbers, call goals, OAuth tokens, broker login URLs, full argument JSON, transcripts, or contact data. Disable CLI telemetry with any of: ```bash DO_NOT_TRACK=1 calle auth status CALLE_TELEMETRY=0 calle auth status calle auth status --no-telemetry ``` Broker and MCP requests still create service-side security, audit, and business operation logs needed to authenticate users and run calls. ## ๐Ÿ‘ฉโ€๐Ÿ’ป Development This repository uses Node `>=22`, pnpm `>=10.18.3`, Changesets, and GitHub Actions. ```bash pnpm install pnpm check pnpm test pnpm pack:dry-run ``` Package-specific checks: ```bash pnpm --filter @call-e/core check pnpm --filter @call-e/core test pnpm --filter @call-e/cli check pnpm --filter @call-e/cli test pnpm --filter @call-e/codex-plugin check pnpm --filter @call-e/codex-plugin test pnpm --filter @call-e/claude-plugin check pnpm --filter @call-e/claude-plugin test pnpm --filter @call-e/cursor-plugin check pnpm --filter @call-e/cursor-plugin test pnpm --filter @call-e/openclaw-cli-skill check pnpm --filter @call-e/openclaw-cli-skill test pnpm --filter @call-e/skills-sh-skill check pnpm --filter @call-e/skills-sh-skill test pnpm run check:examples ``` For user-visible package changes, add a changeset. The release workflow publishes changed `@call-e/*` packages to npm and maintains the `@call-e/codex-plugin@latest` and `@call-e/claude-plugin@latest` install aliases. ## ๐Ÿ’ฌ Community - Website: [heycall-e.com](https://www.heycall-e.com/) - Discord: [discord.gg/6AbXUzUV8w](https://discord.gg/6AbXUzUV8w)