Claude Code
Make a Claude Code agent answer the phone in its own context. The saperly-voice channel (an MCP server) binds Saperly's manual-mode websocket, so only text crosses to your agent — directives out, no audio on your machine.
A connector makes an agent you already run phone-reachable without building anything yourself. It holds a Saperly manual-mode websocket and bridges it to your running agent: the caller's transcribed turn goes in, your agent's reply comes out as a directive, and the agent connects out — so it needs no public URL. Speech-to-text and text-to-speech stay in-network; no call audio ever reaches your machine.
The saperly-voice connector is a Claude Code channel (an MCP server) that
holds the manual-mode websocket. Configure it from a Claude Code session with
/saperly-voice:configure baseUrl=… connectionId=… secret=…, launch the channel,
and each call arrives as a <channel> event you answer with the reply tool.
Full setup: Voice channels → Claude Code.
Related
- OpenClaw connector — the same idea for an OpenClaw agent.
- Voice channels — call your own agent and talk to it in its context (the full connector walkthrough).
- Manual mode — the websocket protocol connectors are built on, if you want to roll your own.
OpenClaw
Make an OpenClaw agent you already run answer the phone in its own context. The @trysaperly/voice-openclaw extension binds Saperly's manual-mode websocket, so only text crosses to your agent — directives out, no audio on your machine.
Authentication
Saperly uses one tier of scoped sk_ API keys, each carrying a grant of scopes, an optional number allow-list, and an optional spend cap. The workspace is always read from the key, and a key with keys:admin can mint child keys bounded by its own grant.