Awesome Claude Call
FreeNot checkedGive Claude Code a phone number — outbound, inbound, and ring-when-done voice calls via Twilio + Patter. A Claude Code plugin.
About
Give Claude Code a phone number — outbound, inbound, and ring-when-done voice calls via Twilio + Patter. A Claude Code plugin.
README
Give Claude Code a phone number.
Make outbound calls, get rung when work is done, talk to your agent from anywhere.
A Claude Code plugin that bundles an MCP server built on Patter. The plugin layer holds no voice code — it composes existing telephony.
What it does
Three flows, one plugin install, real phone calls.
| Flow | What happens | Example |
|---|---|---|
| Claude → third party | Outbound. Claude dials, negotiates against an objective, and returns a structured outcome. | /claude-call:call-me +15555550200 book a table for 2 at 8pm Saturday |
| Claude → you | Stop hook. When the long task finishes, Claude rings you with a summary you can talk back to. | /claude-call:notify-me +15555550100 |
| You → Claude | Inbound. Dial your Twilio number from anywhere, drop straight into a voice conversation with the active session. | /claude-call:serve-me |
Every outbound prompt includes a hard-coded AI disclosure on the first turn, every phone number is redacted to last-4 in logs, and every credential lives in a mode-0600 file in your home directory.
Requirements
| Requirement | Why |
|---|---|
| Twilio Account SID, Auth Token, and a phone number you own | Carrier — this is how the call leaves your machine. |
| OpenAI API key | Default openai_realtime voice engine. |
| Claude Code 2.0+, Node 20+, macOS or Linux | Runtime. Windows via WSL is untested. |
Optional alternatives, pick at most one:
- ElevenLabs ConvAI — needs
ELEVENLABS_API_KEYandELEVENLABS_AGENT_ID. - Pipeline mode — Deepgram STT, ElevenLabs TTS, OpenAI LLM (all three keys).
Install
Open any Claude Code session (terminal, desktop app, or IDE extension) and run:
/plugin marketplace add https://github.com/PatterAI/awesome-claude-call
/plugin install claude-call@claude-call
/claude-call:setup
/exit
That is the entire setup. The four steps:
- Add the marketplace. Clones this repo into
~/.claude/plugins/. - Install the plugin. Registers the bundled MCP server, slash commands, hooks, and the
phone-agentsubagent. Nonpm installis required — the server ships with pre-builtdist/files. - Configure credentials. The wizard asks for Twilio Account SID, Auth Token, phone number, and an OpenAI key. If a
.envalready has those, it can import them directly. Credentials land in~/.claude-call/credentials(mode0600) and are never stored anywhere else. - Restart the session. The bundled MCP server picks up the new credentials on the next
claudelaunch.
Then place a call:
/claude-call:call-me +15551234567 say hello and confirm the line works
The Cloudflare tunnel spins up lazily on the first outbound call — no manual webhook setup, no ngrok.
Already have credentials? Skip to step 4. Updating an existing install? Re-run
/claude-call:setup, then/exit.
Quick start
> /claude-call:call-me +15555550200 ask if there is a table for 2 at 8pm tonight
Claude dispatches the phone-agent subagent, dials, has the conversation, and reports back:
Confirmed. Table for 2 at 20:00 tonight, under "Smith".
Transcript: 4 turns - Duration: 28s - Cost: $0.04
Slash commands
| Command | Behavior |
|---|---|
/claude-call:call-me <number> <objective> |
Outbound call to a third party with autonomous goal pursuit. |
/claude-call:notify-me <number> |
Arms a Stop hook. Claude calls you when the current task finishes. |
/claude-call:notify-me-cancel |
Disarms /claude-call:notify-me. |
/claude-call:dial-me-on-blocked <number> |
Arms a Notification hook. Claude calls you whenever it stalls on permission or idle prompts. |
/claude-call:dial-me-on-blocked-cancel |
Disarms /claude-call:dial-me-on-blocked. |
/claude-call:calls |
Lists recent calls (status, duration, cost). |
/claude-call:serve-me |
Arms the inbound voice agent — callers reach Claude. |
/claude-call:serve-me-cancel |
Disarms inbound. |
Numbers must be E.164, e.g. +15555550100.
How it works
Claude Code session
/claude-call:* slash commands phone-agent subagent Stop / Notification / SessionStart hooks
\ | /
\ | /
v v v
stdio MCP transport
|
v
bundled server (server/, ~800 LOC TS)
make_call - call_third_party - get_calls - get_transcript
|
v
Patter SDK + Cloudflare tunnel (lazy, first call)
|
v
Twilio - PSTN
The plugin layer is roughly 700 lines of shell and markdown. The bundled server in server/ is roughly 800 lines of TypeScript that wraps the getpatter SDK directly — no external patter-mcp repo required.
Port discovery probes a range ([8002, 8099] by default) and picks one that is bindable on 127.0.0.1 and silent on ::1. The dual check is load-bearing — probing only IPv4 would miss a Docker IPv6 hijack; probing only IPv6 would miss a stray IPv4 conflict.
Configuration
| Path or var | Default | Purpose |
|---|---|---|
~/.claude-call/credentials |
— | Telephony credentials (mode 0600). Managed by /claude-call:setup. |
~/.claude-call/calls.ndjson |
— | Append-only call history. |
~/.claude-call/log.ndjson |
— | Append-only event log (phone numbers redacted). |
~/.claude-call/inbound-armed |
— | Flag file. Created by /claude-call:serve-me, removed by its cancel command. |
CLAUDE_CALL_STATE_DIR |
~/.claude-call/state |
Flag-file directory for armed hooks. |
CLAUDE_CALL_LOG |
~/.claude-call/log.ndjson |
Override the log path. |
Privacy and security
| Guarantee | How it's enforced |
|---|---|
| AI disclosure on every outbound call | Hard-coded into outbound system prompts on the first turn. Non-overridable in v0.2. |
| Phone numbers redacted to last-4 in all logs | cc_redact_phone runs on every log line that touches a number. |
Credentials file mode 0600 |
Server refuses to start if the file is world- or group-readable. |
State directory mode 0700 |
Created with mkdir -m 0700 — owner-only. |
| No surprise outbound HTTP from the plugin | Only Twilio, OpenAI / ElevenLabs / Deepgram, and Cloudflare's tunnel control plane (when serving inbound or after the first outbound call). |
| Rate limits and budget caps | Enforced upstream by Patter. |
Development
make install-dev # verify bats + jq + node are installed
make ci # full CI: server build + typecheck + test + bats
make server-test # bundled server tests only
make test # bats tests only
make lint # shellcheck (best-effort)
GitHub Actions CI runs on every push and PR (Ubuntu and macOS matrix). Manual end-to-end smoke tests live in tests/e2e.md and require real Twilio credentials.
Project docs
| Doc | What's in it |
|---|---|
| CHANGELOG.md | Versioned change log. |
| tests/e2e.md | Manual end-to-end smoke-test checklist. |
| SECURITY.md | How to report a security issue. |
| CITATION.cff | Cite this work. |
License
Installing Awesome Claude Call
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/PatterAI/awesome-claude-callFAQ
Is Awesome Claude Call MCP free?
Yes, Awesome Claude Call MCP is free — one-click install via Unyly at no cost.
Does Awesome Claude Call need an API key?
No, Awesome Claude Call runs without API keys or environment variables.
Is Awesome Claude Call hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Awesome Claude Call in Claude Desktop, Claude Code or Cursor?
Open Awesome Claude Call on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectAmap Maps Mcp Server
MCP server for using the AMap Maps API
by duxiaohuiSupabase
Database, auth and storage
by SupabaseEverything
Reference / test server with prompts, resources, and tools.
Git
Tools to read, search, and manipulate Git repositories.
Sequential Thinking
Dynamic and reflective problem-solving through thought sequences.
Time
Time and timezone conversion capabilities.
Compare Awesome Claude Call with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
