CommSync

Una bandeja de entrada para SMS y correo empresarial. Busca y lee mensajes de texto y correos en cada línea telefónica y buzón, gestiona contactos y etiquetas, clasifica hilos y envía SMS y correos desde las líneas que permitas. Servidor remoto alojado con OAuth 2.1.

Servidor MCP alojado

npx add-mcp 'https://server.commsync.ai/api/mcp'

Se instala en Claude Code, Codex, Cursor y más

Documentación

Servidor MCP

CommSync habla el Protocolo de Contexto de Modelo. Apunta una aplicación o agente compatible con MCP al endpoint. Así podrá leer hilos, enviar mensajes, gestionar contactos y etiquetas, y más.

Hay dos formas de autenticarse, y ambas llegan a las mismas herramientas:

  • OAuth 2.1 es la forma principal. La aplicación te identifica sin secreto compartido. Consulta Conectar aplicaciones de IA.
  • Una clave API es la alternativa para scripts y servidores. Envíala como token Bearer. Consulta Claves API.

OAuth es como se conectan Claude, ChatGPT, Codex, Cursor y VS Code.

El usuario autenticado y su rol en la organización delimitan cada operación.

Los agentes pueden obtener /docs/mcp.txt para el mismo catálogo como texto plano con todos los detalles de parámetros: una sola solicitud, sin scraping.

Conectar

El servidor es un único endpoint HTTP sin estado. Para conectar una aplicación de IA, pega la URL del endpoint en la aplicación e inicia sesión. La página Conectar aplicaciones de IA tiene una guía para cada aplicación.

Para llamar al endpoint desde tu propio código con una clave API:

Genera una clave API

En CommSync, abre **Configuración → Claves API** y crea una clave. CommSync la muestra
una sola vez: guárdala de forma segura. Consulta <a href="/docs/api-keys">Claves API</a>.

Llama al endpoint

Envía JSON-RPC por POST a la ruta <code>/api/mcp</code> en tu origen de API de CommSync.

```bash
curl -X POST "$COMMSYNC_API/api/mcp" \
  -H "Authorization: Bearer csk_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```

Llama a una herramienta

Usa <code>tools/call</code> con el nombre de la herramienta y sus argumentos.

```json
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": { "name": "list_threads", "arguments": { "limit": 20 } }
}
```
EndpointPOST /api/mcp (en tu origen de API de CommSync)
TransporteHTTP, sin estado: una solicitud por llamada
AutenticaciónToken de acceso OAuth 2.1, o Authorization: Bearer csk_…

Autenticación

OAuth 2.1

CommSync es su propio servidor de autorización. Un cliente solo necesita la URL del endpoint, porque descubre todo lo demás:

  1. Una solicitud sin token recibe 401 y un encabezado WWW-Authenticate. El encabezado nombra los metadatos del recurso protegido (/.well-known/oauth-protected-resource/api/mcp, RFC 9728).
  2. Ese documento nombra el servidor de autorización. Sus metadatos están en /.well-known/oauth-authorization-server (RFC 8414).
  3. El cliente se registra, te envía a la pantalla de consentimiento e intercambia el código por tokens.
ConcesiónCódigo de autorización con PKCE (solo S256)
Registro de clienteRegistro dinámico en POST /oauth/register (RFC 7591), o un Documento de Metadatos de ID de Cliente: una URL https como client_id
Autenticación de clientenone (clientes públicos), client_secret_post, client_secret_basic
Alcancemcp (el predeterminado cuando omites scope)
RecursoLa URL del endpoint (RFC 8707). CommSync vincula cada token a ella
Token de accesocsat_…, válido durante una hora
Token de actualizacióncsrt_…, válido durante 90 días. Rota en cada uso. Durante 30 segundos después de un uso, el mismo token recibe el mismo par nuevo otra vez, para un cliente que actualice dos veces a la vez. Después, un token usado revoca su familia de tokens
RevocaciónPOST /oauth/revoke (RFC 7009)

La respuesta de autorización incluye iss (RFC 9207). Una redirección de bucle local (http://127.0.0.1, http://localhost, http://[::1]) puede usar cualquier puerto.

Un código es de un solo uso. Un segundo intercambio que pase la verificación PKCE revoca los tokens que emitió el primer intercambio. CommSync rechaza un segundo intercambio sin el verificador correcto, y ese intercambio no cambia nada.

Clave API

Envía Authorization: Bearer csk_…. Una clave no caduca y la revocas en Configuración, en Claves API. Una clave es adecuada para un script o un agente del lado del servidor.

Modelo de autorización

Cada solicitud resuelve tu credencial (un token OAuth o una clave API) a (userId, orgId, role, accessibleChannels). Cada herramienta está detrás de una de cuatro puertas. El servidor rechaza una llamada que exceda tu acceso antes de que ocurra cualquier cosa.

cualquier miembro cualquier usuario de la organización   acceso a canal necesita acceso al canal correspondiente   propietario / administrador   solo propietario

  • cualquier miembro: cualquier usuario con membresía en la organización.
  • acceso a canal: debes tener acceso al canal involucrado.
  • propietario / administrador: reservado para propietarios y administradores de la organización.
  • solo propietario: el único propietario del espacio de trabajo (por ejemplo, facturación).

Los propietarios y administradores tienen acceso a canales implícitamente; los miembros lo obtienen por canal: consulta Roles y permisos.

CommSync también etiqueta las herramientas por efecto: read (sin cambios), write (modifica) o destructive (elimina datos: úsalo con cuidado).

Claves y aplicaciones con alcance de canal

Una clave API o una aplicación conectada puede ajustarse a líneas específicas en lugar de tu acceso completo a canales. Para una clave, elige Líneas específicas cuando la crees o edites en Configuración, en Claves API. Para una aplicación, elígela en la pantalla de consentimiento. Puedes cambiarlo más tarde en Configuración, en Conectar aplicaciones de IA. Elige las direcciones de correo y números de teléfono a los que puede acceder.

El servidor entonces cruza tu acceso en vivo a canales con la lista de permitidos en cada solicitud. Una clave o aplicación con alcance solo puede leer, enviar y actuar en las líneas elegidas. Los hilos en otros canales le son invisibles, y CommSync rechaza envíos desde otros canales. Los listados de canales solo muestran lo que está dentro del alcance.

  • El valor predeterminado es Todos los canales: la clave sigue tu acceso en vivo.
  • Esto incluye líneas que conectes más tarde; CommSync migró las claves preexistentes de esta manera.
  • Una clave con alcance nunca supera tus privilegios.
  • Si pierdes el acceso, o alguien elimina la línea, también desaparece del alcance de la clave.
  • Las superficies por usuario (contactos, etiquetas, IA, webhooks, perfil) no pertenecen a un canal, por lo que el alcance no las afecta.

Catálogo de herramientas

Hilos

Lecturas con alcance de organización (filtradas por acceso a canal); las modificaciones escriben solo tu propio estado de vista por usuario.

HerramientaAccesoTipoDescripción
list_threadsacceso a canallecturaLista los hilos visibles para ti
get_thread_summaryacceso a canallecturaResumen de un solo hilo en formato de fila de lista
get_thread_messagesacceso a canallecturaMensajes paginados de un hilo
mark_thread_readacceso a canalescrituraLimpia tu contador de no leídos
mark_thread_unreadacceso a canalescrituraFuerza un hilo como no leído para ti
archive_threadacceso a canalescrituraArchivar (por usuario)
unarchive_threadacceso a canalescrituraDesarchivar (por usuario)
mark_thread_spamacceso a canalescrituraMover a Spam (por usuario)
mark_thread_promotionsacceso a canalescrituraMover a Promociones (por usuario)
mark_thread_automatedacceso a canalescrituraMover a Mensajes Automatizados: correo no humano (por usuario)
move_thread_to_inboxacceso a canalescrituraLimpiar banderas de categoría (por usuario)
snooze_threadacceso a canalescrituraPosponer hasta una marca de tiempo (por usuario)
unsnooze_threadacceso a canalescrituraLimpiar una posposición (por usuario)
delete_threadacceso a canaldestructivoOcultar el hilo de tu vista; la organización conserva su copia
restore_threadacceso a canalescrituraRestaurar un hilo eliminado temporalmente
delete_messageacceso a canaldestructivoOcultar un mensaje de ti
hard_delete_threadpropietario / administradordestructivoEliminar permanentemente el hilo y los mensajes compartidos

Envíos salientes

CommSync aplica el acceso a canal antes de cualquier envío. Redactar y reenviar también necesitan al menos un canal accesible del tipo correcto.

HerramientaAccesoTipoDescripción
send_smsacceso a canalescrituraResponder en un hilo SMS actual
send_emailacceso a canalescrituraResponder en un hilo de correo actual
compose_smsacceso a canalescrituraIniciar una nueva conversación SMS
compose_emailacceso a canalescrituraIniciar una nueva conversación de correo
forward_messageacceso a canalescrituraReenviar un mensaje a un nuevo destinatario
resend_failed_messageacceso a canalescrituraReintentar un mensaje saliente fallido
get_send_capacityacceso a canallecturaTasa de envío sostenible por línea, más cualquier pausa activa por límite de tasa

Cuerpos de correo

send_email y compose_email toman dos campos de cuerpo: bodyText y bodyHtml. Proporciona uno de ellos o ambos. Una llamada sin ninguno falla antes de que CommSync envíe cualquier cosa.

El texto plano solo es suficiente. CommSync construye la parte HTML a partir de bodyText. Escapa el texto, conserva los saltos de línea y convierte cada enlace http:// o https:// en un enlace clicable. Cuando proporcionas bodyHtml, CommSync envía tu HTML sin cambios. Cuando proporcionas solo bodyHtml, CommSync crea la parte de texto plano a partir de él. La firma de la cuenta y el pie de página "Enviado desde CommSync", cuando están activados, van después de tu texto en ambas partes.

Los límites de tasa nunca te alcanzan

CommSync acepta cada envío autorizado y asume la entrega desde ese punto en adelante: esto también cubre los límites de tasa de operadores y servidores de correo. Las herramientas de envío no devuelven 429 y nunca te piden que reintentes. Cuando un proveedor nos limita, el mensaje permanece en cola, retrocede y sale por sí solo.

Cada herramienta de envío devuelve un recibo que describe dónde está el mensaje realmente:

{
  "accepted": true,
  "messageId": "cm9x…",
  "threadId": "cm7a…",
  "state": "waiting_on_line",
  "estimatedSendAt": "2026-07-29T18:41:12.000Z",
  "pacing": {
    "provider": "<platform name>",
    "sustainedPerMinute": 54,
    "rateLimited": true,
    "reason": "<platform name> rate limit — waiting 45s"
  }
}

state es uno de dispatching, waiting_on_line, scheduled, sent o failed. Nunca llames a una herramienta de envío dos veces para el mismo mensaje: CommSync ya ha puesto en cola un mensaje waiting_on_line y lo entregará.

Antes de una ejecución masiva, llama a get_send_capacity para la tasa sostenible en cada línea desde la que puedas enviar. Si la superas, es seguro: los mensajes se ponen en cola en lugar de fallar; simplemente tardan más en salir.

Gestión de canales

HerramientaAccesoTipoDescripción
list_email_accountsacceso a canallecturaLista los canales de cuentas de correo que puedes ver
add_email_accountcualquier miembroescrituraVincular un buzón IMAP/SMTP a la organización
delete_email_accountpropietario / administradordestructivoEliminar una cuenta de correo
test_email_accountacceso a canallecturaProbar las credenciales IMAP/SMTP almacenadas
list_phone_numbersacceso a canallecturaLista los canales de números de teléfono que puedes ver
add_phone_numbercualquier miembroescrituraVincular un número de teléfono a la organización
delete_phone_numberpropietario / administradordestructivoEliminar un número de teléfono

Facturación

HerramientaAccesoTipoDescripción
get_billing_statecualquier miembrolecturaNivel, estado, asientos, límites, uso
change_tiersolo propietarioescrituraCambiar el nivel de suscripción (prorratea)
set_seatssolo propietarioescrituraEstablecer la cantidad de asientos pagados (prorratea)
seats_previewsolo propietariolecturaSimulación de un cambio de asientos prorrateado

Contactos

El grafo de contactos es privado por usuario: nunca se filtra entre usuarios.

HerramientaAccesoTipoDescripción
list_contactscualquier miembrolecturaLista tus contactos
get_contactcualquier miembrolecturaUn contacto, con identidades y etiquetas
create_contactcualquier miembroescrituraCrear un nuevo contacto
update_contactcualquier miembroescrituraActualizar el nombre visible o las notas
delete_contactcualquier miembrodestructivoEliminar un contacto; las identidades quedan huérfanas
merge_contactscualquier miembrodestructivoFusionar contactos completos en un único superviviente; CommSync elimina las fuentes
merge_identitiescualquier miembroescrituraFusionar dos identidades bajo un mismo contacto
split_identitycualquier miembroescrituraSeparar una identidad en huérfana
attach_identity_to_contactcualquier miembroescrituraAdjuntar una huérfana a un contacto
promote_identity_to_contactcualquier miembroescrituraPromover una huérfana a un nuevo contacto

Identidades

HerramientaAccesoTipoDescripción
get_identitycualquier miembrolecturaUna identidad y su contacto
update_identity_notescualquier miembroescrituraEditar notas por canal
list_orphaned_identitiescualquier miembrolecturaIdentidades aún no vinculadas a un contacto
list_all_identitiescualquier miembrolecturaTodas las identidades que posees

Etiquetas

HerramientaAccesoTipoDescripción
list_labelscualquier miembrolecturaListar etiquetas con recuentos de uso
create_labelcualquier miembroescrituraCrear una etiqueta (nombre y color hexadecimal)
update_labelcualquier miembroescrituraActualizar el nombre, el color o el prompt de IA
delete_labelcualquier miembrodestructivoEliminar una etiqueta en todas partes
assign_labelcualquier miembroescrituraAplicar una etiqueta a un contacto o identidad
unassign_labelcualquier miembroescrituraQuitar una etiqueta

IA

HerramientaAccesoTipoDescripción
get_ai_settingscualquier miembrolecturaLeer la configuración de IA
update_ai_settingscualquier miembroescrituraActualizar la configuración de IA
get_todays_digestcualquier miembrolecturaResumen diario de hoy (o de una fecha)
list_digestscualquier miembrolecturaResúmenes diarios recientes
dismiss_digestcualquier miembroescrituraMarcar un resumen como descartado
trigger_digest_runcualquier miembroescrituraEjecutar un resumen ahora
list_ai_runscualquier miembrolecturaEntradas recientes de actividad de IA
test_ai_connectivitycualquier miembrolecturaVerificar que CommSync tenga IA configurada
trigger_inbox_backfillcualquier miembroescrituraClasificar remitentes históricos en Promociones o Spam

Búsqueda, cuenta y webhooks

HerramientaAccesoTipoDescripción
searchcualquier miembrolecturaBuscar contactos, identidades, mensajes
search_threadscualquier miembrolecturaBúsqueda completa centrada en hilos: cada conversación que coincida con una consulta, clasificada y paginada, con fragmentos de coincidencia
get_profilecualquier miembrolecturaTu perfil (id, correo, nombre)
update_profilecualquier miembroescrituraActualizar tu nombre para mostrar
list_webhookscualquier miembrolecturaListar tus endpoints de webhook
get_webhookcualquier miembrolecturaUn único endpoint
register_webhookcualquier miembroescrituraCrear un endpoint (devuelve el secreto una sola vez)
update_webhookcualquier miembroescrituraModificar url / eventos / modo / estado
rotate_webhook_secretcualquier miembroescrituraRotar el secreto de firma (el anterior válido 24 h)
delete_webhookcualquier miembrodestructivoEliminar un endpoint y su historial
list_webhook_deliveriescualquier miembrolecturaRegistro de entregas paginado
resend_webhook_deliverycualquier miembroescrituraReintentar una entrega

Los Agentes de CommSync son los compañeros de IA que responden a los mensajes de texto y correos entrantes. Los configuras y gestionas a través de la aplicación o de la API de administración REST, no a través de este catálogo de herramientas MCP. Consulta Agents para más detalles.

Deliberadamente no existe ninguna herramienta MCP que permita a un agente externo crear, reconfigurar o aprobar turnos para un Agente de CommSync. Usa send_sms o send_email de arriba para que tu propia integración responda directamente en su lugar.

Recursos

Además de las herramientas, el servidor expone recursos MCP para lecturas directas:

commsync://threads/{threadId}/messages   — messages in a thread
commsync://contacts/{personId}            — a contact's detail
commsync://digests/{localDate}            — the AI digest for a date

Flujos de trabajo comunes

Clasificar la bandeja de entrada

`list_threads` → `get_thread_messages(threadId)` para leer lo más reciente.

Responder

`get_thread_messages(threadId)` para encontrar la identidad por la que llegó un mensaje →
<code>send_sms</code> o <code>send_email</code> con esa `identityId`.

Fusionar un contacto duplicado

`list_orphaned_identities` (o `search`) para encontrar la identidad suelta →
`merge_identities(identityAId, identityBId)` o
`attach_identity_to_contact(personId, identityId)`. Para dos registros de contacto
completos de la misma persona, confirma ambos con `get_contact` y
llama a `merge_contacts(survivorPersonId, sourcePersonIds)` en su lugar.

Reaccionar en tiempo real

No tienes que llamar a `list_threads` una y otra vez. Registra un
<a href="/docs/webhooks">webhook</a> y vuelve a llamar a MCP solo cuando
se dispare un evento.

Conecta una aplicación en Connect AI apps, o crea una clave en API keys. Luego configura webhooks, para que tu agente reaccione a los mensajes y no tenga que preguntar una y otra vez. Referencia completa de parámetros: /docs/mcp.txt.