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 Β· Try on ClawHub Β· Get started Β· Docs Β· Troubleshooting Β· Discord
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.
- 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) - Define your goal in natural language; CALL-E executes the task from planning to follow-up.
- Reliable Voice Interaction - CALL-E handles natural conversation flow, tone, interruptions, and changing call conditions in real time.
| 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. |
Choose the integration path that matches how you want to use CALL-E.
| Goal | Use | Start here |
|---|---|---|
| Add CALL-E to your app or backend | SDK / API (in development) | SDK docs (docs/sdk.md) and API docs (docs/api.md) will be added later. |
| Install CALL-E into an AI agent | Agent Install | Copy the stable prompt below or use the manual install guide. |
SDK and API support is currently in development.
The documentation structure is reserved here, and final SDK repository links will be added when the SDK/API surface is ready:
docs/
βββ sdk.md # In development
βββ api.md # In development
These docs will cover direct integration options for applications, backend services, and business systems once the SDK/API surface is ready.
Representative SDK sample:
import { CalleClient } from "@calle-ai/calle";
const client = new CalleClient({
apiKey: process.env.CALLE_API_KEY!,
baseUrl: "https://api.example.com",
});
const call = await client.calls.createAndWait(
{
task: "Call the recipient and ask whether they can attend Friday lunch.",
recipient: { phone: "+14155550100", region: "US", locale: "en-US" },
resultSchema: {
type: "object",
required: ["can_attend"],
properties: {
can_attend: { type: "string", enum: ["yes", "no", "unknown"] },
},
additionalProperties: false,
},
metadata: { workflow_run_id: "wf_123" },
},
{ idempotencyKey: "wf_123_friday_lunch" },
);
console.log(call.status);
console.log(call.structuredResult);Representative API sample:
curl https://api.example.com/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 the recipient and ask whether they can attend Friday lunch.",
"recipient": {
"phone": "+14155550100",
"region": "US",
"locale": "en-US"
},
"result_schema": {
"type": "object",
"required": ["can_attend"],
"properties": {
"can_attend": {
"type": "string",
"enum": ["yes", "no", "unknown"]
}
},
"additionalProperties": false
},
"metadata": {
"workflow_run_id": "wf_123"
},
"webhook_url": "https://example.com/calle/webhook"
}'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:
Install CALL-E for me: https://raw.githubusercontent.com/CALLE-AI/call-e-integrations/main/docs/install/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.
β οΈ Safety notice: CALL-E can place real outbound phone calls. Always verify the plan, recipient, and user intent before running a phone task.
If installation, authentication, or MCP tool verification fails, start with the CALL-E troubleshooting guide.
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.
plan_call β run_call β get_call_run
| Capability | Surface |
|---|---|
| Brokered browser login | calle auth login |
| Private local token cache | ~/.calle-mcp/cli |
| MCP client configuration | Streamable HTTP URL or calle mcp config |
| Tool discovery | calle mcp tools |
| Call planning | calle call plan or MCP plan_call |
| Real outbound call execution | calle call start, calle call run, or MCP run_call |
| Status, activity, summary, details, transcript | calle call status or MCP get_call_run |
| Agent-client UX | $calle in Codex; calle through skills.sh; /calle:calle in Claude Code; calle MCP/skill in Cursor; Phone Call - CALL-E in OpenClaw; ClawHub Prompt flow in Hermes Agent |
plan_call creates the call plan and returns run credentials. run_call starts the real outbound call. get_call_run returns progress and final results when available.
calle auth login
calle auth login --start-only --no-browser-open
calle auth status
calle auth logout
calle mcp config
calle mcp tools
calle mcp call plan_call --args-json '{"to_phones":["+15551234567"],"goal":"Confirm the appointment"}'
calle call plan --to-phone +15551234567 --goal "Confirm the appointment"
calle call start --to-phone +15551234567 --goal "Confirm the appointment"
calle call run --plan-id <plan_id> --confirm-token <confirm_token>
calle call status --run-id <run_id>Defaults used by the CLI:
Base URL: https://seleven-mcp-sg.airudder.com
MCP channel: openagent_oauth
MCP URL: https://seleven-mcp-sg.airudder.com/mcp/openagent_oauth
Token cache: ~/.calle-mcp/cli
Successful command stdout is JSON except --help. Some top-level or local
failures may print plain stderr. Access tokens are read from the local cache and
are never printed.
For complete command and option details, see
packages/cli/docs/cli-reference.md.
- Real calls may contact external people or businesses.
- Always plan first.
- If the user asked to place a call from an agent-facing flow, prefer
calle call startso planning and execution confirmation stay inside the CLI. - If the user only asked to verify setup or draft a plan, do not place the call.
- Do not guess phone numbers, country codes, language, region, execution confirmation data, or
run_id. - Do not print, request, or expose access tokens.
| Path | Package | Role |
|---|---|---|
packages/core |
@call-e/core |
Shared runtime helpers for brokered auth, private token cache files, JSON HTTP, and MCP Streamable HTTP calls. |
packages/cli |
@call-e/cli |
Shared calle command for auth, MCP config, tool listing, and phone-call workflow shortcuts. |
packages/codex-plugin |
@call-e/codex-plugin |
Codex plugin bundle that exposes CALL-E as the $calle skill. |
packages/claude-plugin |
@call-e/claude-plugin |
Claude Code plugin bundle that exposes CALL-E through the shared CLI and /calle:calle. |
packages/cursor-plugin |
@call-e/cursor-plugin |
Cursor plugin bundle that exposes CALL-E through MCP, a calle skill, and a safety rule. |
packages/openclaw-cli-skill |
@call-e/openclaw-cli-skill |
Private validation/source package for the OpenClaw skill published through ClawHub. |
packages/skills-sh-skill |
@call-e/skills-sh-skill |
Private validation package for the portable skills.sh calle skill. |
.agents/plugins/marketplace.json # Codex marketplace entry
.claude-plugin/marketplace.json # Claude Code marketplace entry
.cursor-plugin/marketplace.json # Cursor marketplace entry
packages/codex-plugin/plugin/ # Codex plugin source
packages/claude-plugin/plugin/ # Claude Code plugin source
packages/cursor-plugin/plugin/ # Cursor plugin source
packages/openclaw-cli-skill/skills/ # OpenClaw skill source
skills/calle/ # skills.sh compatible skill source
packages/cli/ # Shared calle CLI
packages/core/ # Shared runtime helpers
examples/ # Runnable MCP demos
| Surface | Identifier | Value |
|---|---|---|
| Codex marketplace | name |
call-e-codex |
| Codex marketplace | display name | CALL-E |
| Codex plugin entry | name | calle |
| Codex plugin source | path | ./packages/codex-plugin/plugin |
| Claude Code marketplace | name |
call-e-claude |
| Claude Code plugin entry | name | calle |
| Claude Code plugin source | path | ./packages/claude-plugin/plugin |
| Claude Code CLI attribution | env | claude/claude_code_plugin/<version> |
| Cursor marketplace | name |
call-e-cursor |
| Cursor plugin entry | name | calle |
| Cursor plugin display name | displayName | CALL-E |
| Cursor plugin source | path | ./packages/cursor-plugin/plugin |
| Cursor MCP server | key | calle |
| Cursor CLI attribution | env | cursor/cursor_plugin/<version> |
| OpenClaw skill | slug | phone-call-calle |
| OpenClaw skill | name | Phone Call - CALL-E |
| skills.sh skill | name | calle |
| skills.sh skill source | path | skills/calle |
| skills.sh CLI attribution | env | skills_sh/skills_sh_skill/<version> |
Runnable MCP client demos live under examples:
- Standard MCP OAuth clients: TypeScript and Python clients for standard MCP OAuth over Streamable HTTP.
- CALL-E broker login MCP clients: TypeScript and Python clients for CALL-E brokered login, local token cache, and MCP HTTP calls.
- Python batch runner: Python JSONL batch runner using
calleCLI 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.
- 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
calleCLI 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 for layout and marketplace naming rules.
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/<version>, codex/codex_plugin/<version>, claude/claude_code_plugin/<version>, cursor/cursor_plugin/<version>, openclaw/openclaw_cli_skill/<version>, or skills_sh/skills_sh_skill/<version>, 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:
DO_NOT_TRACK=1 calle auth status
CALLE_TELEMETRY=0 calle auth status
calle auth status --no-telemetryBroker and MCP requests still create service-side security, audit, and business operation logs needed to authenticate users and run calls.
This repository uses Node >=22, pnpm >=10.18.3, Changesets, and GitHub Actions.
pnpm install
pnpm check
pnpm test
pnpm pack:dry-runPackage-specific checks:
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:examplesFor 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.
- Website: heycall-e.com
- Discord: discord.gg/6AbXUzUV8w