Claude → third party
Outbound. Claude dials, negotiates against an objective, and reports back with a structured outcome.
/claude-call:call-me +1555… book a table
claude-call
v0.2.4
Claude Code plugin · v0.2.4 · MIT
A two-way voice bridge for Claude Code. Make outbound calls, get rung when work is done, talk to your agent from anywhere.
/plugin marketplace add github.com/PatterAI/awesome-claude-call
Powered by Patter · Twilio · OpenAI Realtime
What it does
Outbound. Claude dials, negotiates against an objective, and reports back with a structured outcome.
/claude-call:call-me +1555… book a table
Stop hook arms when you run /notify-me. When the long task finishes, Claude rings you with a summary you can talk back to.
/claude-call:notify-me +1555…
Dial your Twilio number from anywhere. Drops you straight into a voice conversation with the active session.
/claude-call:serve-me
Installation
# 1. Add the marketplace > /plugin marketplace add https://github.com/PatterAI/awesome-claude-call # 2. Install the plugin (registers MCP server, hooks, slash commands) > /plugin install claude-call@claude-call # 3. Configure credentials (Twilio + OpenAI) > /claude-call:setup # 4. Restart, then place a call > /exit > /claude-call:call-me +15555550200 book a table for 2 at 8pm Dialing… ringing… agent connected. Confirmed. Sat 20:00, table for 2, under "Smith". Transcript: 4 turns · Cost: $0.04 · Duration: 28s
Slash commands
| Command | Behavior |
|---|---|
| /claude-call:call-me <num> <objective> | Outbound call to a third party with autonomous goal pursuit. Returns transcript and structured outcome. |
| /claude-call:notify-me <num> | 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 <num> | 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 with status, duration, and cost. |
| /claude-call:serve-me | Arms the inbound voice agent — callers reach Claude. |
| /claude-call:serve-me-cancel | Disarms inbound. |
How it works
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. Port discovery probes the range [8002, 8099] and picks one that is bindable on 127.0.0.1 and silent on ::1, so a stray Docker container on [::]:8000 can't hijack tunnel audio.
Privacy and security
Hard-coded into outbound system prompts on the first turn. Non-overridable in v0.2.
Every log line that touches a number runs through cc_redact_phone — last 4 digits only.
Server refuses to start if ~/.claude-call/credentials is world- or group-readable.
The plugin only talks to Twilio, OpenAI, and Cloudflare's tunnel control plane. Nothing else leaves the box.