openphone
Send and read OpenPhone messages, calls, contacts and phone numbers.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (1)
- LOWen openphone_get_contact_custom_fields
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"openphone": {
"url": "https://openphone.usefulapi.io/mcp"
}
}
}Puntos de conexión remotos
https://openphone.usefulapi.io/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (16)
🟢openphone_list_phone_numbers(userId)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"userId": {
"description": "Scope results to a user's access (a user id starting with 'US'). From openphone_list_users.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢openphone_list_users(maxResults, pageToken)
List workspace users (id, email, name, role). Use to find a userId for scoping other calls. OpenPhone REST: GET /users.
Esquema de entrada
{
"type": "object",
"properties": {
"maxResults": {
"description": "Results per page, 1-50. Default 10.",
"type": "integer",
"minimum": 1,
"maximum": 50
},
"pageToken": {
"description": "Pagination token from a previous response's nextPageToken.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢openphone_list_contacts(maxResults, pageToken, externalIds, sources)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"maxResults": {
"description": "Results per page, 1-50. Default 10.",
"type": "integer",
"minimum": 1,
"maximum": 50
},
"pageToken": {
"description": "Pagination token from a previous response's nextPageToken.",
"type": "string"
},
"externalIds": {
"description": "Filter to contacts with these external ids (from an integrated system).",
"type": "array",
"items": {
"type": "string"
}
},
"sources": {
"description": "Filter to contacts created by these sources.",
"type": "array",
"items": {
"type": "string"
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢openphone_get_contact(id)
Get a single contact by its id, including default fields (name, company, role, emails, phone numbers) and custom fields. OpenPhone REST: GET /contacts/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The contact id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢openphone_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.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢openphone_list_conversations(maxResults, phoneNumbers, userId, createdAfter, createdBefore, ...)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"maxResults": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Results per page, 1-100 (required)."
},
"phoneNumbers": {
"description": "Filter to conversations on these OpenPhone numbers (E.164 or 'PN...' ids), 1-100 items.",
"type": "array",
"items": {
"type": "string"
}
},
"userId": {
"description": "Scope results to a user's access (a user id starting with 'US'). From openphone_list_users.",
"type": "string"
},
"createdAfter": {
"description": "Only conversations created after as an ISO-8601 datetime, e.g. '2026-07-01T00:00:00Z'.",
"type": "string"
},
"createdBefore": {
"description": "Only conversations created before as an ISO-8601 datetime, e.g. '2026-07-01T00:00:00Z'.",
"type": "string"
},
"updatedAfter": {
"description": "Only conversations updated after as an ISO-8601 datetime, e.g. '2026-07-01T00:00:00Z'.",
"type": "string"
},
"updatedBefore": {
"description": "Only conversations updated before as an ISO-8601 datetime, e.g. '2026-07-01T00:00:00Z'.",
"type": "string"
},
"excludeInactive": {
"description": "Exclude inactive conversations when true.",
"type": "boolean"
},
"pageToken": {
"description": "Pagination token from a previous response's nextPageToken.",
"type": "string"
}
},
"required": [
"maxResults"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢openphone_list_messages(phoneNumberId, participants, maxResults, userId, createdAfter, ...)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"phoneNumberId": {
"type": "string",
"minLength": 1,
"description": "An OpenPhone phone-number id (starts with 'PN'). Get it from openphone_list_phone_numbers."
},
"participants": {
"minItems": 1,
"maxItems": 10,
"type": "array",
"items": {
"type": "string"
},
"description": "Participant phone numbers in E.164 format (e.g. '+15555555555'), 1-10 items (required)."
},
"maxResults": {
"description": "Results per page, 1-100. Default 10.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"userId": {
"description": "Scope results to a user's access (a user id starting with 'US'). From openphone_list_users.",
"type": "string"
},
"createdAfter": {
"description": "Only messages created after as an ISO-8601 datetime, e.g. '2026-07-01T00:00:00Z'.",
"type": "string"
},
"createdBefore": {
"description": "Only messages created before as an ISO-8601 datetime, e.g. '2026-07-01T00:00:00Z'.",
"type": "string"
},
"pageToken": {
"description": "Pagination token from a previous response's nextPageToken.",
"type": "string"
}
},
"required": [
"phoneNumberId",
"participants"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢openphone_get_message(id)
Get a single message by its id (starts with 'AC'). OpenPhone REST: GET /messages/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The message id (starts with 'AC')."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴openphone_send_message(content, from, to, userId, setInboxStatus)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"content": {
"type": "string",
"minLength": 1,
"maxLength": 1600,
"description": "The message body, 1-1600 characters (required)."
},
"from": {
"type": "string",
"minLength": 1,
"description": "The sending OpenPhone number — a phone-number id ('PN...') or E.164 number, e.g. '+15555555555' (required)."
},
"to": {
"minItems": 1,
"maxItems": 10,
"type": "array",
"items": {
"type": "string"
},
"description": "Recipients in E.164 format (or contact ids), 1-10 items (required)."
},
"userId": {
"description": "The sending user id ('US...'); defaults to the phone number's owner.",
"type": "string"
},
"setInboxStatus": {
"description": "Set to 'done' to mark the conversation complete after sending.",
"type": "string",
"enum": [
"done"
]
}
},
"required": [
"content",
"from",
"to"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢openphone_list_calls(phoneNumberId, participants, maxResults, userId, createdAfter, ...)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"phoneNumberId": {
"type": "string",
"minLength": 1,
"description": "An OpenPhone phone-number id (starts with 'PN'). Get it from openphone_list_phone_numbers."
},
"participants": {
"minItems": 1,
"maxItems": 1,
"type": "array",
"items": {
"type": "string"
},
"description": "A single participant phone number in E.164 format, e.g. '+15555555555' (required, exactly 1)."
},
"maxResults": {
"description": "Results per page, 1-100. Default 10.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"userId": {
"description": "Scope results to a user's access (a user id starting with 'US'). From openphone_list_users.",
"type": "string"
},
"createdAfter": {
"description": "Only calls created after as an ISO-8601 datetime, e.g. '2026-07-01T00:00:00Z'.",
"type": "string"
},
"createdBefore": {
"description": "Only calls created before as an ISO-8601 datetime, e.g. '2026-07-01T00:00:00Z'.",
"type": "string"
},
"pageToken": {
"description": "Pagination token from a previous response's nextPageToken.",
"type": "string"
}
},
"required": [
"phoneNumberId",
"participants"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢openphone_get_call(id)
Get a single call by its id (starts with 'AC') — direction, status, duration, participants and timestamps. OpenPhone REST: GET /calls/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The call id (starts with 'AC')."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢openphone_get_call_summary(callId)
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}.
Esquema de entrada
{
"type": "object",
"properties": {
"callId": {
"type": "string",
"minLength": 1,
"description": "The call id (starts with 'AC')."
}
},
"required": [
"callId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢openphone_get_call_transcript(id)
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}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The call id (starts with 'AC')."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢openphone_get_call_recordings(callId)
Get the recordings for a call by its id — each with a URL, duration, start time and status. OpenPhone REST: GET /call-recordings/{callId}.
Esquema de entrada
{
"type": "object",
"properties": {
"callId": {
"type": "string",
"minLength": 1,
"description": "The call id (starts with 'AC')."
}
},
"required": [
"callId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢openphone_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.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴openphone_create_contact(firstName, lastName, company, role, emails, ...)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"firstName": {
"type": "string",
"minLength": 1,
"description": "The contact's first name (required)."
},
"lastName": {
"description": "The contact's last name.",
"type": "string"
},
"company": {
"description": "The contact's company.",
"type": "string"
},
"role": {
"description": "The contact's role / job title.",
"type": "string"
},
"emails": {
"description": "Email addresses for the contact.",
"type": "array",
"items": {
"type": "string"
}
},
"phoneNumbers": {
"description": "Phone numbers for the contact (E.164 recommended).",
"type": "array",
"items": {
"type": "string"
}
},
"externalId": {
"description": "A unique id from an external system (1-75 chars).",
"type": "string",
"minLength": 1,
"maxLength": 75
},
"source": {
"description": "How the contact was created; defaults to 'public-api'.",
"type": "string"
},
"sourceUrl": {
"description": "A link to the contact in the source system.",
"type": "string",
"format": "uri"
}
},
"required": [
"firstName"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Comunidad
Evidencia