usefulapi

OpenPhone MCP server. Send and read OpenPhone messages, calls, contacts and phone numbers.

Claude

  1. Open Settings → Connectors → Add custom connector
  2. Paste this URL:
    https://openphone.usefulapi.io/mcp
  3. Authenticate with OpenPhone when prompted

Cursor · VS Code · Windsurf · Cline

Add to your MCP config, then reload & authorize:

{
  "mcpServers": {
    "openphone": {
      "url": "https://openphone.usefulapi.io/mcp"
    }
  }
}
live16 toolsFree 100 tool calls / monthPro $9/mo · $90/yr

Tools 16

ToolTypeWhat it does
openphone_list_phone_numbersread
List phone numbers
List the OpenPhone numbers in the workspace (id, number, name, formatted number, assigned users, restrictions). Usually the first call — most other tools need a phoneNumberId. OpenPhone REST: GET /phone-numbers.
openphone_list_usersread
List users
List workspace users (id, email, name, role). Use to find a userId for scoping other calls. OpenPhone REST: GET /users.
openphone_list_contactsread
List contacts
List contacts in the workspace, optionally filtered by external ids or sources. Returns each contact's default fields (name, company, emails, phone numbers) and custom fields. OpenPhone REST: GET /contacts.
openphone_get_contactread
Get a contact
Get a single contact by its id, including default fields (name, company, role, emails, phone numbers) and custom fields. OpenPhone REST: GET /contacts/{id}.
openphone_get_contact_custom_fieldsread
Get contact custom fields
List the workspace's contact custom-field definitions (name, key, type). Use the returned keys when creating contacts with custom fields. OpenPhone REST: GET /contact-custom-fields.
openphone_list_conversationsread
List conversations
List conversations (threads), most-recent activity first, optionally filtered by phone number(s), user, and created/updated date ranges. Each conversation has participants, assignee, and last-activity metadata. OpenPhone REST: GET /conversations.
openphone_list_messagesread
List messages
List messages in a conversation between one of your OpenPhone numbers and one or more participants. Returns text, direction, status and timestamps. OpenPhone REST: GET /messages.
openphone_get_messageread
Get a message
Get a single message by its id (starts with 'AC'). OpenPhone REST: GET /messages/{id}.
openphone_send_messagewrite
Send a text message
Send an SMS/text message from one of your OpenPhone numbers to up to 10 recipients. WRITE ACTION — this actually sends a real text message (which may incur carrier cost and requires approved A2P 10DLC registration). OpenPhone REST: POST /messages.
openphone_list_callsread
List calls
List calls between one of your OpenPhone numbers and a participant, newest first, optionally filtered by user and created date range. Returns direction, status, duration and timestamps. OpenPhone REST: GET /calls.
openphone_get_callread
Get a call
Get a single call by its id (starts with 'AC') — direction, status, duration, participants and timestamps. OpenPhone REST: GET /calls/{id}.
openphone_get_call_summaryread
Get a call summary
Get the AI-generated summary and next steps for a call by its id. Availability depends on your plan and whether the call was summarized. OpenPhone REST: GET /call-summaries/{callId}.
openphone_get_call_transcriptread
Get a call transcript
Get the transcription for a call by its id — dialogue segments with speaker, text and timestamps, plus overall status and duration. OpenPhone REST: GET /call-transcripts/{id}.
openphone_get_call_recordingsread
Get call recordings
Get the recordings for a call by its id — each with a URL, duration, start time and status. OpenPhone REST: GET /call-recordings/{callId}.
openphone_list_webhooksread
List webhooks
List all webhooks configured in the workspace (id, url, events, status). Read-only inventory — this tool does not create or delete webhooks. OpenPhone REST: GET /webhooks.
openphone_create_contactwrite
Create a contact
Create a new contact in the workspace. WRITE ACTION — this adds a persistent contact record. Emails and phoneNumbers are passed as simple string arrays and stored under default field labels. OpenPhone REST: POST /contacts.

Pricing

PlanPriceLimit
Free$0100 tool calls / month
Pro$9/mo · $90/yrUnlimited

This is a Model Context Protocol endpoint — meant to be connected from an AI client, not opened in a browser. An invalid_token response at the URL is the auth gate working as designed; clients authenticate automatically.