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