CAT
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Cross AI Tools

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

Better Call Claude

sns45/better-call-claude
1authSTDIOregistry active
Summary

This lets Claude make and receive phone calls, send SMS messages, and communicate via WhatsApp without you being at your keyboard. You can call Claude to kick off a refactor, then get a callback 20 minutes later when it hits a decision point. It supports Twilio and Telnyx for voice and SMS, plus a free Baileys integration that uses your personal WhatsApp account with no API costs. Context persists across channels, so you can start a conversation on a call and continue it via text. Setup involves either a phone provider account plus Tailscale Funnel for webhooks, or just the Baileys pairing flow if you only want WhatsApp. Best for long-running tasks where you want async updates on your phone instead of polling a terminal.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Better Call Claude

Better Call Claude - Agentic AI Communication Solution

Bi-directional communication for Claude Code via Voice Calls, SMS, and WhatsApp.
Call Claude from your phone to start tasks, and receive callbacks when Claude needs input or wants to share status.

📞 "Hey Claude, refactor the auth module and call me when you're done or need a decision."

[20 minutes later, phone rings]

🤖 "I've finished the refactor but found a security issue. Should I fix it now or create a ticket?"

💬 Or via SMS/WhatsApp:

You: "Claude, how's the deployment going?"

Claude: "Deployment complete. 3 services updated, all health checks passing."

Features

  • 📱 Inbound calls - Call Claude Code from your phone to start tasks
  • 📲 Outbound calls - Claude calls you when done, stuck, or needs decisions
  • 💬 SMS messaging - Send and receive text messages with Claude
  • 📱 WhatsApp - Full WhatsApp Business integration
  • 🔄 Cross-channel context - Start on voice, continue on WhatsApp seamlessly
  • 🔗 Persistent sessions - Claude stays alive listening for WhatsApp messages
  • 🔒 Secure transport - Tailscale Funnel with guided auto-setup
  • 🗣️ Natural conversations - Multi-turn interactions across all channels
  • 🔧 Tool composable - Claude can use other tools while communicating
  • ⚡ Auto-webhook updates - Twilio webhooks auto-update when URL changes
  • 🆓 Free WhatsApp via Baileys - Personal WhatsApp with zero API costs, no business verification
  • ⌚ Works anywhere - Phone, smartwatch, or any device

⚠️ Testing Status

ChannelProviderStatus
VoiceTwilio✅ Tested & Working
WhatsAppTwilio Sandbox✅ Tested & Working
SMSTwilio⏳ Pending A2P 10DLC verification
VoiceTelnyx🔬 Not yet tested
SMSTelnyx🔬 Not yet tested
WhatsAppTelnyx🔬 Not yet tested
WhatsAppBaileys (free)🔬 New - testing welcome

Contributions welcome for testing other provider/channel combinations!


Quick Start

1. Choose Your Setup

SetupWhat You GetCostAccounts Needed
Baileys onlyWhatsApp messagingFreeNone
Twilio/TelnyxVoice + SMS + WhatsApp~$1/mo + usageTwilio/Telnyx + OpenAI
HybridVoice + SMS (Twilio) + WhatsApp (Baileys)~$1/mo + voice usageTwilio/Telnyx + OpenAI

Just want WhatsApp? Skip to Option C: Baileys — no accounts, no API keys, completely free.

2. Set Up Phone Provider

Option A: Telnyx (Recommended - 50% cheaper)
  1. Create account at portal.telnyx.com and verify identity
  2. Buy a phone number (~$1/month)
  3. Create a Voice API application:
    • Set webhook URL to your tunnel URL + /webhook/telnyx/inbound
    • Set API version to v2
  4. Enable SMS on your phone number:
    • Go to Messaging and create a Messaging Profile
    • Assign your phone number to the profile
    • Set SMS webhook URL to your tunnel URL + /webhook/telnyx/sms
  5. Enable WhatsApp (optional):
    • Go to WhatsApp in portal
    • Complete WhatsApp Business verification
    • Set webhook URL to your tunnel URL + /webhook/telnyx/whatsapp
  6. Verify your phone number for outbound calls
  7. Get your Connection ID (or Messaging Profile ID) and API Key
Option B: Twilio
  1. Create account at twilio.com/console
  2. Buy a phone number
  3. Configure webhooks for your number:
    • Voice webhook: your tunnel URL + /webhook/twilio/inbound
    • SMS webhook: your tunnel URL + /webhook/twilio/sms
  4. Enable WhatsApp (optional):
    • Go to WhatsApp Senders
    • Complete WhatsApp Business setup
    • Set webhook URL to your tunnel URL + /webhook/twilio/whatsapp
  5. Get your Account SID and Auth Token
Option C: Baileys (Free WhatsApp — no API provider needed)

Baileys connects directly to WhatsApp's Web protocol via WebSocket. It uses your personal WhatsApp account — no business verification, no API costs, no Twilio/Telnyx required.

How it works: Same as WhatsApp Web — you link a device by scanning a QR code.

Step 1: Clone and install

git clone https://github.com/sns45/better-call-claude
cd better-call-claude
bun install

Step 2: Pair your WhatsApp

bun run baileys:pair
  1. A QR code will appear in your terminal
  2. Open WhatsApp on your phone > Settings > Linked Devices > Link a Device
  3. Scan the QR code
  4. Wait for "Paired successfully!" message

Your session is saved in data/baileys-auth/ — you won't need to scan again.

Step 3: Add to Claude Code (~/.claude.json or ~/.claude/settings.json):

{
  "mcpServers": {
    "better-call-claude": {
      "command": "bun",
      "args": ["run", "/path/to/better-call-claude/src/index.ts"],
      "env": {
        "BETTERCALLCLAUDE_WHATSAPP_PROVIDER": "baileys",
        "BETTERCALLCLAUDE_USER_PHONE_NUMBER": "+1234567890"
      }
    }
  }
}

That's it! No Tailscale, no Twilio, no OpenAI keys needed.

Step 4: Restart Claude Code and test

Send a WhatsApp message to yourself (or have someone message you) — Baileys receives it and spawns a Claude task. Or ask Claude to send you a WhatsApp:

"Send me a WhatsApp saying hello"

Option D: Hybrid (Twilio/Telnyx voice + Baileys WhatsApp)

Get the best of both worlds: Twilio/Telnyx handles voice calls and SMS, Baileys handles WhatsApp for free.

  1. Set up Twilio or Telnyx (Options A/B above)
  2. Run bun run baileys:pair to pair your WhatsApp
  3. Add to your MCP config:
{
  "env": {
    "BETTERCALLCLAUDE_PHONE_PROVIDER": "twilio",
    "BETTERCALLCLAUDE_WHATSAPP_PROVIDER": "baileys",
    "BETTERCALLCLAUDE_PHONE_ACCOUNT_SID": "your-account-sid",
    "BETTERCALLCLAUDE_PHONE_AUTH_TOKEN": "your-auth-token",
    "BETTERCALLCLAUDE_PHONE_NUMBER": "+15551234567",
    "BETTERCALLCLAUDE_USER_PHONE_NUMBER": "+15559876543",
    "BETTERCALLCLAUDE_OPENAI_API_KEY": "sk-..."
  }
}

Voice calls and SMS go through Twilio. WhatsApp goes through Baileys (free).

3. Set Up Tailscale Funnel (for webhooks)

Skip this step if you're using Baileys-only mode (Option C). Baileys doesn't need webhooks.

Tailscale Funnel provides free, stable public URLs for receiving webhooks from your phone provider.

Why Tailscale? Free unlimited tunnels, stable URLs (no random subdomains), enterprise-grade security.

Path: Better Call Claude uses /bcc path (e.g., https://your-hostname.ts.net/bcc) to avoid conflicts with other services.

First-time setup (automated):

When you first start the MCP server, it will guide you through setup:

  1. Install Tailscale (if not installed):

    # macOS
    brew install tailscale
    
    # Linux
    curl -fsSL https://tailscale.com/install.sh | sh
    
  2. Authenticate - The server will auto-run tailscale up and open your browser

  3. Enable Funnel - Visit the URL shown in the terminal to enable Funnel on your tailnet (one-time admin step)

That's it! The server handles the rest automatically.

4. Install Better Call Claude

# Quick start with bunx (recommended)
bunx better-call-claude

# Or install globally
bun install -g better-call-claude
better-call-claude

5. Add to Claude Code

Add to ~/.claude/settings.json:

{
  "mcpServers": {
    "better-call-claude": {
      "command": "bunx",
      "args": ["better-call-claude"],
      "env": {
        "BETTERCALLCLAUDE_PHONE_PROVIDER": "telnyx",
        "BETTERCALLCLAUDE_PHONE_ACCOUNT_SID": "your-connection-id",
        "BETTERCALLCLAUDE_PHONE_AUTH_TOKEN": "your-api-key",
        "BETTERCALLCLAUDE_PHONE_NUMBER": "+15551234567",
        "BETTERCALLCLAUDE_USER_PHONE_NUMBER": "+15559876543",
        "BETTERCALLCLAUDE_OPENAI_API_KEY": "sk-..."
      }
    }
  }
}

Note: Tailscale setup is automatic on first run. The server will guide you through installation and authentication if needed.

Restart Claude Code. Done!


Environment Variables

Required Variables

VariableDescription
BETTERCALLCLAUDE_PHONE_PROVIDERtelnyx or twilio
BETTERCALLCLAUDE_PHONE_ACCOUNT_SIDProvider account/connection ID
BETTERCALLCLAUDE_PHONE_AUTH_TOKENProvider API key/auth token
BETTERCALLCLAUDE_PHONE_NUMBERYour Telnyx/Twilio phone number (E.164)
BETTERCALLCLAUDE_WHATSAPP_NUMBERWhatsApp number if different (e.g., Twilio Sandbox)
BETTERCALLCLAUDE_USER_PHONE_NUMBERYour personal phone number
BETTERCALLCLAUDE_OPENAI_API_KEYOpenAI API key for TTS/STT

Baileys (Free WhatsApp)

VariableDefaultDescription
BETTERCALLCLAUDE_WHATSAPP_PROVIDER(unset)Set to baileys to enable free WhatsApp
BETTERCALLCLAUDE_BAILEYS_AUTH_DIRdata/baileys-authSession credential directory

Baileys-only mode: When WHATSAPP_PROVIDER=baileys and no Twilio/Telnyx credentials are set, only USER_PHONE_NUMBER is required. No Tailscale, no OpenAI key needed.

Tailscale (Optional)

VariableDefaultDescription
TAILSCALE_HOSTNAMEauto-detectedOverride Tailscale hostname

Optional Variables

VariableDefaultDescription
BETTERCALLCLAUDE_TTS_VOICEonyxOpenAI voice (alloy, echo, fable, onyx, nova, shimmer)
BETTERCALLCLAUDE_PORT3333Local HTTP server port
BETTERCALLCLAUDE_TRANSCRIPT_TIMEOUT_MS180000Speech timeout (3 min)
BETTERCALLCLAUDE_STT_SILENCE_DURATION_MS800End-of-speech detection

Usage

Voice Calls

Voice Call Example - Comic Style

You → Claude (Inbound Calls)

Call your Telnyx/Twilio phone number from your personal phone:

📱 "Hey Claude, I need you to write unit tests for the payment module. Call me when you're done."

Claude will acknowledge and start working. When done, it calls you back.

Claude → You (Outbound Calls)

Claude can initiate calls when it needs your input:

🤖 "I found 3 different approaches for the caching layer. Want me to explain them so you can choose?"

Voice Commands During Calls

  • "Hang up" or "Goodbye" - End the call
  • "Hold on" - Claude waits for you to continue
  • "Go ahead" - Claude continues with the task
  • "Cancel that" - Abort current action

SMS Messaging

You → Claude (Inbound SMS)

Text your Telnyx/Twilio number:

💬 "Hey Claude, what's the status of the deployment?"

Claude will respond via SMS:

🤖 "Deployment is 80% complete. Running integration tests now. ETA: 5 minutes."

Claude → You (Outbound SMS)

Claude can send you text updates:

🤖 "Build failed on line 42 of auth.ts. Reply with 'fix' to auto-fix or 'skip' to continue."


WhatsApp

You → Claude (Inbound WhatsApp)

Send a WhatsApp message to your business number:

💬 "Show me the error logs from the last hour"

Claude responds in WhatsApp:

🤖 "Found 3 errors:\n1. Connection timeout at 14:32\n2. Auth failure at 14:45\n3. Rate limit at 15:01\n\nWant me to investigate any of these?"

Claude → You (Outbound WhatsApp)

Claude can send rich WhatsApp messages:

🤖 "Code review complete! Found 2 issues:\n• Line 23: Unused variable\n• Line 67: Missing error handling\n\nReply 'fix' to auto-fix or 'details' for more info."


Cross-Channel Context

Start a task on voice and seamlessly continue on WhatsApp - Claude remembers everything.

WhatsApp Continuation Example

Example Flow

  1. Call Claude:

    📞 "Hey Claude, run the todo app in dev mode and let's continue on WhatsApp"

  2. Claude starts the app and enters WhatsApp listening mode:

    🤖 "Todo app running on port 5173. Send me WhatsApp messages for more instructions."

  3. Send WhatsApp message:

    💬 "Expose it via localtunnel and add the URL to allowed hosts"

  4. Claude responds via WhatsApp:

    🤖 "Done! Localtunnel URL: https://xyz.loca.lt - I've added it to vite.config.ts allowedHosts"

  5. Continue the conversation:

    💬 "What's the public IP so I can access it remotely?"

    🤖 "Your public IP is 203.0.113.42. Access the app at https://xyz.loca.lt"

Key phrases to trigger WhatsApp listening:

  • "Continue on WhatsApp"
  • "Let's talk on WhatsApp"
  • "Listen for my WhatsApp messages"

WhatsApp Sandbox (Twilio)

For testing, you can use Twilio's WhatsApp Sandbox instead of a full WhatsApp Business account.

  1. Go to Twilio Console > Messaging > WhatsApp Sandbox
  2. Send the join code to the sandbox number (+1 415 523 8886)
  3. Set the webhook URL to {your-tailscale-url}/bcc/webhook/twilio/whatsapp
  4. Add to your config:
    "BETTERCALLCLAUDE_WHATSAPP_NUMBER": "+14155238886"
    

Note: Sandbox requires re-joining every 72 hours.


How It Works

┌─────────────────┐         ┌──────────────────────────────────┐
│   Your Phone    │────────>│      Phone Provider              │
│  📞 Voice       │<────────│   (Telnyx/Twilio)                │
│  💬 SMS         │         │                                  │
│  📱 WhatsApp    │         │   • Voice API                    │
└─────────────────┘         │   • Messaging API                │
                            │   • WhatsApp Business API        │
                            └──────────────┬───────────────────┘
                                           │ webhooks
                                           ▼
                            ┌──────────────────────────────────┐
                            │     Transport Layer              │
                            │     (Tailscale Funnel)           │
                            └──────────────┬───────────────────┘
                                           │
                                           ▼
┌─────────────────┐         ┌──────────────────────────────────┐
│   Claude Code   │◄──────► │   Better Call Claude MCP Server  │
│   (your IDE)    │  stdio  │   (local, port 3333)             │
└─────────────────┘         │                                  │
                            │   • Voice handling               │
                            │   • SMS handling                 │
                            │   • WhatsApp handling            │
                            │   • Conversation management      │
                            └──────────────┬───────────────────┘
                                           │
                                           ▼
                            ┌──────────────────────────────────┐
                            │         OpenAI API               │
                            │    (Whisper STT + TTS)           │
                            │    (Voice calls only)            │
                            └──────────────────────────────────┘

Communication Flows

Voice:

  1. Inbound: You call → Provider → Webhook → MCP Server → Claude Code
  2. Outbound: Claude Code → MCP Server → Provider → Your phone rings
  3. Speech: Your voice → Whisper STT → Text → Claude → TTS → Audio playback

SMS:

  1. Inbound: You text → Provider → Webhook → MCP Server → Claude Code
  2. Outbound: Claude Code → MCP Server → Provider API → SMS delivered

WhatsApp:

  1. Inbound: You message → Provider → Webhook → MCP Server → Claude Code
  2. Outbound: Claude Code → MCP Server → Provider API → WhatsApp delivered

MCP Tools

Voice Tools

receive_inbound_call

Accept and process an incoming call from the user.

initiate_call

Start a phone call to the user.

const { callId, response } = await initiate_call({
  message: "Hey! I finished the refactor. What should I work on next?"
});

continue_call

Continue an active call with follow-up messages.

const response = await continue_call({
  call_id: callId,
  message: "Got it. Should I also add the caching layer?"
});

speak_to_user

Speak without waiting for a response (for acknowledgments).

await speak_to_user({
  call_id: callId,
  message: "Let me search for that. One moment..."
});

end_call

End an active call.

await end_call({
  call_id: callId,
  message: "Perfect, I'll get started. Talk soon!"
});

get_call_status

Check status of current or recent calls.

const status = await get_call_status({ call_id: callId });
// { state: "active", duration: 45, transcript: [...] }

Messaging Tools

receive_inbound_message

Check for incoming SMS or WhatsApp messages.

const result = await receive_inbound_message({
  channel: "any",      // "sms", "whatsapp", or "any"
  timeout_ms: 5000     // How long to wait
});
// { success: true, channel: "sms", conversation_id: "...", message: "Deploy now" }

send_sms

Send an SMS message to the user.

const result = await send_sms({
  message: "Build complete! 42 tests passed.",
  wait_for_reply: true,
  timeout_ms: 180000
});
// { success: true, conversation_id: "...", reply: "Great, deploy it" }

send_whatsapp

Send a WhatsApp message to the user.

const result = await send_whatsapp({
  message: "Found 3 issues in code review:\n• Issue 1\n• Issue 2\n• Issue 3",
  wait_for_reply: true
});
// { success: true, conversation_id: "...", reply: "Fix issue 1 first" }

reply_to_conversation

Reply to an existing conversation (works for voice, SMS, or WhatsApp).

const result = await reply_to_conversation({
  conversation_id: "abc-123",
  message: "Got it, fixing issue 1 now.",
  wait_for_reply: false
});

get_conversation_history

Get the full message history for any conversation.

const history = await get_conversation_history({
  conversation_id: "abc-123"
});
// { success: true, channel: "whatsapp", messages: [...], state: "active" }

Costs

Voice Calls

ServiceCost
Telnyx outbound calls~$0.007/min
Twilio outbound calls~$0.014/min
OpenAI Whisper (STT)~$0.006/min
OpenAI TTS~$0.015/1K chars

Typical voice conversation: ~$0.03-0.05/minute

SMS

ServiceCost
Telnyx SMS (US)~$0.004/message
Twilio SMS (US)~$0.0079/message

Typical SMS exchange: ~$0.01-0.02/exchange

WhatsApp

ServiceCost
Baileys (personal WhatsApp)Free
Telnyx WhatsApp~$0.005/message
Twilio WhatsApp~$0.005/message + conversation fees

Typical WhatsApp exchange: Free (Baileys) or ~$0.01-0.02 (Twilio/Telnyx)

Infrastructure

ServiceCost
Phone number~$1/month
Tailscale FunnelFree

Security Considerations

Tailscale Funnel Security

  • Funnel creates a public endpoint but traffic routes through Tailscale's secure network
  • Integrates with SSO/SCIM for enterprise use
  • Audit logs available in Tailscale admin console
  • Webhook signatures verified by default

General

  • Phone numbers are never logged
  • Call transcripts are ephemeral (cleared on restart)
  • Use environment variables, never hardcode credentials

Troubleshooting

Voice Issues

Claude doesn't answer calls

  1. Check the MCP server is running: claude --debug
  2. Verify webhook URL is configured in provider dashboard
  3. Ensure Tailscale Funnel is active

Can't make outbound calls

  1. Verify BETTERCALLCLAUDE_USER_PHONE_NUMBER is correct
  2. Check phone number is verified with provider
  3. Ensure sufficient balance in provider account

Audio quality issues

  1. Check network connectivity
  2. Try different TTS voice: BETTERCALLCLAUDE_TTS_VOICE=nova
  3. Adjust silence detection: BETTERCALLCLAUDE_STT_SILENCE_DURATION_MS=1000

SMS Issues

SMS not being received

  1. Verify SMS is enabled on your phone number in provider dashboard
  2. Check SMS webhook URL is set: /webhook/telnyx/sms or /webhook/twilio/sms
  3. Verify Messaging Profile is assigned to phone number (Telnyx)

Can't send outbound SMS

  1. Check phone number has SMS capability
  2. Verify destination number format (E.164: +15551234567)
  3. Check provider account balance

WhatsApp Issues

WhatsApp messages not received

  1. Verify WhatsApp Business is set up in provider portal
  2. Check webhook URL: /webhook/telnyx/whatsapp or /webhook/twilio/whatsapp
  3. Ensure WhatsApp Business verification is complete

Can't send WhatsApp messages

  1. User must have messaged you first (WhatsApp 24-hour rule)
  2. Check WhatsApp Business approval status
  3. Verify message template compliance (for outbound-first messages)

Baileys Issues

QR code doesn't appear

The QR code cannot display inside the MCP server (stdout is reserved for MCP protocol). Run the pairing script separately:

cd /path/to/better-call-claude
bun run baileys:pair

Once paired, the session is saved and the MCP server connects automatically.

"Baileys configured but no session found"

Run bun run baileys:pair to pair your WhatsApp first, then restart Claude Code.

WhatsApp logged out

Delete the auth directory and re-pair:

rm -rf data/baileys-auth
bun run baileys:pair

Messages not being received

  1. Check that Baileys is connected (look for [Baileys] Connected in stderr)
  2. Ensure messages are from individual chats (group messages are filtered out)
  3. Verify the sender is not the linked account itself (own messages are filtered)

Tailscale Issues

"Tailscale not running"

  1. macOS: Open the Tailscale app from Applications
  2. Linux: sudo systemctl start tailscaled && tailscale up

"Funnel not enabled"

  1. Visit the URL shown in the terminal to enable Funnel
  2. Or go to https://login.tailscale.com/admin/acls and add Funnel capability

Funnel starts but webhooks don't work

  1. Check tailscale funnel status shows /bcc pointing to your port
  2. Verify your phone provider webhook URL matches the Tailscale URL (with /bcc path)
  3. Test with curl https://your-hostname.ts.net/bcc/health

Development

# Clone the repo
git clone https://github.com/sns45/better-call-claude
cd better-call-claude

# Install dependencies
bun install

# Run in development mode
bun run dev

Testing locally

# Start the MCP server
bun run dev

# In another terminal, test with MCP inspector
npx @anthropics/mcp-inspector

Tech Stack

  • Runtime: Bun - Fast JavaScript runtime
  • Web Framework: Hono - Lightweight, fast web framework
  • Phone: Telnyx / Twilio - Telephony APIs
  • WhatsApp: Baileys - Free WhatsApp Web protocol
  • Speech: OpenAI Whisper - STT/TTS
  • Transport: Tailscale Funnel - Public URL tunneling
  • Protocol: MCP - Model Context Protocol

Contributing

PRs welcome! Please see CONTRIBUTING.md for guidelines.


License

MIT

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Configuration

BETTERCALLCLAUDE_PHONE_PROVIDER*

Phone provider: 'twilio' or 'telnyx'

BETTERCALLCLAUDE_PHONE_NUMBER*

Your phone number in E.164 format

BETTERCALLCLAUDE_PHONE_ACCOUNT_SID*secret

Twilio Account SID or Telnyx API Key

BETTERCALLCLAUDE_PHONE_AUTH_TOKEN*secret

Twilio Auth Token or Telnyx API Secret

BETTERCALLCLAUDE_USER_PHONE_NUMBER*

Your personal phone number in E.164 format (for outbound calls/SMS)

BETTERCALLCLAUDE_OPENAI_API_KEY*secret

OpenAI API key for speech-to-text (Whisper) and text-to-speech

BETTERCALLCLAUDE_WHATSAPP_NUMBER

WhatsApp number if different from phone number (e.g., Twilio Sandbox)

BETTERCALLCLAUDE_PORT

Local HTTP server port

TAILSCALE_HOSTNAME

Override Tailscale hostname for webhook URL

BETTERCALLCLAUDE_WHATSAPP_PROVIDER

WhatsApp provider: set to 'baileys' for free WhatsApp via WebSocket (no Twilio needed)

BETTERCALLCLAUDE_BAILEYS_AUTH_DIR

Path to Baileys auth state directory (default: data/baileys-auth)

BETTERCALLCLAUDE_WHATSAPP_CHAT_HISTORY_SIZE

Max WhatsApp chat history messages to retain (default: 50)

Categories
Communication & Messaging
Registryactive
Packagebetter-call-claude
TransportSTDIO
AuthRequired
UpdatedFeb 27, 2026
View on GitHub

Related Communication & Messaging MCP Servers

View all →
Microsoft 365 Teams

io.github.mindstone/mcp-server-microsoft-teams

Microsoft 365 Teams via Graph: list chats, read/send messages, list teams/channels, presence.
8
Outlook Email

com.mintmcp/outlook-email

A MCP server for Outlook email that lets you search, read, and draft emails and replies.
8
Resend Email MCP

helbertparanhos/resend-email-mcp

Complete Resend email MCP: full API coverage + debug layer (deliverability, DNS, bounces).
Email Mcp

marlinjai/email-mcp

Unified email MCP server for Gmail, Outlook, iCloud, and IMAP with batch operations
13
Email (IMAP/SMTP)

io.github.mindstone/mcp-server-email-imap

Email IMAP/SMTP MCP server: iCloud, Gmail, Yahoo, Outlook, and custom IMAP providers
8
HTML Email Playbook

io.github.osamahassouna/email-playbook-mcp

Teaches AI to write HTML email that renders in Outlook, Gmail, and Apple Mail. 19 rules, 6 comps.