Skip to main content

ZeroVoice MCP Bridge

The ZeroVoice MCP bridge exposes 25 telephony tools that any MCP-compatible AI agent (Claude Code, Cody, custom agents) can call to make phone calls, send SMS, manage contacts, and query analytics.

Setup

1. Add to .mcp.json

{
"mcpServers": {
"zerovoice": {
"command": "python3",
"args": ["path/to/ZeroVoice/scripts/mcp_server.py"],
"env": {
"ZEROVOICE_API_URL": "https://your-instance.up.railway.app",
"ZEROVOICE_API_TOKEN": "eyJ..."
}
}
}
}

2. Environment variables

VariableRequiredDescription
ZEROVOICE_API_URLNoAPI base URL (default: http://localhost:8000)
ZEROVOICE_API_TOKENYesValid JWT bearer token for authentication

3. Generate a service token

curl -X POST https://your-instance/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "agent@company.com", "password": "..."}'

The returned access_token goes into ZEROVOICE_API_TOKEN.


Available tools (25)

Calls (6 tools)

ToolDescription
make_callPlace an outbound phone call via Twilio
get_live_callsGet currently active calls (ringing/active)
get_call_logsSearch call history with filters
get_callGet details for a specific call by ID
transfer_callTransfer an active call to another number
hangup_callHang up / end an active call

SMS (1 tool)

ToolDescription
send_smsSend an SMS/MMS message via Twilio

Contacts (3 tools)

ToolDescription
create_contactCreate a new contact in the organization
list_contactsList contacts with optional search and pagination
get_contact_call_historyGet call history for a specific contact

Phone Numbers (5 tools)

ToolDescription
list_numbersList phone numbers owned by the organization
search_available_numbersSearch for numbers available for purchase
purchase_numberPurchase a phone number
configure_numberUpdate routing configuration for a number
release_numberRelease (give up) a phone number

Transcripts & Recordings (4 tools)

ToolDescription
get_transcriptGet the transcript for a specific call
search_transcriptsSearch call transcripts by keyword
list_transcriptsList transcripts, optionally by campaign
get_call_recordingsGet recordings for a specific call

Compliance (1 tool)

ToolDescription
check_dncCheck if a phone number is on the Do-Not-Call list

Voicemails (2 tools)

ToolDescription
list_voicemailsList voicemails, optionally filtered by status
get_voicemailGet a specific voicemail with transcription

Analytics (2 tools)

ToolDescription
get_call_volumeGet call volume analytics (by hour/day/week/month)
get_agent_performanceGet agent performance metrics

Health (1 tool)

ToolDescription
health_checkCheck API health (DB, Twilio, Stripe, ZeroDB)

Example: Agent-driven outbound call

Agent: I need to call the prospect at +15551234567.

→ Tool call: check_dnc(phone_number="+15551234567")
← Result: {"items": [], "total": 0} (not on DNC)

→ Tool call: make_call(from_number="+18317773598", to_number="+15551234567", record=true)
← Result: {"id": "abc-123", "status": "queued", ...}

→ Tool call: get_call(call_id="abc-123")
← Result: {"status": "active", "duration_seconds": 45, ...}

Example: SMS follow-up after a call

→ Tool call: send_sms(
from_number="+18317773598",
to_number="+15551234567",
body="Thanks for speaking with us! Here's the link to schedule a demo: ..."
)
← Result: {"id": "sms-456", "status": "sent"}

Architecture

The MCP bridge is a thin HTTP client layer built with FastMCP. Each tool maps to one ZeroVoice REST endpoint:

Claude Code / Agent
│ MCP stdio protocol

mcp_server.py (FastMCP, 25 tools)
│ HTTP + JWT

ZeroVoice API (FastAPI)


Twilio (calls, SMS, numbers)

The bridge runs as a local process (stdio transport), not a network server. It inherits the API's rate limits (200 req/min per tenant) and DNC/compliance enforcement.