PhoneBridgeDocs

Developers

For developers

Tool calls, the policy that runs on the phone, and how Claude connects. The install guide and the Claude Code hook live on their own pages.

The home page is for someone who wants Claude to text and call. This page is the same product with the tool names. Claude Code texts you is the short setup for a hook. The install guide stays the place for the APK and Play Protect.

A text, as tool calls#

Claude resolves the contact on the phone, sends the text, and can wait for the delivery report.

contacts_search {"query": "alice"}
sms_send {"to": "+64215550199", "body": "Running about 10 minutes late, sorry."}

sms_send returns queued. A later sms_sent event, and sms_delivered where the carrier reports it, carries the outcome.

A call, while you are busy#

Claude does not get interrupted when the phone rings. It has to be waiting.

wait_for_events {"timeout_s": 300}
call_reject
sms_send {"to": "+64275550123", "body": "In a meeting, I'll call you at 3."}

call_dial, call_answer, call_reject and call_hangup manage the call. The phone cannot expose call audio, so Claude never hears or speaks.

An unknown number#

sms_send {"to": "+447700900123", "body": "..."}
confirmation_timeout: the phone's owner did not approve within 60 s

Numbers in your contacts go straight out, except a contact Claude just added, which needs one tap first. Anyone else needs a tap within 60 seconds. Premium-rate numbers, short codes and numbers in another country are denied unless you allow them. The defaults are 20 texts and 5 calls in a rolling hour. Pause bridge closes the socket. Policy and security.

What the service keeps#

Every tool and every message body lives on the phone. The public endpoint is HTTPS. A request log records the method, the tool name, how long it took, and the error if it failed. It does not record the message text. Keys are hashed. The phone's identity key is P-256 in the Android Keystore, StrongBox when the phone has it. Protocol.

The app keeps one outbound socket, reconnects when the network changes, and does not poll. The design target while it waits is under 2% battery a day. Measured figures from real phones are not published.

Which clients connect#

claude.ai and Claude Desktop add https://phonebridge.co/mcp as a custom connector: Customize > Connectors > Add custom connector. If the menu shows Add, then Custom, then Web, that is the same step. If Claude asks how it identifies itself, choose Register automatically. Claude Code uses claude mcp add --transport http phone https://phonebridge.co/mcp. Any MCP client that speaks Streamable HTTP can use the same URL, with OAuth 2.1 or an API key. Connecting Claude.

A text that tries to give Claude orders#

Message bodies, caller ids and contact names are marked untrusted in the tool descriptions, and the phone's instructions tell Claude not to follow an order found in a message without asking you. That is a soft control. The hard controls are the tap for an unknown number, the hourly cap, and the audit log on the phone.