Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Awesome Claude Call

FreeNot checked

Give Claude Code a phone number — outbound, inbound, and ring-when-done voice calls via Twilio + Patter. A Claude Code plugin.

GitHubEmbed

About

Give Claude Code a phone number — outbound, inbound, and ring-when-done voice calls via Twilio + Patter. A Claude Code plugin.

README

make claude call — A curated list of agents, prompts, templates, and tools for connecting Claude to real phone calls.

release license ci tests node powered by patter

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_KEY and ELEVENLABS_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:

  1. Add the marketplace. Clones this repo into ~/.claude/plugins/.
  2. Install the plugin. Registers the bundled MCP server, slash commands, hooks, and the phone-agent subagent. No npm install is required — the server ships with pre-built dist/ files.
  3. Configure credentials. The wizard asks for Twilio Account SID, Auth Token, phone number, and an OpenAI key. If a .env already has those, it can import them directly. Credentials land in ~/.claude-call/credentials (mode 0600) and are never stored anywhere else.
  4. Restart the session. The bundled MCP server picks up the new credentials on the next claude launch.

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

MIT © 2026 PatterAI. Built on Patter.

from github.com/PatterAI/awesome-claude-call

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-call

FAQ

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

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