CommSync

Uma caixa de entrada para SMS e e-mail empresarial. Pesquise e leia mensagens de texto e e-mails em todas as linhas telefônicas e caixas de correio, gerencie contatos e rótulos, faça triagem de conversas e envie SMS e e-mail pelas linhas que você permitir. Servidor remoto hospedado com OAuth 2.1.

Servidor MCP hospedado

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

Instala no Claude Code, Codex, Cursor e outros

Documentação

Servidor MCP

O CommSync fala o Model Context Protocol. Aponte um aplicativo ou agente compatível com MCP para o endpoint. Ele poderá ler conversas, enviar mensagens, gerenciar contatos e rótulos, e muito mais.

Existem duas formas de autenticar, e ambas alcançam as mesmas ferramentas:

  • OAuth 2.1 é a forma principal. O aplicativo faz seu login sem segredo compartilhado. Veja Conectar aplicativos de IA.
  • Uma chave de API é a alternativa para scripts e servidores. Envie-a como um token Bearer. Veja Chaves de API.

OAuth é como Claude, ChatGPT, Codex, Cursor e VS Code se conectam.

O usuário conectado e a função dele na organização definem o escopo de cada operação.

Agentes podem buscar /docs/mcp.txt para o mesmo catálogo como texto simples com detalhes completos dos parâmetros — uma requisição, sem scraping.

Conectar

O servidor é um único endpoint HTTP sem estado. Para conectar um aplicativo de IA, cole a URL do endpoint no aplicativo e faça login. A página Conectar aplicativos de IA tem um guia para cada aplicativo.

Para chamar o endpoint a partir do seu próprio código com uma chave de API:

Crie uma chave de API

No CommSync, abra **Configurações → Chaves de API** e crie uma chave. O CommSync a mostra
apenas uma vez — guarde-a com segurança. Veja <a href="/docs/api-keys">Chaves de API</a>.

Chame o endpoint

Envie JSON-RPC POST para a rota <code>/api/mcp</code> na sua origem da API do 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"}'
```

Chame uma ferramenta

Use <code>tools/call</code> com o nome da ferramenta e seus argumentos.

```json
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": { "name": "list_threads", "arguments": { "limit": 20 } }
}
```
EndpointPOST /api/mcp (na sua origem da API do CommSync)
TransporteHTTP, sem estado — uma requisição por chamada
AutenticaçãoToken de acesso OAuth 2.1, ou Authorization: Bearer csk_…

Autenticação

OAuth 2.1

O CommSync é seu próprio servidor de autorização. Um cliente precisa apenas da URL do endpoint, porque descobre todo o resto:

  1. Uma requisição sem token recebe 401 e um cabeçalho WWW-Authenticate. O cabeçalho nomeia os metadados do recurso protegido (/.well-known/oauth-protected-resource/api/mcp, RFC 9728).
  2. Esse documento nomeia o servidor de autorização. Os metadados dele estão em /.well-known/oauth-authorization-server (RFC 8414).
  3. O cliente se registra, envia você para a tela de consentimento e troca o código por tokens.
ConcessãoCódigo de autorização com PKCE (somente S256)
Registro do clienteRegistro dinâmico em POST /oauth/register (RFC 7591), ou um Documento de Metadados de ID do Cliente: uma URL https como o client_id
Autenticação do clientenone (clientes públicos), client_secret_post, client_secret_basic
Escopomcp (o padrão quando você omite scope)
RecursoA URL do endpoint (RFC 8707). O CommSync vincula cada token a ela
Token de acessocsat_…, válido por uma hora
Token de atualizaçãocsrt_…, válido por 90 dias. Ele é rotacionado a cada uso. Por 30 segundos após um uso, o mesmo token recebe o mesmo novo par novamente, para um cliente que atualiza duas vezes ao mesmo tempo. Depois disso, um token usado revoga sua família de tokens
RevogaçãoPOST /oauth/revoke (RFC 7009)

A resposta de autorização carrega iss (RFC 9207). Um redirecionamento de loopback (http://127.0.0.1, http://localhost, http://[::1]) pode usar qualquer porta.

Um código é de uso único. Uma segunda troca que passe na verificação PKCE revoga os tokens que a primeira troca emitiu. O CommSync recusa uma segunda troca sem o verificador correto, e essa troca não muda nada.

Chave de API

Envie Authorization: Bearer csk_…. Uma chave não expira, e você a revoga em Configurações, em Chaves de API. Uma chave é adequada para um script ou um agente no lado do servidor.

Modelo de autorização

Cada requisição resolve sua credencial (um token OAuth ou uma chave de API) para (userId, orgId, role, accessibleChannels). Cada ferramenta está atrás de um dos quatro portões. O servidor rejeita uma chamada que exceda seu acesso antes que qualquer coisa aconteça.

qualquer membro qualquer usuário na organização   acesso ao canal precisa de acesso ao canal relevante   proprietário / administrador   somente proprietário

  • qualquer membro — qualquer usuário com associação à organização.
  • acesso ao canal — você deve ter acesso ao canal envolvido.
  • proprietário / administrador — reservado para proprietários e administradores da organização.
  • somente proprietário — o único proprietário do espaço de trabalho (por exemplo, cobrança).

Proprietários e administradores têm acesso ao canal implicitamente; membros o obtêm por canal — veja Funções e permissões.

O CommSync também etiqueta as ferramentas por efeito: read (sem alteração), write (altera) ou destructive (remove dados — use com cuidado).

Chaves e aplicativos com escopo de canal

Uma chave de API ou um aplicativo conectado pode ser ajustado para linhas específicas em vez do seu acesso total ao canal. Para uma chave, escolha Linhas específicas ao criá-la ou editá-la em Configurações, em Chaves de API. Para um aplicativo, escolha-o na tela de consentimento. Você pode alterar isso depois em Configurações, em Conectar aplicativos de IA. Escolha os endereços de e-mail e números de telefone que ele pode acessar.

O servidor então cruza seu acesso ao canal em tempo real com a lista de permissões em cada requisição. Uma chave ou aplicativo com escopo só pode ler, enviar e agir nas linhas escolhidas. Conversas em outros canais são invisíveis para ele, e o CommSync recusa envios de outros canais. As listagens de canais mostram apenas o que está no escopo.

  • O padrão é Todos os canais: a chave segue seu acesso em tempo real.
  • Isso inclui linhas que você conectar depois; o CommSync migrou chaves pré-existentes dessa forma.
  • Uma chave com escopo nunca excede seus privilégios.
  • Se você perder o acesso, ou alguém excluir a linha, ela também sai do escopo da chave.
  • Superfícies por usuário (contatos, rótulos, IA, webhooks, perfil) não pertencem a um canal, então o escopo não as afeta.

Catálogo de ferramentas

Conversas

Leituras com escopo da organização (filtradas por acesso ao canal); alterações gravam apenas o estado da sua própria visualização por usuário.

FerramentaAcessoTipoDescrição
list_threadsacesso ao canalleituraLista conversas visíveis para você
get_thread_summaryacesso ao canalleituraResumo de conversa individual no formato de linha de lista
get_thread_messagesacesso ao canalleituraMensagens paginadas de uma conversa
mark_thread_readacesso ao canalescritaLimpa sua contagem de não lidas
mark_thread_unreadacesso ao canalescritaForça uma conversa como não lida para você
archive_threadacesso ao canalescritaArquivar (por usuário)
unarchive_threadacesso ao canalescritaDesarquivar (por usuário)
mark_thread_spamacesso ao canalescritaMover para Spam (por usuário)
mark_thread_promotionsacesso ao canalescritaMover para Promoções (por usuário)
mark_thread_automatedacesso ao canalescritaMover para Mensagens Automatizadas — e-mail não humano (por usuário)
move_thread_to_inboxacesso ao canalescritaLimpar sinalizadores de categoria (por usuário)
snooze_threadacesso ao canalescritaAdiar até um timestamp (por usuário)
unsnooze_threadacesso ao canalescritaLimpar um adiamento (por usuário)
delete_threadacesso ao canaldestrutivaOcultar a conversa da sua visualização; a organização mantém a cópia
restore_threadacesso ao canalescritaRestaurar uma conversa excluída suavemente
delete_messageacesso ao canaldestrutivaOcultar uma mensagem de você
hard_delete_threadproprietário / administradordestrutivaExcluir permanentemente a conversa e as mensagens compartilhadas

Envios de saída

O CommSync aplica o acesso ao canal antes de qualquer envio. Compor e encaminhar também exigem pelo menos um canal acessível do tipo certo.

FerramentaAcessoTipoDescrição
send_smsacesso ao canalescritaResponder em uma conversa SMS atual
send_emailacesso ao canalescritaResponder em uma conversa de e-mail atual
compose_smsacesso ao canalescritaIniciar uma nova conversa SMS
compose_emailacesso ao canalescritaIniciar uma nova conversa de e-mail
forward_messageacesso ao canalescritaEncaminhar uma mensagem para um novo destinatário
resend_failed_messageacesso ao canalescritaTentar novamente uma mensagem de saída com falha
get_send_capacityacesso ao canalleituraTaxa de envio sustentável por linha, além de qualquer pausa ativa por limite de taxa

Corpos de e-mail

send_email e compose_email aceitam dois campos de corpo: bodyText e bodyHtml. Forneça um deles ou ambos. Uma chamada sem nenhum falha antes que o CommSync envie qualquer coisa.

Somente texto simples é suficiente. O CommSync constrói a parte HTML a partir de bodyText. Ele escapa o texto, mantém as quebras de linha e transforma cada link http:// ou https:// em um link clicável. Quando você fornece bodyHtml, o CommSync envia seu HTML sem alterações. Quando você fornece apenas bodyHtml, o CommSync cria a parte de texto simples a partir dele. A assinatura da conta e o rodapé "Enviado do CommSync", quando ativados, vão após o seu texto em ambas as partes.

Limites de taxa nunca chegam até você

O CommSync aceita todo envio autorizado e assume a entrega a partir desse ponto — isso também cobre limites de taxa de operadoras e servidores de e-mail. As ferramentas de envio não retornam 429 e nunca pedem que você tente novamente. Quando um provedor nos limita, a mensagem permanece na fila, recua e sai sozinha.

Cada ferramenta de envio retorna um recibo que descreve onde a mensagem realmente está:

{
  "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 é um de dispatching, waiting_on_line, scheduled, sent ou failed. Nunca chame uma ferramenta de envio duas vezes para a mesma mensagem — o CommSync já colocou uma mensagem waiting_on_line na fila e a entregará.

Antes de um envio em massa, chame get_send_capacity para a taxa sustentável em cada linha da qual você pode enviar. Se você excedê-la, isso é seguro — as mensagens entram na fila em vez de falhar; elas simplesmente demoram mais para sair.

Gerenciamento de canais

FerramentaAcessoTipoDescrição
list_email_accountsacesso ao canalleituraLista canais de contas de e-mail que você pode ver
add_email_accountqualquer membroescritaVincular uma caixa de correio IMAP/SMTP à organização
delete_email_accountproprietário / administradordestrutivaRemover uma conta de e-mail
test_email_accountacesso ao canalleituraTestar credenciais IMAP/SMTP armazenadas
list_phone_numbersacesso ao canalleituraLista canais de números de telefone que você pode ver
add_phone_numberqualquer membroescritaVincular um número de telefone à organização
delete_phone_numberproprietário / administradordestrutivaRemover um número de telefone

Cobrança

FerramentaAcessoTipoDescrição
get_billing_statequalquer membroleituraPlano, status, assentos, limites, uso
change_tiersomente proprietárioescritaTrocar o plano da assinatura (com rateio)
set_seatssomente proprietárioescritaDefinir a quantidade de assentos pagos (com rateio)
seats_previewsomente proprietárioleituraSimular uma alteração de assentos com rateio

Contatos

O grafo de contatos é privado por usuário — estes nunca vazam entre usuários.

FerramentaAcessoTipoDescrição
list_contactsqualquer membroleituraLista seus contatos
get_contactqualquer membroleituraUm contato, com identidades e rótulos
create_contactqualquer membroescritaCriar um novo contato
update_contactqualquer membroescritaAtualizar o nome de exibição ou notas
delete_contactqualquer membrodestrutivaExcluir um contato; identidades ficam órfãs
merge_contactsqualquer membrodestrutivaMesclar contatos inteiros em um único sobrevivente; o CommSync exclui as fontes
merge_identitiesqualquer membroescritaMesclar duas identidades sob um contato
split_identityqualquer membroescritaDesanexar uma identidade em um órfão
attach_identity_to_contactqualquer membroescritaAnexar um órfão a um contato
promote_identity_to_contactqualquer membroescritaPromover um órfão a um novo contato

Identidades

FerramentaAcessoTipoDescrição
get_identityqualquer membroleituraUma identidade e seu contato
update_identity_notesqualquer membroescritaEditar notas por canal
list_orphaned_identitiesqualquer membroleituraIdentidades ainda não vinculadas a um contato
list_all_identitiesqualquer membroleituraTodas as identidades que você possui

Rótulos

FerramentaAcessoTipoDescrição
list_labelsqualquer membroleituraListar rótulos com contagens de uso
create_labelqualquer membroescritaCriar um rótulo (nome e cor hexadecimal)
update_labelqualquer membroescritaAtualizar o nome, a cor ou o prompt de IA
delete_labelqualquer membrodestrutivoExcluir um rótulo em todos os lugares
assign_labelqualquer membroescritaAplicar um rótulo a um contato ou identidade
unassign_labelqualquer membroescritaRemover um rótulo

IA

FerramentaAcessoTipoDescrição
get_ai_settingsqualquer membroleituraLer a configuração de IA
update_ai_settingsqualquer membroescritaAtualizar a configuração de IA
get_todays_digestqualquer membroleituraResumo diário de hoje (ou uma data)
list_digestsqualquer membroleituraResumos diários recentes
dismiss_digestqualquer membroescritaMarcar um resumo como dispensado
trigger_digest_runqualquer membroescritaExecutar um resumo agora
list_ai_runsqualquer membroleituraEntradas recentes de atividade de IA
test_ai_connectivityqualquer membroleituraVerificar se o CommSync tem IA configurada
trigger_inbox_backfillqualquer membroescritaClassificar remetentes históricos em Promoções ou Spam

Pesquisa, conta e webhooks

FerramentaAcessoTipoDescrição
searchqualquer membroleituraPesquisar contatos, identidades, mensagens
search_threadsqualquer membroleituraPesquisa completa centrada em conversas: todas as conversas que correspondem a uma consulta, classificadas e paginadas, com trechos de correspondência
get_profilequalquer membroleituraSeu perfil (id, e-mail, nome)
update_profilequalquer membroescritaAtualizar seu nome de exibição
list_webhooksqualquer membroleituraListar seus endpoints de webhook
get_webhookqualquer membroleituraUm único endpoint
register_webhookqualquer membroescritaCriar um endpoint (retorna o segredo uma vez)
update_webhookqualquer membroescritaAlterar url / eventos / modo / status
rotate_webhook_secretqualquer membroescritaRotacionar o segredo de assinatura (antigo válido por 24h)
delete_webhookqualquer membrodestrutivoExcluir um endpoint e seu histórico
list_webhook_deliveriesqualquer membroleituraRegistro de entrega paginado
resend_webhook_deliveryqualquer membroescritaTentar novamente uma entrega

Os CommSync Agents são os colegas de equipe de IA que respondem a mensagens de texto e e-mail recebidos. Você os configura e gerencia pelo aplicativo ou pela API administrativa REST, não por este catálogo de ferramentas MCP. Consulte Agents para detalhes.

Não há, propositalmente, nenhuma ferramenta MCP que permita que um agente externo crie, reconfigure ou aprove turnos para um CommSync Agent. Use send_sms ou send_email acima para que sua própria integração responda diretamente.

Recursos

Além das ferramentas, o servidor expõe recursos MCP para leituras diretas:

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

Fluxos de trabalho comuns

Triagem da caixa de entrada

`list_threads` → `get_thread_messages(threadId)` para ler as mensagens mais recentes.

Responder

`get_thread_messages(threadId)` para encontrar a identidade pela qual uma mensagem
chegou → <code>send_sms</code> ou
<code>send_email</code> com esse `identityId`.

Mesclar um contato duplicado

`list_orphaned_identities` (ou `search`) para encontrar a identidade
solta → `merge_identities(identityAId, identityBId)` ou
`attach_identity_to_contact(personId, identityId)`. Para dois registros de contato
inteiros da mesma pessoa, confirme ambos com `get_contact` e
chame `merge_contacts(survivorPersonId, sourcePersonIds)` em vez disso.

Reagir em tempo real

Você não precisa chamar `list_threads` repetidamente. Registre um
<a href="/docs/webhooks">webhook</a> e chame o MCP novamente
somente quando um evento for disparado.

Conecte um aplicativo em Connect AI apps, ou crie uma chave em API keys. Depois, configure webhooks, para que seu agente reaja a mensagens e não precise perguntar repetidamente. Referência completa de parâmetros: /docs/mcp.txt.