API e MCP

Servidor MCP

O servidor MCP do Diaform conecta seu agente de IA ao seu feedback. Depois de conectar, você pode fazer perguntas a ele, como “Do que os clientes reclamaram este mês?”, e o agente busca as conversas, os resumos e os relatórios.

MCP (Model Context Protocol) é a forma padrão de os agentes de IA se conectarem a ferramentas externas. O servidor expõe os mesmos dados da API REST, é somente leitura e usa a mesma chave de API.

Antes de começar#

Você precisa de um plano Pro, Business ou Enterprise e de uma chave de API. Proprietários e admins criam chaves em Configurações → Geral → Chaves de API. Veja Visão geral da API.

ConfiguraçãoValor
URL do servidorhttps://diaform.io/api/mcp
TransporteStreamable HTTP
AutenticaçãoCabeçalho Authorization: Bearer dia_org_live_...

Uma chave dá ao agente acesso de leitura a todos os projetos da sua organização. Crie uma chave separada para cada agente, assim você pode revogar uma sem afetar as outras.

Conectar seu agente#

Escolha seu agente:

Execute isto no seu terminal:

Shell
claude mcp add --transport http diaform https://diaform.io/api/mcp \
  --header "Authorization: Bearer $DIAFORM_API_KEY"

Depois, execute /mcp dentro do Claude Code para conferir se diaform está conectado.

Ferramentas#

O agente vê seis ferramentas somente leitura:

FerramentaO que fazArgumentos
list_projectsLista todos os projetos com ID, nome e statusNenhum
get_projectRetorna um projeto com as perguntas e as contagens de conversasproject_id
list_conversationsLista as conversas de um projeto com respondente, sentimento e resumo da IAproject_id e, opcionalmente, status, sentiment, created_after, created_before, search, limit, cursor
get_conversationRetorna uma conversa com o resumo e a transcrição completaconversation_id
list_reportsLista os relatórios de IA de um projetoproject_id e, opcionalmente, status, limit, cursor
get_reportRetorna um relatório de IA com temas, problemas, casos isolados e citaçõesreport_id

Cada ferramenta retorna o mesmo JSON do endpoint REST correspondente. Os campos estão descritos em Projetos, Conversas e Relatórios. status e sentiment são arrays, como ["completed"].

As listas retornam até 100 itens por vez. Quando um resultado tem has_more: true, o agente passa next_cursor como cursor para buscar a próxima página.

O que perguntar#

  • “Liste meus projetos do Diaform e me diga qual recebeu mais respostas.”
  • “Leia as conversas concluídas dos últimos 30 dias no projeto de onboarding e agrupe as reclamações por tema.”
  • “Encontre as conversas que falam de preço e cite o que as pessoas disseram.”
  • “Resuma o último relatório de IA e rascunhe uma mensagem de Slack com as novidades para o time de produto.”
  • “Traga a transcrição completa da conversa mais negativa desta semana.”

Erros e limites#

Uma chave ausente ou revogada, ou um plano sem acesso à API, faz a conexão falhar com HTTP 401 ou 403. Seu cliente normalmente mostra isso como um servidor com falha ou não autorizado.

Quando uma chamada de ferramenta falha, por exemplo por causa de um ID errado, o agente recebe os mesmos error e code da API REST e pode se corrigir. Veja Erros.

As requisições MCP contam para o mesmo limite da API REST: 120 requisições por minuto para cada chave.

Detalhes técnicos#

Para criar seu próprio cliente:

  • Envie mensagens JSON-RPC 2.0 com POST https://diaform.io/api/mcp. O servidor responde a cada requisição com uma única resposta JSON, não com um fluxo de eventos.
  • O servidor não guarda estado. Ele não emite ID de sessão, e GET e DELETE retornam 405.
  • As versões de protocolo compatíveis são 2025-06-18, 2025-03-26 e 2024-11-05.
  • Ele implementa initialize, ping, tools/list e tools/call. Não tem recursos nem prompts.
Shell
curl -X POST "https://diaform.io/api/mcp" \
  -H "Authorization: Bearer $DIAFORM_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "list_conversations",
      "arguments": {
        "project_id": "b8acb3ab-1f3d-4a7e-a846-b7f493f86b6d",
        "status": ["completed"],
        "limit": 10
      }
    }
  }'