OpenPhn docs

Tool reference

Parameters and return shapes for every OpenPhn MCP tool.

All four tools are thin wrappers over REST endpoints. The parameter names below match what you pass to the MCP tool; the REST equivalent is noted alongside.

make_call

Create an outbound call. Maps to POST /v1/calls.

ParamTypeRequiredNotes
tostring (E.164)Destination phone number.
objectivestringPlain-English goal for the call.
outcome_schemaobjectField definitions — types + optional flags.
consent_typeenumprior_express · existing_business_relationship · emergency.
voice_idstringDefaults to the tenant's default voice.
voice_engineenumgemini_25 (default) · gemini_31.
languagestringBCP-47 code. Defaults to en-US.
from_numberstringWhich of your numbers to call from. Defaults to your active number.

Returns { call_id, status }. The call is async — poll with get_call or register a webhook.

get_call

Fetch a call's current state. Maps to GET /v1/calls/{call_id}.

ParamTypeRequired
call_idstring

Returns the full call row, including outcome (once status == "completed"), transcript, cost_voice, cost_extraction, cost_total.

list_calls

Paginated recent calls. Maps to GET /v1/calls.

ParamTypeRequired
statusenum
limitint
offsetint

list_numbers

Inbound numbers visible to the API key. Maps to GET /v1/numbers. If the key has a number_ids restriction, only those numbers are returned.

ParamTypeRequired
limitint
cursorstring

Local stdio transport

To run the MCP server locally (instead of pointing at mcp.openphn.com):

git clone https://github.com/knsgill/openphn
cd openphn/mcp
pip install -r requirements.txt
OPENPHN_API_KEY=sk_live_... python server.py

Configure your MCP client to spawn it:

{
  "mcpServers": {
    "openphn": {
      "command": "python",
      "args": ["/path/to/openphn/mcp/server.py"],
      "env": { "OPENPHN_API_KEY": "sk_live_..." }
    }
  }
}

On this page