NodeForEdge

Documentation / PhoneGate

MCP tools

The fourteen typed tools and the resources an AI client gets for operating a phone, plus how calls are labelled.

The PhoneGate MCP server gives an AI client typed tools for the phone. It speaks Streamable HTTP and sits behind the MCP bearer rule.

Tools

Area What the client can do
Status Read the current status of the phone.
SMS Read, sync and send messages.
Calls Dial, answer and hang up.
Audio Fetch the last 1 to 10 seconds of line audio as a WAV file.
Transcript Read the live transcript, or wait for new utterances.
Speech Speak text into the active call through text-to-speech.
Contacts Search and sync contacts.
Waiting Block until an incoming call arrives and return the caller number.

The tools that act on the real world, send_sms, dial_phone, answer_call, hang_up and speak_text, are marked as having external effects. A client that supports it can ask for confirmation before running them.

Resources and events

Besides tools, the server publishes resources a client can read: device status, recent SMS, the call transcript, recent call audio, contacts, the incoming-call event and the call lifecycle.

Clients that support MCP subscriptions get resource-update events for calls, transcripts and contacts automatically. For clients that do not wake a model on a notification, two blocking tools are the dependable choice:

  • wait_for_incoming_call
  • wait_for_transcript

Call provenance

Every call gets a stable call_id, a direction and an origin. The two fields are independent.

Origin When
network An incoming GSM call with no dial before it
mcp Dialled through the dial_phone tool
web Dialled from the browser panel
jobhunter, manual, api Dialled through the REST API, labelled by the client, api if it said nothing
unknown The origin could not be determined, for example after a server restart

direction is incoming, outgoing or unknown. A call found already in progress after a restart is unknown, because its direction cannot be recovered reliably.

dial_phone accepts optional context fields: a correlation id, an application id, a vacancy id and a company. They are stored with the call and passed to any system that reads the call events, which is how JobHunter links a phone call to the application it belongs to.

The lifecycle event moves through pending, ringing, active and ended, and carries the full call record each time.

Built 2026-10-06. Addresses, tokens and ports are left out on purpose.