CALL-E Integrations

June 15, 2026 · View on GitHub

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 · Try on ClawHub · Get started · Troubleshooting · Discord

npm Codex Claude Code Cursor OpenClaw Hermes Agent MCP

💡 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

FeatureDescription
Live Task ProgressTrack task from planning to final result with status, activity history, call outcomes, and next steps.
Smart Goal ClarificationAsk missing details before execution (who, when, language, success criteria).
Managed Call ExecutionHandle number/line setup, outbound dialing, monitoring, and result capture.
Actionable Call ResultsReturn summaries, transcripts, metadata, and recommended next steps.
Scheduled & Batch CallingSchedule individual or batch calls; clarify timing when needed.
In-Task OptimizationLearn from prior attempts and adjust next steps.
Continuous ImprovementImprove over time based on historical patterns and outcomes.
Real-World Voice RuntimeHandle live pickup, voicemail, screening, hold, transfers, silence, interruptions.
Use Wherever Work HappensIntegrate via Skills, Plugins, MCP, ChatGPT Apps, SDKs, APIs, or enterprise systems.
Built-In Safety & GovernanceNumber 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.

GoalUseStart here
Install CALL-E into an AI agentAgent InstallCopy the stable prompt below or use the manual install guide.
Connect a Streamable HTTP MCP clientMCPUse the openagent_oauth MCP guide.
Add CALL-E with a server SDKSDKInstall the published TypeScript or Python SDK and follow the SDK docs.
Call CALL-E from your backend directlyAPIUse the Developer 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:

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.

⚠️ 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:

You can view your API keys in the CALL-E dashboard.

Install the SDK package for your runtime:

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:

export CALLE_API_KEY="calle_live_key"

TypeScript Create and wait sample:

import { CalleClient } from "@call-e/calle";

const client = new CalleClient({
  apiKey: process.env.CALLE_API_KEY!,
});

const call = await client.calls.createAndWait({
  task: "Call <E164_PHONE> 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:

import os
from calle import CalleClient

client = CalleClient(api_key=os.environ["CALLE_API_KEY"])

call = client.calls.create_and_wait(
    task="Call <E164_PHONE> 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:

You can view your API keys in the CALL-E dashboard.

Set your API key and base URL before running curl examples:

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:

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": ["<E164_PHONE>"],
        "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:

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:

{
  "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 codeLanguage(s)
USEnglish
SGEnglish
MYEnglish
INEnglish, Hindi
AEEnglish, Arabic
AUEnglish
CAEnglish
GBEnglish
VNVietnamese
DEEnglish, German
JPJapanese
FRFrench
MXSpanish
BRPortuguese
IDEnglish
PHEnglish
KEEnglish

🧯 Troubleshooting

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.

🧪 Examples

Runnable MCP client demos live under examples:

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 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/<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-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.

pnpm install
pnpm check
pnpm test
pnpm pack:dry-run

Package-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: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