One endpoint.
Every phone action your agent needs.
Give any MCP client — Claude Code, Cursor, the Claude API — a phone. Send texts, place AI voice calls, manage personas and numbers, and wait on replies. One server, your account, scoped to your key.
Add it to your client
{
"mcpServers": {
"klawvoice": {
"type": "http",
"url": "https://klaw-voice.netlify.app/api/mcp",
"headers": { "Authorization": "Bearer ${KLAWVOICE_API_KEY}" }
}
}
}Generate a key in Settings → API key (prefix klw_). The handshake is unauthenticated; only tools/call needs the key, so every action is scoped to that account. Or one line: claude mcp add --transport http klawvoice https://klaw-voice.netlify.app/api/mcp --header "Authorization: Bearer $KLAWVOICE_API_KEY"
Everything your agent can do on the phone
Text someone from one of your numbers (SMS/WhatsApp).
Place an outbound AI voice call with an objective.
List the phone numbers connected to your account.
List your AI personas — id, name, and number.
Find purchasable numbers by US area code.
Long-poll for the next reply or finished call.
Spin up a persona — and a number — in one call.
Buy a number and attach it to a persona.
Edit a persona’s prompt, voice, or first line.
Recent calls with status, summary, and sentiment.
Full transcript and summary of a call.
Calls, minutes, and messages over a period.
Leads from calls — intent, urgency, next action.
Teach a persona so it answers smarter on calls.
Streamable transport. initialize, notifications/initialized, tools/list, tools/call, ping — version-negotiated.
Bearer klw_ on tools/call. Discovery and handshake are open; account actions never are.
Per-key rate limit with Retry-After. Co-located with the app — no extra host to run.