OpenPhone MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi
Send and read OpenPhone messages, calls, contacts and phone numbers.
16 tools: 2 can delete or cancel things and 14 only read.
Scanned Oct 21, 2026
- Deletes or cancels2Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads14Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http openphone https://openphone.usefulapi.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
16 tools
Deletes or cancels 2Claude Code: deny
openphone_create_contactCreate a new contact in the workspace.No findings
Why it is in this group
- The name "openphone_create_contact" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Create a contact
- destructiveHint: true
openphone_send_messageSend an SMS/text message from one of your OpenPhone numbers to up to 10 recipients.No findings
Why it is in this group
- The name "openphone_send_message" says "send": a word for sending, and what is sent cannot be taken back.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Send a text message
- destructiveHint: true
Only reads 14Claude Code: allow
openphone_get_callGet a single call by its id (starts with 'AC') — direction, status, duration, participants and timestamps.No findings
Why it is in this group
- The name "openphone_get_call" says "get": a word for reading.
Description, as the server wrote it Get a single call by its id (starts with 'AC') — direction, status, duration, participants and timestamps. OpenPhone REST: GET /calls/{id}.
Annotations the server declares
- title: Get a call
- readOnlyHint: true
openphone_get_call_recordingsGet the recordings for a call by its id — each with a URL, duration, start time and status.No findings
Why it is in this group
- The name "openphone_get_call_recordings" says "get": a word for reading.
Description, as the server wrote it Get the recordings for a call by its id — each with a URL, duration, start time and status. OpenPhone REST: GET /call-recordings/{callId}.
Annotations the server declares
- title: Get call recordings
- readOnlyHint: true
openphone_get_call_summaryGet the AI-generated summary and next steps for a call by its id.No findings
Why it is in this group
- The name "openphone_get_call_summary" says "get": a word for reading.
Description, as the server wrote it 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}.
Annotations the server declares
- title: Get a call summary
- readOnlyHint: true
openphone_get_call_transcriptGet the transcription for a call by its id — dialogue segments with speaker, text and timestamps, plus overall status and duration.No findings
Why it is in this group
- The name "openphone_get_call_transcript" says "get": a word for reading.
Description, as the server wrote it 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}.
Annotations the server declares
- title: Get a call transcript
- readOnlyHint: true
openphone_get_contactGet a single contact by its id, including default fields (name, company, role, emails, phone numbers) and custom fields.No findings
Why it is in this group
- The name "openphone_get_contact" says "get": a word for reading.
Description, as the server wrote it Get a single contact by its id, including default fields (name, company, role, emails, phone numbers) and custom fields. OpenPhone REST: GET /contacts/{id}.
Annotations the server declares
- title: Get a contact
- readOnlyHint: true
openphone_get_contact_custom_fieldsList the workspace's contact custom-field definitions (name, key, type).No findings
Why it is in this group
- The name "openphone_get_contact_custom_fields" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get contact custom fields
- readOnlyHint: true
openphone_get_messageGet a single message by its id (starts with 'AC').No findings
Why it is in this group
- The name "openphone_get_message" says "get": a word for reading.
Description, as the server wrote it Get a single message by its id (starts with 'AC'). OpenPhone REST: GET /messages/{id}.
Annotations the server declares
- title: Get a message
- readOnlyHint: true
openphone_list_callsList calls between one of your OpenPhone numbers and a participant, newest first, optionally filtered by user and created date range.No findings
Why it is in this group
- The name "openphone_list_calls" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List calls
- readOnlyHint: true
openphone_list_contactsList contacts in the workspace, optionally filtered by external ids or sources.No findings
Why it is in this group
- The name "openphone_list_contacts" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List contacts
- readOnlyHint: true
openphone_list_conversationsList conversations (threads), most-recent activity first, optionally filtered by phone number(s), user, and created/updated date ranges.No findings
Why it is in this group
- The name "openphone_list_conversations" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List conversations
- readOnlyHint: true
openphone_list_messagesList messages in a conversation between one of your OpenPhone numbers and one or more participants.No findings
Why it is in this group
- The name "openphone_list_messages" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List messages
- readOnlyHint: true
openphone_list_phone_numbersList the OpenPhone numbers in the workspace (id, number, name, formatted number, assigned users, restrictions).No findings
Why it is in this group
- The name "openphone_list_phone_numbers" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List phone numbers
- readOnlyHint: true
openphone_list_usersList workspace users (id, email, name, role).No findings
Why it is in this group
- The name "openphone_list_users" says "list": a word for reading.
Description, as the server wrote it List workspace users (id, email, name, role). Use to find a userId for scoping other calls. OpenPhone REST: GET /users.
Annotations the server declares
- title: List users
- readOnlyHint: true
openphone_list_webhooksList all webhooks configured in the workspace (id, url, events, status).No findings
Why it is in this group
- The name "openphone_list_webhooks" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List webhooks
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.16.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http openphone https://openphone.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__openphone__openphone_list_phone_numbers",
"mcp__openphone__openphone_list_users",
"mcp__openphone__openphone_list_contacts",
"mcp__openphone__openphone_get_contact",
"mcp__openphone__openphone_get_contact_custom_fields",
"mcp__openphone__openphone_list_conversations",
"mcp__openphone__openphone_list_messages",
"mcp__openphone__openphone_get_message",
"mcp__openphone__openphone_list_calls",
"mcp__openphone__openphone_get_call",
"mcp__openphone__openphone_get_call_summary",
"mcp__openphone__openphone_get_call_transcript",
"mcp__openphone__openphone_get_call_recordings",
"mcp__openphone__openphone_list_webhooks"
],
"ask": [],
"deny": [
"mcp__openphone__openphone_send_message",
"mcp__openphone__openphone_create_contact"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as openphone. Review it before you use it.