Model Context Protocol · spec 2025-03-26

Radar MCP Tools

O Radar expõe um servidor MCP que permite que agentes de IA como o Claude acessem seus dados e executem ações diretamente na plataforma — sem precisar copiar e colar informações manualmente.

116

ferramentas disponíveis

24

domínios cobertos

2025-03-26

versão do protocolo

Endpoint

https://radar.noeixodigital.com/api/mcp

Como conectar

O jeito de conectar muda por cliente: Claude.AI faz login via OAuth (nenhuma chave pra copiar); Claude Desktop e outros clientes/API direta usam a chave fixa da sua conta. Veja os exemplos abaixo.

C
Claude.AI (web)Recomendado
  1. 1. Settings → Connectors → Add custom connector
  2. 2. Cole a URL: https://radar.noeixodigital.com/api/mcp
  3. 3. O Claude.AI detecta o suporte a OAuth do Radar automaticamente e te leva pra uma tela de login/autorização — entre com sua conta do Radar e clique em Autorizar.
  4. 4. Pronto — o Radar aparece como conector ativo. Não precisa gerar nem colar nenhuma chave manualmente.
D
Claude Desktop

Claude Desktop usa a chave fixa da sua conta (Bearer), não o login OAuth. Gere/copie a sua em Minha Conta → MCP (IA), depois edite o arquivo claude_desktop_config.json e adicione:

{
  "mcpServers": {
    "pluga": {
      "url": "https://radar.noeixodigital.com/api/mcp",
      "headers": {
        "Authorization": "Bearer SUA_CHAVE_AQUI"
      }
    }
  }
}

Substitua SUA_CHAVE_AQUI pela chave obtida em Minha Conta → MCP (IA). Reinicie o Claude Desktop após salvar. Essa mesma chave/header serve pra qualquer outro cliente MCP ou chamada de API direta que não faça OAuth.

Sincronizar uma base de conhecimento externa

Se sua empresa já mantém um conteúdo vetorizado ou uma base de documentos em outro sistema, dá pra manter o Radar sempre atualizado sem sair da sua ferramenta atual — bastam essas 3 tools de KB.

Por que funciona

A base de conhecimento do Radar já é 100% vetorizada — cada pergunta do cliente dispara uma busca semântica nova, não existe cache do conteúdo em memória. O conteúdo enviado por create_kb_document / update_kb_document é dividido em parágrafos, cada parágrafo vira um embedding (OpenAI text-embedding-3-small) e é gravado em dois lugares — Postgres (pgvector) e Qdrant — para busca rápida. No momento da resposta, o agente busca os trechos mais relevantes ali e injeta no contexto antes de chamar o modelo. Ou seja: qualquer conteúdo enviado por essas tools já fica imediatamente pesquisável pelo agente, sem re-deploy e sem re-treinar nada.

Escrevendo para a busca encontrar

A busca é por semelhança de texto, não por intenção. Um documento vence pelo jeito como está escrito, não por ser o mais adequado. Três consequências práticas:

  • Comece pela pergunta que o cliente faz, não pelo dado. Uma foto de cardápio descrita como "01 Alho e Óleo, 02 Atum…" não casa com "quer ver o cardápio?" — a pergunta não cita sabor nenhum. Descrita como "esta é a foto para mandar quando o cliente pede o cardápio", casa.
  • Diga também o que o documento NÃO é quando houver risco de confusão. A foto de uma promoção estava sendo enviada no lugar do cardápio até a descrição passar a dizer "isto não é o cardápio e não lista sabores".
  • Texto longo expulsa o resto. O agente recebe um número limitado de trechos por mensagem (kb_search_limit, padrão 5). Um documento verboso pode ocupar metade das vagas sozinho. Quando a mesma informação existe em texto e em imagem, os dois competem: descreva a imagem com o conteúdo dela e reduza o texto a um ponteiro, em vez de manter os dois completos.

Para diagnosticar: quando o agente responde com a coisa errada, a pergunta não é "por que ele errou" e sim o que a busca entregou a ele. Cada resposta guarda o contexto exato que recebeu no campo kbContext da mensagem — é lá que a causa aparece, e quase nunca é o prompt.

Não existe consulta ao vivo a um vector database de terceiro — o Radar só busca na própria base. O padrão certo é sincronização por push: toda vez que o conteúdo mudar na fonte de origem, seu sistema chama uma dessas tools pra refletir a mudança aqui.

1

Guarde um mapeamento id-externo → document_id

Na primeira sincronização de cada documento, create_kb_document retorna um document_id — guarde essa relação do seu lado (id do seu sistema → document_id do Radar) para saber o que atualizar depois.

2

Conteúdo novo → create_kb_document

Envie name, content (texto plano) e tags opcionais. Separe tópicos por linha em branco — cada bloco separado vira um chunk vetorizado independente, o que melhora a precisão da busca.

3

Conteúdo alterado → update_kb_document

Passe o document_id salvo no passo 1. Os chunks antigos são apagados e o documento é reindexado do zero automaticamente — pode chamar isso toda vez que a fonte original mudar.

4

(Opcional) Audite com list_kb_documents

Lista tudo que já está indexado — útil para verificar se a sincronização está completa ou detectar documentos órfãos.

1. Listar o que já existe (list_kb_documents)

POST https://radar.noeixodigital.com/api/mcp
Authorization: Bearer SUA_CHAVE
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_kb_documents",
    "arguments": {}
  }
}

2. Criar documento novo (create_kb_document)

POST https://radar.noeixodigital.com/api/mcp
Authorization: Bearer SUA_CHAVE
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "create_kb_document",
    "arguments": {
      "name": "Política de Entregas",
      "content": "Parágrafo 1 — vira um chunk vetorizado.\n\nParágrafo 2 — outro chunk, buscado separadamente.",
      "tags": "faq,entrega"
    }
  }
}

3. Atualizar documento existente (update_kb_document)

POST https://radar.noeixodigital.com/api/mcp
Authorization: Bearer SUA_CHAVE
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "update_kb_document",
    "arguments": {
      "document_id": "<document_id guardado na 1ª sincronização>",
      "content": "Conteúdo atualizado, reindexado do zero automaticamente."
    }
  }
}

Sem target_user_id nas chamadas, tudo opera na conta dona da chave usada — não precisa passar nenhum identificador de conta a mais.

Empresas

5 ferramentas

Cadastro de Empresas (modelo conta, 1 empresa → N contatos): listar, criar, detalhar, enriquecer via Receita e vincular contatos.

list_companies#

Lista/busca empresas do cadastro. Filtra por texto (nome, CNPJ, cidade, setor) e status. Retorna nome, CNPJ, cidade/UF, setor, status e nº de contatos.

Parâmetros

NomeTipoReq.Descrição
querystringopcionalTexto a buscar (nome, CNPJ, cidade, setor)
statusstringopcionallead | prospect | client | inactive
limitnumberopcionalMáx de resultados (padrão 20, máx 100)

Exemplo de chamada

tools/call
{
  "name": "list_companies",
  "arguments": { "query": "castanheiras", "status": "lead" }
}
get_company#

Detalha uma empresa pelo id — dados fiscais, sócios (QSA) e contatos vinculados.

Parâmetros

NomeTipoReq.Descrição
company_idstringobrigatórioID da empresa (via list_companies)

Exemplo de chamada

tools/call
{
  "name": "get_company",
  "arguments": { "company_id": "cmr..." }
}
create_company#

Cria uma empresa. Informe ao menos o nome (razão social). Se informar CNPJ, use enrich_company depois. Evita duplicar por CNPJ.

Parâmetros

NomeTipoReq.Descrição
namestringobrigatórioRazão social / nome
cnpjstringopcionalCNPJ
tradeNamestringopcionalNome fantasia
websitestringopcionalSite
emailstringopcionalE-mail
phonestringopcionalTelefone
statusstringopcionallead | prospect | client | inactive

Exemplo de chamada

tools/call
{
  "name": "create_company",
  "arguments": { "name": "Padaria Pão Quente LTDA", "cnpj": "12345678000199" }
}
enrich_company#

Enriquece a empresa pela Receita Federal (BrasilAPI) pelo CNPJ: razão social, fantasia, CNAE/setor, situação, porte, natureza jurídica, capital, endereço e sócios (QSA). Propaga razão social/CNPJ aos contatos vinculados.

Parâmetros

NomeTipoReq.Descrição
company_idstringobrigatórioID da empresa
cnpjstringopcionalCNPJ (opcional; usa o cadastrado se omitido)

Exemplo de chamada

tools/call
{
  "name": "enrich_company",
  "arguments": { "company_id": "cmr..." }
}

Base de Conhecimento

8 ferramentas

Busca semântica e gerenciamento de documentos indexados na KB do usuário. Todas as tools aceitam target_user_id (APENAS admin da plataforma) para operar na conta de um cliente em vez da própria.

search_knowledge_base#

Realiza busca semântica na base de conhecimento. Retorna os trechos mais relevantes para a query, com score de relevância e nome do documento de origem.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
querystringobrigatórioTexto ou pergunta a buscar
limitnumberopcionalMáximo de resultados — padrão 5, máx 20
tagstringopcionalFiltrar por tag do documento, ex: "marketing"

Exemplo de chamada

tools/call
{
  "name": "search_knowledge_base",
  "arguments": { "query": "qual é o prazo de entrega?", "limit": 3 }
}
list_kb_documents#

Lista todos os documentos indexados na KB do usuário com nome, tipo (text, url, image, pdf), status de indexação e tags.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
tagstringopcionalFiltrar documentos que contenham esta tag

Exemplo de chamada

tools/call
{
  "name": "list_kb_documents",
  "arguments": { "tag": "marketing" }
}
create_kb_document#

Cria e indexa um novo documento de texto na base de conhecimento. O conteúdo é dividido em parágrafos, vetorizado com embeddings OpenAI e armazenado para busca semântica. Requer chave OpenAI configurada na conta.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
namestringobrigatórioTítulo do documento
contentstringobrigatórioConteúdo em texto plano. Separe tópicos com linhas em branco para melhor indexação.
tagsstringopcionalTags separadas por vírgula, ex: "marketing,faq,produto"

Exemplo de chamada

tools/call
{
  "name": "create_kb_document",
  "arguments": { "name": "Política de Entregas", "content": "Entregas em até 5 dias úteis para todo o Brasil...", "tags": "faq,entrega" }
}
create_kb_image#

Cria e indexa uma IMAGEM na KB a partir de uma URL pública OU de base64 (arquivo local, sem URL). A imagem é descrita automaticamente por IA (GPT-4o Vision) e indexada para busca semântica. Fica disponível em /api/kb/image/[id] (URL pública — útil como header_image_url de create_whatsapp_template) e pode ser enviada pelo agente no WhatsApp. Requer chave OpenAI configurada na conta.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
namestringobrigatórioTítulo da imagem
image_urlstringopcionalURL pública (http/https) da imagem a baixar e indexar. Ignorado se image_base64 vier junto.
image_base64stringopcionalAlternativa quando a imagem não está hospedada em URL nenhuma — data URL base64 completa. Tem prioridade sobre image_url.
tagsstringopcionalTags separadas por vírgula, ex: "marca,logo"

Exemplo de chamada

tools/call
{
  "name": "create_kb_image",
  "arguments": { "name": "Logo principal claro", "image_url": "https://exemplo.com/logo.png", "tags": "marca,logo" }
}
create_kb_video#

Cria e indexa um VÍDEO na KB a partir de uma URL pública OU de base64. Diferente de imagem, não existe descrição automática por IA — description é obrigatório (é o texto usado na busca semântica pra saber quando enviar o vídeo). Limite de 16MB (mesmo teto que o WhatsApp impõe). Fica disponível em /api/kb/video/[id] — o agente pode enviar em conversa ativa, e também serve como header_video_url de create_whatsapp_template para cadências.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
namestringobrigatórioTítulo do vídeo
descriptionstringobrigatórioDescrição detalhada do conteúdo — não há geração automática por IA
video_urlstringopcionalURL pública (http/https, mp4) do vídeo a baixar e indexar. Ignorado se video_base64 vier junto.
video_base64stringopcionalAlternativa quando o vídeo não está hospedado em URL nenhuma — data URL base64 completa. Tem prioridade sobre video_url.
tagsstringopcionalTags separadas por vírgula

Exemplo de chamada

tools/call
{
  "name": "create_kb_video",
  "arguments": { "name": "Vídeo institucional 40s", "description": "Vídeo mostrando o escritório e a equipe, usado quando o lead pergunta como funciona o atendimento", "video_url": "https://exemplo.com/institucional.mp4" }
}
create_kb_audio#

Cria e indexa um ÁUDIO na KB a partir de uma URL pública OU de base64. Não há descrição automática por IA — description é obrigatório. Limite de 16MB. Fica disponível em /api/kb/audio/[id] — o agente pode enviar em conversa ativa. ⚠️ Áudio NÃO pode ser usado em cadência de prospecção (a Meta não suporta cabeçalho de áudio em templates aprovados).

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
namestringobrigatórioTítulo do áudio
descriptionstringobrigatórioDescrição detalhada do conteúdo — não há geração automática por IA
audio_urlstringopcionalURL pública (http/https) do áudio a baixar e indexar. Ignorado se audio_base64 vier junto.
audio_base64stringopcionalAlternativa quando o áudio não está hospedado em URL nenhuma — data URL base64 completa. Tem prioridade sobre audio_url.
tagsstringopcionalTags separadas por vírgula

Exemplo de chamada

tools/call
{
  "name": "create_kb_audio",
  "arguments": { "name": "Áudio de boas-vindas", "description": "Mensagem de voz de 15s explicando o próximo passo do atendimento", "audio_url": "https://exemplo.com/boas-vindas.ogg" }
}
update_kb_document#

Atualiza o conteúdo ou as tags de um documento existente. Os chunks antigos são removidos e o documento é re-indexado automaticamente.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
document_idstringobrigatórioID do documento (obtido via list_kb_documents)
namestringopcionalNovo título do documento
contentstringopcionalNovo conteúdo completo (se omitido, mantém o atual)
tagsstringopcionalNovas tags separadas por vírgula — substitui as existentes

Exemplo de chamada

tools/call
{
  "name": "update_kb_document",
  "arguments": { "document_id": "clxxx", "tags": "faq,produto,atualizado" }
}
delete_kb_document#

Apaga um documento da base (texto, imagem, vídeo ou áudio) e o índice de busca dele — o mesmo caminho do botão de excluir em /kb. Não tem volta. Para trocar uma imagem: crie a nova com create_kb_image e apague a antiga.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
document_idstringobrigatórioID do documento (obtido via list_kb_documents)
confirm_namestringobrigatórioNome atual exato do documento. Se não bater, nada é apagado

Exemplo de chamada

tools/call
{
  "name": "delete_kb_document",
  "arguments": { "document_id": "clxxx", "confirm_name": "Foto - Bolo de Laranja 220g" }
}

Insights de Atendimento

3 ferramentas

Perguntas/respostas problemáticas do agente, registradas automaticamente por 3 fontes (campo source): "tool" (flag_knowledge_gap, o agente sinaliza que não sabia), "heuristic" (frase-gatilho de evasiva) e "async_qa" (revisão assíncrona por cron: resposta dada COM CONFIANÇA que não é sustentada pela KB — alucinação silenciosa). "tool"/"heuristic" exigem AgentConfig.knowledgeGapTrackingEnabled; "async_qa" exige AgentConfig.asyncQaEnabled (ambos via update_agent_config). Perguntas semanticamente parecidas são agrupadas (occurrences).

list_knowledge_gaps#

Lista as lacunas de conhecimento registradas para a conta, ordenadas por frequência (occurrences) e recência. Sem target_user_id, consulta a PRÓPRIA conta autenticada; admin da plataforma pode passar target_user_id.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
statusstringopcionalpending (padrão) | resolved | dismissed | all
limitstringopcionalPadrão 50, máx 200

Exemplo de chamada

tools/call
{
  "name": "list_knowledge_gaps",
  "arguments": { "status": "pending" }
}
resolve_knowledge_gap#

Resolve, descarta ou adiciona à KB uma lacuna obtida via list_knowledge_gaps. "add_to_kb" cria automaticamente um novo documento na base de conhecimento (pergunta + resposta) já indexado. Sem target_user_id, opera na PRÓPRIA conta autenticada; admin da plataforma pode passar target_user_id.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
gap_idstringobrigatórioID da lacuna (via list_knowledge_gaps)
actionstringobrigatórioresolve | dismiss | add_to_kb
resolutionstringopcionalResposta correta para a pergunta (obrigatório para "resolve" e "add_to_kb")

Exemplo de chamada

tools/call
{
  "name": "resolve_knowledge_gap",
  "arguments": { "gap_id": "clxxx", "action": "add_to_kb", "resolution": "O prazo de entrega padrão é de 5 dias úteis." }
}
list_help_unanswered#

Central de ajuda do Radar: perguntas que o "Pergunte ao Radar" não soube responder, de TODAS as contas, agrupadas (acento/caixa/pontuação não separam) e ordenadas por quantas contas perguntaram. É a fila do que falta escrever. Traz variações, telas, cargos e o artigo mais próximo encontrado. Não confundir com list_knowledge_gaps (dúvidas dos clientes finais ao agente de uma conta). APENAS admin da plataforma.

Parâmetros

NomeTipoReq.Descrição
daysstringopcionalJanela em dias. Padrão 30, máx 365
limitstringopcionalMáximo de grupos. Padrão 30, máx 200

Exemplo de chamada

tools/call
{
  "name": "list_help_unanswered",
  "arguments": { "days": "30" }
}

Contatos (CRM)

8 ferramentas

Leitura e escrita de contatos no CRM, incluindo tags e estágios do pipeline de vendas.

list_contacts#

Lista contatos do CRM com paginação. Suporta busca por nome, telefone ou e-mail, e filtro por status.

Parâmetros

NomeTipoReq.Descrição
searchstringopcionalBusca por nome, telefone ou e-mail
statusstringopcionallead | prospect | client | inactive
email_statusstringopcional"bounced" retorna só contatos com hard bounce confirmado no e-mail
limitnumberopcionalPadrão 20, máx 100

Exemplo de chamada

tools/call
{
  "name": "list_contacts",
  "arguments": { "search": "João", "status": "prospect", "limit": 10 }
}
get_contact#

Retorna detalhes completos de um contato, incluindo as 10 notas mais recentes, estágio do pipeline, valor do negócio e a conversa mais recente (conversationId/conversationStatus/conversationChannel) — use o conversationId em get_conversation_messages, ou get_conversations com contact_id se precisar de TODAS as conversas do contato, não só a mais recente.

Parâmetros

NomeTipoReq.Descrição
idstringopcionalID do contato (use id ou phone)
phonestringopcionalTelefone do contato (alternativa ao id)

Exemplo de chamada

tools/call
{
  "name": "get_contact",
  "arguments": { "phone": "5511999999999" }
}
create_contact#

Cria um novo contato no CRM. Retorna erro se já existir um contato com o mesmo número de telefone.

Parâmetros

NomeTipoReq.Descrição
namestringobrigatórioNome completo do contato
phonestringobrigatórioTelefone no formato internacional, ex: 5511999999999
emailstringopcionalEndereço de e-mail
companystringopcionalEmpresa do contato
documentstringopcionalCPF (pessoa física) ou CNPJ (empresa), com ou sem pontuação. Entra no cadastro que o agente mostra ao cliente no WhatsApp para confirmar, em vez de perguntar
statusstringopcionallead | prospect | client | inactive — padrão: lead
sourcestringopcionalOrigem do contato, ex: whatsapp, manual
dealValuenumberopcionalValor estimado do negócio (R$)
notesstringopcionalAnotação inicial

Exemplo de chamada

tools/call
{
  "name": "create_contact",
  "arguments": { "name": "Maria Silva", "phone": "5521988887777", "status": "prospect", "dealValue": 3500 }
}
add_contact_tag#

Adiciona uma tag a um contato. Se a tag estiver mapeada a uma automação com trigger tag:<nome>, o fluxo é disparado automaticamente.

Parâmetros

NomeTipoReq.Descrição
contact_idstringobrigatórioID do contato
tagstringobrigatórioTag a adicionar, ex: VIP, Hot, Interessado

Exemplo de chamada

tools/call
{
  "name": "add_contact_tag",
  "arguments": { "contact_id": "clxxx", "tag": "VIP" }
}
remove_contact_tag#

Remove uma tag de um contato (o inverso de add_contact_tag). Não dispara nenhuma automação.

Parâmetros

NomeTipoReq.Descrição
contact_idstringobrigatórioID do contato
tagstringobrigatórioTag a remover, exatamente como aparece em get_contact/list_contacts

Exemplo de chamada

tools/call
{
  "name": "remove_contact_tag",
  "arguments": { "contact_id": "clxxx", "tag": "VIP" }
}
get_contact_360#

Visão completa de um contato numa chamada só: cadastro, estágio no funil, últimas mensagens, processo em andamento com as etapas, ordens de serviço em campo e cadências. Use quando a pergunta for "o que está acontecendo com esse cliente?" — evita encadear get_contact + get_conversations + list_processes + list_field_orders.

Parâmetros

NomeTipoReq.Descrição
contact_idstringopcionalID do contato (ou use phone)
phonestringopcionalTelefone, se não tiver o id
messages_limitnumberopcionalMensagens recentes a trazer (padrão 10, máx 50)

Exemplo de chamada

tools/call
{
  "name": "get_contact_360",
  "arguments": { "phone": "5548988066728" }  →  { "contato": {...}, "conversa": { "mensagens": [...] }, "projetos": [{ "progresso": "1/4", "etapa_atual": {...} }], "ordens_de_campo": [...], "cadencias": [...] }
}
update_contact#

Atualiza os dados cadastrais de um contato: nome, e-mail, empresa, CPF/CNPJ, telefone, origem ou observações.

Parâmetros

NomeTipoReq.Descrição
contact_idstringobrigatórioID do contato a atualizar
namestringopcionalNovo nome completo
emailstringopcionalNovo e-mail
companystringopcionalEmpresa do contato
documentstringopcionalCPF (pessoa física) ou CNPJ (empresa), com ou sem pontuação. Entra no cadastro que o agente mostra ao cliente no WhatsApp para confirmar, em vez de perguntar
phonestringopcionalNovo telefone com código do país
sourcestringopcionalOrigem do contato, ex: linkedin, evento
notesstringopcionalObservações internas (substitui o campo notes, não o histórico)

Exemplo de chamada

tools/call
{
  "name": "update_contact",
  "arguments": { "contact_id": "clxxx", "company": "Empresa Ltda", "email": "novo@email.com" }
}
update_contact_status#

Atualiza o status, estágio do pipeline, valor do negócio ou adiciona uma nota a um contato.

Parâmetros

NomeTipoReq.Descrição
contact_idstringobrigatórioID do contato
statusstringopcionallead | prospect | client | inactive
pipeline_stage_namestringopcionalNome exato da etapa do pipeline
deal_valuenumberopcionalNovo valor estimado do negócio (R$)
notesstringopcionalAnotação a registrar na linha do tempo

Exemplo de chamada

tools/call
{
  "name": "update_contact_status",
  "arguments": { "contact_id": "clxxx", "status": "client", "pipeline_stage_name": "Fechado", "deal_value": 4800 }
}

Conversas

3 ferramentas

Acesso ao histórico de atendimentos em todos os canais: WhatsApp, e-mail, Instagram, Facebook e web.

get_conversations#

Lista as conversas mais recentes com status, canal e última mensagem. Por padrão retorna as conversas ativas. Informe contact_id ou contact_phone pra achar a(s) conversa(s) de UM contato específico (nesse caso também traz arquivadas, a menos que status seja informado) — evita ter que casar por nome/telefone na mão.

Parâmetros

NomeTipoReq.Descrição
statusstringopcionalactive | archived — padrão: active (ignorado como padrão se contact_id/contact_phone for informado)
channelstringopcionalwhatsapp | email | instagram | facebook | web
contact_idstringopcionalFiltrar pelas conversas de um contato específico (ID do Contact — obtido via get_contact/list_contacts)
contact_phonestringopcionalFiltrar por telefone específico (alternativa a contact_id)
limitnumberopcionalPadrão 10, máx 50

Exemplo de chamada

tools/call
{
  "name": "get_conversations",
  "arguments": { "contact_id": "clxxx" }  →  todas as conversas (ativas e arquivadas) desse contato
}
get_conversation_messages#

Retorna o histórico completo de mensagens de uma conversa específica, ordenado do mais antigo ao mais recente.

Parâmetros

NomeTipoReq.Descrição
conversation_idstringobrigatórioID da conversa
limitnumberopcionalMensagens mais recentes — padrão 20, máx 100

Exemplo de chamada

tools/call
{
  "name": "get_conversation_messages",
  "arguments": { "conversation_id": "clxxx", "limit": 30 }
}
archive_conversation#

Arquiva uma conversa ativa, encerrando o atendimento. A conversa pode ser consultada com status "archived".

Parâmetros

NomeTipoReq.Descrição
conversation_idstringobrigatórioID da conversa ativa a arquivar

Exemplo de chamada

tools/call
{
  "name": "archive_conversation",
  "arguments": { "conversation_id": "clxxx" }
}

Pedidos de Serviço

3 ferramentas

Visualização dos pedidos de serviço criados pelo agente conversacional.

list_service_orders#

Lista pedidos de serviço com dados do cliente, status atual, tentativas de envio ao sistema externo e timestamps.

Parâmetros

NomeTipoReq.Descrição
statusstringopcionalpending | processing | sent | completed | failed
limitnumberopcionalPadrão 20, máx 100

Exemplo de chamada

tools/call
{
  "name": "list_service_orders",
  "arguments": { "status": "pending", "limit": 20 }
}
get_service_order#

Retorna detalhes completos de um pedido, incluindo lista de anexos, ID do ticket externo e histórico de erros.

Parâmetros

NomeTipoReq.Descrição
order_idstringobrigatórioID do pedido de serviço

Exemplo de chamada

tools/call
{
  "name": "get_service_order",
  "arguments": { "order_id": "clxxx" }
}
set_order_stage#

Move um pedido de estágio de produção (recebido → preparo → pronto → entregue → cancelado), como no Kanban de Pedidos. Se a conta tiver avisos ativados, o cliente é notificado automaticamente por WhatsApp/SMS. Ideal para integrar o PDV/cozinha do cliente com o Radar.

Parâmetros

NomeTipoReq.Descrição
order_idstringobrigatórioID do pedido (via list_service_orders)
stagestringobrigatóriorecebido | preparo | pronto | entregue | cancelado

Exemplo de chamada

tools/call
{
  "name": "set_order_stage",
  "arguments": { "order_id": "clxxx", "stage": "pronto" }
}

WhatsApp

2 ferramentas

Envio de mensagens WhatsApp via o provedor ativo da conta (Evolution API, Stevo ou Meta Cloud API).

send_whatsapp_message#

Envia uma mensagem de texto para um número WhatsApp. Usa automaticamente o provedor ativo configurado na conta. A mensagem fica registrada na conversa do contato (cria o Contact e a Conversa automaticamente se ainda não existirem, com status "lead") — aparece no painel do Radar e no histórico que o agente de IA usa pra responder com contexto. Não funciona para contatos de widget (sessões de chat web).

Parâmetros

NomeTipoReq.Descrição
phonestringobrigatórioNúmero com código do país, somente dígitos — ex: 5511999999999
messagestringobrigatórioTexto da mensagem a enviar

Exemplo de chamada

tools/call
{
  "name": "send_whatsapp_message",
  "arguments": { "phone": "5511999999999", "message": "Olá! Seu pedido foi confirmado." }
}
send_whatsapp_template#

Envia um template WhatsApp Business (WABA) já aprovado pela Meta — necessário para contato FRIO, quando não há janela de atendimento de 24h aberta (send_whatsapp_message é rejeitado nesse caso). Use list_whatsapp_templates antes para confirmar o nome exato e o número de variáveis {{1}}, {{2}}... do corpo — a contagem enviada em "params" precisa bater exatamente com a do template aprovado. A mensagem (corpo já interpolado com os params) fica registrada na conversa do contato, criando Contact e Conversa automaticamente se ainda não existirem.

Parâmetros

NomeTipoReq.Descrição
phonestringobrigatórioNúmero com código do país — ex: 5511999999999. Números BR sem o 9º dígito são normalizados automaticamente.
template_namestringobrigatórioNome exato do template aprovado (ver list_whatsapp_templates)
languagestringopcionalIdioma do template — padrão "pt_BR"
paramsstringopcionalValores das variáveis {{1}}, {{2}}... do corpo, separados por vírgula, na ordem (ex: "José,eKyte"). Omitir se o template não tem variáveis.
header_image_urlstringopcionalURL pública de imagem — só se o template tiver cabeçalho de IMAGEM
header_video_urlstringopcionalURL pública de vídeo — só se o template tiver cabeçalho de VÍDEO

Exemplo de chamada

tools/call
{
  "name": "send_whatsapp_template",
  "arguments": { "phone": "5511999999999", "template_name": "formulario_recebido_conta_criada", "params": "José" }
}

SMS

1 ferramenta

Envio de SMS pelo gateway do próprio celular Android do usuário (configurado em Conta → Gateway SMS).

send_sms#

Enfileira um SMS que será enviado pelo celular gateway do usuário. Só chega em número de celular. Recomendado: texto curto (≤160 caracteres = 1 SMS), sem acento e no máximo 1 link.

Parâmetros

NomeTipoReq.Descrição
phonestringobrigatórioNúmero de celular com código do país, somente dígitos — ex: 5548999998888
messagestringobrigatórioTexto do SMS (curto, ideal ≤160 caracteres)

Exemplo de chamada

tools/call
{
  "name": "send_sms",
  "arguments": { "phone": "5548999998888", "message": "Oi Joao, aqui e a noEixo. Posso te chamar no WhatsApp?" }
}

E-mail (Gmail)

2 ferramentas

Envio de e-mails e leitura da caixa de entrada via a conta Gmail conectada.

send_email#

Envia um e-mail pela conta Gmail conectada. A mensagem é registrada automaticamente como mensagem da conversa com o destinatário no CRM.

Parâmetros

NomeTipoReq.Descrição
tostringobrigatórioEndereço de e-mail do destinatário
subjectstringobrigatórioAssunto do e-mail
bodystringobrigatórioCorpo em texto plano ou HTML
ccstringopcionalEndereço em cópia (opcional)

Exemplo de chamada

tools/call
{
  "name": "send_email",
  "arguments": { "to": "cliente@empresa.com", "subject": "Proposta comercial", "body": "Segue nossa proposta..." }
}
list_inbox#

Lista e-mails não lidos da caixa de entrada com remetente, assunto, data e trecho do corpo.

Parâmetros

NomeTipoReq.Descrição
limitnumberopcionalPadrão 10, máx 30

Exemplo de chamada

tools/call
{
  "name": "list_inbox",
  "arguments": { "limit": 5 }
}

Automações

5 ferramentas

Listagem e disparo manual de fluxos de automação configurados no Radar.

list_automations#

Lista os fluxos de automação com nome, trigger e status. Use para descobrir os IDs disponíveis antes de chamar trigger_automation.

Parâmetros

NomeTipoReq.Descrição
active_onlystringopcional"true" retorna apenas automações ativas (padrão: "true")

Exemplo de chamada

tools/call
{
  "name": "list_automations",
  "arguments": { "active_only": "true" }
}
get_automation#

Retorna o detalhe completo de UMA automação, incluindo o array "actions" já parseado (list_automations não traz actions, só resumo). Use SEMPRE antes de update_automation quando for alterar só parte das ações — update_automation substitui o array inteiro, então sem ler o estado atual primeiro é fácil apagar sem querer uma ação existente.

Parâmetros

NomeTipoReq.Descrição
automation_idstringobrigatórioID do fluxo (obtido via list_automations)

Exemplo de chamada

tools/call
{
  "name": "get_automation",
  "arguments": { "automation_id": "clxxx" }
}
trigger_automation#

Dispara um fluxo de automação para um contato específico. Útil para follow-ups, mensagens programadas ou ações em resposta a eventos externos. O fluxo respeita o cooldown configurado.

Parâmetros

NomeTipoReq.Descrição
automation_idstringobrigatórioID do fluxo (obtido via list_automations)
contact_phonestringobrigatórioTelefone do contato no formato internacional
contact_namestringopcionalNome do contato (usado em mensagens com {{order.customerName}})
contextstringopcionalJSON com variáveis extras para interpolação, ex: {"serviceName":"Consultoria"}

Exemplo de chamada

tools/call
{
  "name": "trigger_automation",
  "arguments": { "automation_id": "clxxx", "contact_phone": "5511999999999", "contact_name": "João", "context": "{\"serviceName\": \"Consultoria\"}" }
}
create_automation#

Cria um novo fluxo de automação com nome, trigger e lista de ações em JSON. Triggers: order_created, order_submitted, tag:<nome>, booking_created/booking_cancelled/booking_rescheduled, flow_completed:<flowId>, ou nome de evento customizado de um webhook externo (ver parâmetro trigger). Tipos de ação: send_whatsapp, send_email, send_webhook, add_contact_tag, move_to_stage, check_tag, condition, delay, trigger_flow, send_to_ekyte, ekyte_add_tag, ekyte_add_comment, notify_team. Cada ação precisa de "id", "type" e "config" (objeto) — nunca campos soltos fora de "config". Dica: durante a conversa, o agente pode chamar a tool interna add_contact_tag pra marcar o contato (ex: "SQL" quando qualificar um lead) — isso já dispara automações com trigger "tag:<nome>", então dá pra encadear qualificação → send_webhook pra enviar o lead a um CRM externo (ex: RD Station via n8n). Os triggers booking_created/booking_cancelled/booking_rescheduled disparam quando o agente confirma/cancela/reagenda um compromisso (schedule_appointment/cancel_appointment/reschedule_appointment) — incluem {{order.hostName}}/{{order.hostEmail}} (quem ficou responsável, útil pra sincronizar com CRM externo quando o provedor de agenda faz round-robin, ex: NeetoCal) e {{order.appointmentDate}}/{{order.appointmentTime}}/{{order.meetingUrl}} (data/horário formatados em pt-BR + link real da reunião, ex: Google Meet) — úteis pra montar um send_email de confirmação. send_whatsapp funciona com qualquer provedor WhatsApp ativo (Evolution, Stevo ou Meta Direct) — usa sempre a conexão marcada como ativa na conta.

Parâmetros

NomeTipoReq.Descrição
namestringobrigatórioNome do fluxo
triggerstringobrigatórioGatilho: "order_created" | "order_submitted" | "tag:VIP" | "booking_created" | "booking_cancelled" | "booking_rescheduled" | "flow_completed:<id>" | nome customizado vindo de webhook externo (MinhaGrana usa o nome do evento recebido, ex: "mg_pagou"; RD Station Marketing usa o parâmetro ?event= configurado na URL do webhook /api/webhooks/rdstation-marketing?userId=<id>&event=<nome> — útil pra um fluxo de marketing automation disparar o SDR a fazer o primeiro toque via WhatsApp num lead que virou MQL)
actionsstringobrigatórioArray JSON de ações no formato [{id, type, config}]. send_whatsapp config: {whatsappMessage} (texto livre) ou {whatsappMessageType:"template", whatsappTemplateName, whatsappTemplateLanguage, whatsappTemplateParams (JSON array), whatsappTemplateBody (corpo com {{1}},{{2}}... — necessário pro histórico e como fallback em conexões sem conceito de template aprovado)} — use template pra contato "frio" (lead que nunca mandou mensagem, sem janela de atendimento aberta). send_email config: {emailSubject, emailBody (suportam {{order.*}}), emailIncludeHost:"true"|"false" (manda cópia também pro {{order.hostEmail}}, padrão false), emailSenderConnectionId (opcional — sem isso usa o "Padrão para envio" de Settings → Gmail, ou a 1ª conta Gmail conectada)} — requer Gmail conectado. send_webhook config: {webhookUrl, webhookMethod ("POST" padrão), webhookPayload (JSON com {{order.*}}/{{user.*}}), webhookHeaders (JSON opcional)}. add_contact_tag config: {contactTag}. move_to_stage config: {pipelineStageId}. check_tag config: {checkTag, checkTagMode:"has"|"missing"} — para o fluxo inteiro se a condição não bater (use pra "só continua se..."). condition config: {conditionTag, conditionType:"has_tag"|"missing_tag"|"has_booking"|"missing_booking"} — RAMIFICA em vez de parar: nunca interrompe o fluxo, só decide qual caminho seguir via os campos opcionais "next"/"branches" de cada ação ({"branches":{"onTrue":"<id>","onFalse":"<id>"}} só na própria ação condition; "next":"<id>" em qualquer ação, pra pular a ordem padrão do array). has_tag/missing_tag exigem conditionTag; has_booking/missing_booking IGNORAM conditionTag e em vez disso checam se order.customerEmail tem reserva CONFIRMADA na agenda conectada (hoje só contas com NeetoCal suportam essa checagem) — útil pra confirmar um "já agendou" vindo de webhook externo antes de assumir que é verdade, evitando mandar uma mensagem de confirmação pra quem na real não tem reunião marcada. delay config: {delayAmount, delayUnit}. notify_team config: {notifyTitle, notifyMessage (suportam {{order.*}})} — avisa o dono da conta por push + e-mail (e-mail só com Gmail conectado), sem pausar o agente nem enviar nada ao contato; cooldown de 1h por contato. send_to_ekyte config: {ekytePhaseId (obrigatório — fase destino no pipeline "[CRM] Venda"; IDs de fase já mudaram uma vez numa migração do eKyte sem aviso, confirme os IDs atuais antes de usar valores antigos), ekyteSummaryPrompt (opcional, instrução pra IA gerar o resumo SPICED — Situação/Dor/Impacto/Evento Crítico/Decisão/Objeção — que vira comentário na tarefa), ekyteLeadNameTemplate (opcional, suporta {{order.*}} incl. {{order.company}}/{{order.teamSize}} — define o "name" enviado ao eKyte; o eKyte SEMPRE prefixa "Lead: " no título final, não tem como evitar via webhook; sem esse campo usa {{order.customerName}} como padrão)} — cria ou move uma tarefa no CRM do eKyte, requer Conexão eKyte configurada. ekyte_add_tag config: {ekyteTagId (obrigatório — id numérico da tag no eKyte)} — adiciona uma tag numa tarefa eKyte JÁ vinculada ao contato (não muda de fase); se o contato ainda não tem tarefa vinculada, a ação não faz nada (não é erro). ekyte_add_comment config: {ekyteCommentText (obrigatório, suporta {{order.*}})} — posta um comentário na tarefa eKyte já vinculada ao contato, assinado automaticamente "🤖 [Radar]" (mesmo padrão dos comentários automáticos de tentativa de contato); se o contato ainda não tem tarefa vinculada no momento em que este nó roda, não faz nada (não é erro) — atenção: se colocado logo após um send_to_ekyte que está CRIANDO a tarefa pela primeira vez (lead novo), a criação no eKyte é assíncrona (fila), então o vínculo pode ainda não existir nesse instante exato e o comentário silenciosamente não sai.
is_activestringopcional"true" ou "false" — padrão: "true"

Exemplo de chamada

tools/call
{
  "name": "create_automation",
  "arguments": { "name": "Lead qualificado -> RD Station", "trigger": "tag:SQL", "actions": "[{\"id\":\"1\",\"type\":\"send_webhook\",\"config\":{\"webhookUrl\":\"https://n8n.exemplo.com/webhook/sql\",\"webhookPayload\":\"{\\\"nome\\\":\\\"{{order.customerName}}\\\",\\\"telefone\\\":\\\"{{order.customerPhone}}\\\"}\"}}]" }
}
update_automation#

Atualiza um fluxo de automação existente: nome, trigger, ações ou estado ativo/inativo.

Parâmetros

NomeTipoReq.Descrição
automation_idstringobrigatórioID do fluxo a atualizar
namestringopcionalNovo nome
triggerstringopcionalNovo trigger
actionsstringopcionalNovo array JSON de ações (substitui completamente)
is_activestringopcional"true" para ativar, "false" para desativar

Exemplo de chamada

tools/call
{
  "name": "update_automation",
  "arguments": { "automation_id": "clxxx", "is_active": "false" }
}

Negociações (Pipeline)

3 ferramentas

Gerenciamento do pipeline de vendas: criação e atualização de negociações com valor estimado, etapa e histórico de notas.

list_deals#

Lista negociações ativas no pipeline com valor do negócio, etapa e status. Use para monitorar o funil comercial.

Parâmetros

NomeTipoReq.Descrição
sem_resposta_ha_diasnumberopcionalSó contatos em que a empresa falou por último e o cliente não respondeu há mais de N dias. Cada item traz ultima_mensagem_cliente_em e ultima_mensagem_empresa_em.
pipeline_stagestringopcionalFiltrar por nome exato da etapa do pipeline
statusstringopcionallead | prospect | client | inactive
min_valuenumberopcionalFiltrar por valor mínimo do negócio (R$)
limitnumberopcionalPadrão 20, máx 100

Exemplo de chamada

tools/call
{
  "name": "list_deals",
  "arguments": { "status": "prospect", "min_value": 1000, "limit": 20 }
}
create_deal#

Cria uma nova negociação no CRM com valor e etapa do pipeline. Use para registrar oportunidades comerciais recebidas externamente.

Parâmetros

NomeTipoReq.Descrição
namestringobrigatórioNome do contato / cliente
phonestringobrigatórioTelefone com código do país, ex: 5511999999999
emailstringopcionalE-mail do contato
companystringopcionalEmpresa
deal_valuenumberopcionalValor estimado do negócio em R$
pipeline_stage_namestringopcionalNome exato da etapa inicial do pipeline
statusstringopcionallead | prospect | client | inactive — padrão: prospect
sourcestringopcionalOrigem: indicacao, evento, linkedin, etc.
notesstringopcionalAnotação inicial sobre a oportunidade

Exemplo de chamada

tools/call
{
  "name": "create_deal",
  "arguments": { "name": "Carlos Souza", "phone": "5511988880001", "deal_value": 12000, "pipeline_stage_name": "Proposta Enviada", "source": "linkedin" }
}
update_deal#

Atualiza uma negociação: valor, etapa do pipeline, status ou registra uma anotação na linha do tempo.

Parâmetros

NomeTipoReq.Descrição
contact_idstringobrigatórioID do contato/negociação
deal_valuenumberopcionalNovo valor estimado em R$
pipeline_stage_namestringopcionalNome exato da nova etapa do pipeline
statusstringopcionallead | prospect | client | inactive
companystringopcionalEmpresa do contato
notesstringopcionalAnotação sobre a atualização (registrada na linha do tempo)
note_typestringopcionalnote | call | email | meeting | task — padrão: note

Exemplo de chamada

tools/call
{
  "name": "update_deal",
  "arguments": { "contact_id": "clxxx", "deal_value": 15000, "pipeline_stage_name": "Fechado Ganho", "notes": "Cliente aceitou proposta via e-mail", "note_type": "email" }
}

Produtos e Serviços

3 ferramentas

Catálogo de produtos e serviços. Itens ativos são incluídos automaticamente no contexto do agente conversacional.

list_products#

Lista produtos e serviços do catálogo com descrição, preço e status. Produtos ativos alimentam o contexto do agente automaticamente.

Parâmetros

NomeTipoReq.Descrição
active_onlystringopcional"false" inclui produtos inativos — padrão: "true"
typestringopcionalphysical | recurring | service

Exemplo de chamada

tools/call
{
  "name": "list_products",
  "arguments": { "type": "service", "active_only": "true" }
}
create_product#

Cria um novo produto ou serviço no catálogo. O item ficará ativo imediatamente e passará a integrar o contexto do agente em toda resposta. É aqui que mora o preço (campo price, ex.: "A partir de R$ 32.900") — não no system_prompt nem na base de conhecimento. Informação que o agente deve perguntar ao cliente vai em order_fields (update_agent_config).

Parâmetros

NomeTipoReq.Descrição
namestringobrigatórioNome do produto ou serviço
typestringobrigatóriophysical | recurring | service
descriptionstringobrigatórioDescrição detalhada — usada no contexto do agente
pricestringopcionalPreço em formato livre, ex: "R$ 99,90" ou "A partir de R$ 200"
featuresstringopcionalCaracterísticas adicionais, benefícios ou observações

Exemplo de chamada

tools/call
{
  "name": "create_product",
  "arguments": { "name": "Consultoria Estratégica", "type": "service", "description": "Sessão de 2h para diagnóstico empresarial", "price": "R$ 800" }
}
update_product#

Atualiza dados de um produto: nome, descrição, preço, características ou ativa/desativa do catálogo.

Parâmetros

NomeTipoReq.Descrição
product_idstringobrigatórioID do produto (obtido via list_products)
namestringopcionalNovo nome
typestringopcionalphysical | recurring | service
descriptionstringopcionalNova descrição
pricestringopcionalNovo preço
featuresstringopcionalNovas características
is_activestringopcional"true" para ativar, "false" para desativar

Exemplo de chamada

tools/call
{
  "name": "update_product",
  "arguments": { "product_id": "clxxx", "price": "R$ 950", "is_active": "true" }
}

Garimpo Leads

14 ferramentas

Prospecção B2B: importar, listar, enriquecer e encaminhar leads ao Pipeline, ver listas, funil e ICP, e buscar no Google Maps. Todas aceitam target_user_id (só o admin da plataforma) para operar a conta de um cliente. Apagar leads fica de fora de propósito — use arquivar.

add_domain_checker_leads#

Importa leads em lote para o Garimpo Leads (/domain-checker). Aceita até 100 leads por chamada — faça múltiplas chamadas para listas maiores. Cada lead precisa de ao menos website OU email. Leads com website ficam com status "novo" (aguardando verificação); leads sem site ficam como SUSPEITO. Todo lead novo entra numa lista (list_name, ou "MCP — data de hoje"); chamadas com o mesmo list_name caem na mesma lista. Duplicatas não são duplicadas: continuam na lista de origem e ganham a etiqueta lista:<nome>. Após importar, acesse /domain-checker → "Analisar Todos" para enriquecer com CNPJ, score e mensagem via IA.

Parâmetros

NomeTipoReq.Descrição
list_namestringopcionalNome da lista de onde os leads vieram (ex.: "Feira Saúde SP — out/2026"). Achada pelo nome ou criada. Sem ele: "MCP — data de hoje".
leadsstringobrigatórioArray JSON de leads (até 100 por chamada). Campos aceitos: website, email, name, phone, cnpj, cnae, cnae_descricao, uf, nome_fantasia, endereco. Campos extras são salvos como extraData e usados pela IA na análise.

Exemplo de chamada

tools/call
{
  "name": "add_domain_checker_leads",
  "arguments": { "list_name": "Clínicas SP — out/2026", "leads": "[{\"name\":\"Clínica São Lucas\",\"website\":\"clinicasaolucas.com.br\",\"email\":\"contato@clinicasaolucas.com.br\",\"phone\":\"11999990001\",\"cnpj\":\"00.000.000/0001-00\",\"uf\":\"SP\"},{\"name\":\"Dra. Ana Souza\",\"email\":\"dra.ana@gmail.com\",\"phone\":\"11988880002\"}]" }
}
list_domain_checker_leads#

Lista e CONTA leads com filtros. Retorna estatísticas (total, analisados, com e-mail, com telefone/WhatsApp, com ambos, sem contato) + uma amostra de leads. "Analisado" = já teve score/perfil/mensagem gerados pela IA. Ex.: para "quantos leads analisados têm e-mail e telefone", chame com analyzed="true" e leia stats. Use limit=0 para só as estatísticas.

Parâmetros

NomeTipoReq.Descrição
querystringopcionalBusca por domínio, nome, e-mail ou CNPJ
statusstringopcionalQUEBRADO | SUSPEITO | OK | ERRO | novo
ufstringopcionalFiltra por UF, ex: SP, AM
tagstringopcionalFiltra por tag
analyzedstringopcional"true" = só analisados (com score); "false" = só não analisados
qualifiedstringopcional"true" = só qualificados (score >= 50)
has_emailstringopcional"true"/"false" = com/sem e-mail
has_phonestringopcional"true"/"false" = com/sem telefone/WhatsApp
archivedstringopcional"true" = arquivados; padrão só ativos
list_namestringopcionalFiltra pela lista de origem (nome ou parte dele; ver list_lead_lists)
faixastringopcionalA | B | C — faixa do score único (ainda em modo sombra)
phone_tipostringopcionalcelular | fixo | fixo_ou_celular | invalido
trabalhadostringopcional"true"/"false" = já abordado ou não
limitnumberopcionalMáx de leads na amostra (padrão 20, máx 100). 0 = só estatísticas.

Exemplo de chamada

tools/call
{
  "name": "list_domain_checker_leads",
  "arguments": { "list_name": "Clínicas médicas", "faixa": "B", "limit": 10 }
}
list_lead_lists#

Lista as listas de origem dos leads (uma por importação ou busca), com o total de leads ativos e quantos estão em cada faixa A/B/C do score único.

Exemplo de chamada

tools/call
{
  "name": "list_lead_lists",
  "arguments": {}
}
get_lead_funnel#

Funil de peneira de uma lista ou de todas: lista bruta → canal → enriquecimento → validação → LGPD → em cadência, mais o split de canais e os KPIs. Mesmo cálculo da aba "Funil / Listas".

Parâmetros

NomeTipoReq.Descrição
list_namestringopcionalNome (ou parte) da lista; sem ele, todas
list_idstringopcionalId da lista (alternativa ao nome)

Exemplo de chamada

tools/call
{
  "name": "get_lead_funnel",
  "arguments": { "list_name": "Clínicas médicas" }
}
get_icp_config#

Mostra o Perfil de Cliente Ideal (ICP) da conta: setores-alvo, UFs, pesos e exigências. Com list_name, mostra também o público próprio da lista e o ICP que vale para ela. É o que decide as faixas A/B/C e quais leads novos entram.

Parâmetros

NomeTipoReq.Descrição
list_namestringopcionalNome (ou parte) de uma lista, para ver o público dela

Exemplo de chamada

tools/call
{
  "name": "get_icp_config",
  "arguments": { "list_name": "CNPJ SC — jurídico" }
}
update_icp_config#

Altera o ICP. Sem list_name, o da conta (só os campos enviados mudam). Com list_name, o público próprio da lista: só setores, UFs e "sem site é sinal" — pesos e exigências seguem os da conta; herdar_da_conta="true" apaga o público da lista. As faixas são recalculadas na rodada diária (06:40). Devolve o antes e o depois.

Parâmetros

NomeTipoReq.Descrição
list_namestringopcionalLista cujo público vai mudar. Sem ele: o ICP da conta.
herdar_da_contastringopcional"true" = a lista volta a usar o ICP da conta (só com list_name)
target_sectorsstringopcionalPalavras de setor/CNAE, por vírgula ou array JSON. Substitui a lista. "" = qualquer setor.
target_ufsstringopcionalUFs alvo, por vírgula ou array JSON. "" = todas.
require_ativastringopcional"true"/"false" — CNPJ precisa estar ativo
exige_whatsappstringopcional"true"/"false" — recusa lead novo sem celular
sem_site_eh_sinalstringopcional"true"/"false" — empresa sem site conta como sinal (para quem vende site)
weightsstringopcionalJSON de pesos {"canal":50,"setor":15,"porte":35,"oportunidade":0,"regiao":0}; só as chaves enviadas mudam

Exemplo de chamada

tools/call
{
  "name": "update_icp_config",
  "arguments": { "target_sectors": "advoc, contab, condomin" }
}
update_domain_checker_lead#

Arquiva/restaura, marca como abordado e corrige CNPJ ou mensagem. Vários leads de uma vez (lead_ids, até 100) só para archived e trabalhado; CNPJ e mensagem um por vez. Não apaga nada.

Parâmetros

NomeTipoReq.Descrição
lead_idstringopcionalId de um lead
lead_idsstringopcionalVários ids, por vírgula ou array JSON (até 100)
archivedstringopcional"true" = arquivar; "false" = restaurar
trabalhadostringopcional"true" = marcar como abordado; "false" = desmarcar
cnpjstringopcionalCNPJ corrigido (só com lead_id)
mensagemstringopcionalMensagem de abordagem corrigida (só com lead_id)

Exemplo de chamada

tools/call
{
  "name": "update_domain_checker_lead",
  "arguments": { "lead_ids": "clxxx,clyyy", "trabalhado": "true" }
}
send_domain_checker_to_pipeline#

Manda leads para o Pipeline, como o botão "Pipeline" da tela: cria ou atualiza o contato no CRM na etapa escolhida. Depois o contato pode entrar em cadência com enroll_contacts (contact_id devolvido). Exige lead já enriquecido (score >= 50). Até 20 por chamada. Etapa marcada como ganho dispara o gatilho de negócio ganho.

Parâmetros

NomeTipoReq.Descrição
lead_idsstringobrigatórioIds dos leads, por vírgula ou array JSON (até 20)
stage_idstringopcionalId da etapa (list_pipeline_stages)
stage_namestringopcionalNome da etapa (alternativa ao id)

Exemplo de chamada

tools/call
{
  "name": "send_domain_checker_to_pipeline",
  "arguments": { "lead_ids": "clxxx", "stage_name": "Novo lead" }
}
enrich_domain_checker_leads#

Enriquece leads como o botão "Enriquecer": CNPJ, registrante do domínio, redes sociais, score e briefing por IA; com with_message="true" gera também a mensagem. Usa a chave de IA da conta (gera custo) e é lento: até 10 leads por chamada.

Parâmetros

NomeTipoReq.Descrição
lead_idsstringobrigatórioIds dos leads, por vírgula ou array JSON (até 10)
with_messagestringopcional"true" = gerar a mensagem de abordagem

Exemplo de chamada

tools/call
{
  "name": "enrich_domain_checker_leads",
  "arguments": { "lead_ids": "clxxx,clyyy", "with_message": "true" }
}
search_google_places#

Busca estabelecimentos no Google Maps e devolve uma prévia (nome, telefone, site, endereço, avaliação). Não grava nada: para salvar, mande os escolhidos em add_domain_checker_leads com list_name. Usa a chave Google Places da conta (gera custo): até 5 cidades × 5 tipos por chamada.

Parâmetros

NomeTipoReq.Descrição
cidadesstringobrigatórioCidades por vírgula ou array JSON, ex.: "Florianópolis SC, Joinville SC"
tiposstringobrigatórioTipos de negócio, ex.: "clínica odontológica, consultório"
min_ratingnumberopcionalNota mínima (padrão 4.0)
min_reviewsnumberopcionalMínimo de avaliações (padrão 5)

Exemplo de chamada

tools/call
{
  "name": "search_google_places",
  "arguments": { "cidades": "Florianópolis SC", "tipos": "clínica odontológica" }
}
list_domain_checker_tags#

Lista todas as tags únicas utilizadas nos leads com contagem de quantos leads possuem cada tag. Use para descobrir os segmentos/listas existentes antes de filtrar ou gerenciar tags.

Exemplo de chamada

tools/call
{
  "name": "list_domain_checker_tags",
  "arguments": {}
}
tag_domain_checker_leads#

Adiciona uma ou mais tags a leads específicos por ID ou domínio. As tags existentes são preservadas (merge). Use para organizar leads por segmento, campanha, prioridade ou data de importação.

Parâmetros

NomeTipoReq.Descrição
tagsstringobrigatórioTags a adicionar, separadas por vírgula, ex: "clinicas-sp,vip,jun-2026"
idsstringopcionalIDs dos leads separados por vírgula (alternativo a domains)
domainsstringopcionalDomínios separados por vírgula, ex: "clinicax.com.br,clinicay.com.br" (alternativo a ids)

Exemplo de chamada

tools/call
{
  "name": "tag_domain_checker_leads",
  "arguments": { "tags": "clinicas-sp,jun-2026", "domains": "clinicax.com.br,clinicay.com.br" }
}
untag_domain_checker_leads#

Remove uma ou mais tags de leads específicos. As outras tags do lead são preservadas.

Parâmetros

NomeTipoReq.Descrição
tagsstringobrigatórioTags a remover, separadas por vírgula, ex: "descartado,jun-2026"
idsstringopcionalIDs dos leads separados por vírgula (alternativo a domains)
domainsstringopcionalDomínios separados por vírgula (alternativo a ids)

Exemplo de chamada

tools/call
{
  "name": "untag_domain_checker_leads",
  "arguments": { "tags": "jun-2026", "ids": "clxxx,clyyy" }
}
rename_domain_checker_tag#

Renomeia uma tag em todos os leads que a possuem. Útil para corrigir erros de digitação ou padronizar nomes de segmentos após importações.

Parâmetros

NomeTipoReq.Descrição
old_tagstringobrigatórioNome atual da tag
new_tagstringobrigatórioNovo nome da tag

Exemplo de chamada

tools/call
{
  "name": "rename_domain_checker_tag",
  "arguments": { "old_tag": "clinicas-sao-paulo", "new_tag": "clinicas-sp" }
}

Agendamentos

2 ferramentas

Consulta de agendamentos registrados no sistema e conexão de provedores de agenda (Google Calendar via painel OAuth, ou NeetoCal via esta tool). Com múltiplas conexões: se uma delas tiver is_default=true, o agente usa essa automaticamente e SEM perguntar ao cliente quem prefere — as demais só entram em jogo se o cliente pedir uma pessoa específica por nome. Sem nenhuma marcada como padrão, o comportamento é o antigo: com 2+ conexões, o agente pergunta qual profissional o cliente prefere antes de checar disponibilidade.

connect_neetocal#

Conecta a conta a um scheduling link do NeetoCal (provedor alternativo ao Google Calendar). Fluxo em 2 passos: chame sem meeting_slug para validar a chave e listar os scheduling links disponíveis (com hosts/duração); chame de novo com o meeting_slug escolhido para salvar. Cada meeting_slug vira UMA conexão própria — chame de novo com um slug diferente para adicionar outro profissional/link sem apagar os anteriores (ex: um round-robin geral + um link individual por closer). Depois, ative calendar_booking_mode via update_agent_config.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
api_keystringobrigatórioChave de API do NeetoCal (Painel de administração > Chaves da API), começa com "NCAL-"
subdomainstringobrigatórioSubdomínio do workspace, ex: "ekyte" (de https://ekyte.neetocal.com)
meeting_slugstringopcionalSlug do scheduling link a usar (omitir na 1ª chamada para descobrir os disponíveis). Cada slug distinto vira uma conexão própria.
labelstringopcionalNome de exibição do profissional/link (opcional; padrão = nome do meeting no NeetoCal), ex: "Pablo Costa"
is_defaultstringopcional"true" marca esta conexão como a PADRÃO — usada automaticamente pelo agente sem perguntar ao cliente quem prefere; desmarca as demais conexões de agenda da conta. Com 2+ conexões, as não-padrão viram "alternativas nominais" (só usadas se o cliente pedir uma pessoa específica por nome).

Exemplo de chamada

tools/call
{
  "name": "connect_neetocal",
  "arguments": { "api_key": "NCAL-xxxx", "subdomain": "ekyte" }  →  depois: { "api_key": "NCAL-xxxx", "subdomain": "ekyte", "meeting_slug": "demo-30", "label": "Especialista eKyte", "is_default": "true" }  →  e mais: { "api_key": "NCAL-xxxx", "subdomain": "ekyte", "meeting_slug": "reunio-com-pablo-costa", "label": "Pablo Costa" }
}
list_bookings#

Lista agendamentos com título do evento, contato, horários de início/fim e status. Use para consultar a agenda de atendimentos ou filtrar por período.

Parâmetros

NomeTipoReq.Descrição
statusstringopcionalconfirmed | cancelled | rescheduled
contact_phonestringopcionalFiltrar por telefone do contato
fromstringopcionalData inicial em ISO 8601, ex: "2025-01-01T00:00:00Z"
tostringopcionalData final em ISO 8601
limitnumberopcionalPadrão 20, máx 100

Exemplo de chamada

tools/call
{
  "name": "list_bookings",
  "arguments": { "status": "confirmed", "from": "2025-07-01T00:00:00Z", "to": "2025-07-31T23:59:59Z" }
}

Cadências de Prospecção

9 ferramentas

Gerenciamento completo de cadências de prospecção multi-touch: criação de sequências com steps em múltiplos canais, matrícula de contatos e controle individual de matrículas. Todas as tools aceitam target_user_id (admin da plataforma) para provisionar/gerenciar cadências na conta de um cliente, mesmo padrão da categoria Provisionamento.

list_sequences#

Lista as cadências de prospecção ativas. Retorna nome, número de steps, limite diário e total de matrículas ativas. Use para descobrir os IDs antes de matricular contatos.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
active_onlystringopcional"false" inclui cadências inativas — padrão: "true"

Exemplo de chamada

tools/call
{
  "name": "list_sequences",
  "arguments": { "active_only": "true" }
}
create_sequence#

Cria uma nova cadência de prospecção com steps programados em múltiplos canais. Tipos de step: send_whatsapp, send_email, send_sms, send_linkedin, send_facebook, send_webhook, add_tag, move_stage. send_webhook faz POST/GET/PUT genérico pra um sistema externo (ex: RD Station Marketing) — use dois steps em sequência (delay 0) pra popular campos e depois disparar, como no padrão descrito em create_automation. Variáveis nos templates: {{contact.name}}, {{contact.firstName}}, {{contact.company}}, {{contact.phone}}, {{contact.email}}. Em steps send_email também disponível {{unsubscribe_url}} (opcional — o link de descadastro one-click já sai automático no header do e-mail; use no corpo só se quiser deixar visível também, ex: rodapé "não quer mais receber?").

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
namestringobrigatórioNome da cadência, ex: "Prospecção Agências SC — 14 dias"
descriptionstringopcionalDescrição opcional
daily_limitstringopcionalMáx. de disparos por dia — padrão: 50. Reduza para evitar bloqueio no WhatsApp.
stepsstringobrigatórioArray JSON com os steps. Cada step: { id, delayDays, delayHours, type, template?, emailSubject?, tag?, stageId?, waTemplateName?, waTemplateLang?, waTemplateParams?, waTemplateHeaderImageUrl?, waTemplateHeaderVideoUrl?, webhookUrl?, webhookMethod?, webhookPayload?, webhookHeaders? }. O delay é relativo ao step anterior. ⚠️ 1º toque FRIO no WhatsApp (sem janela de atendimento aberta): a Meta só aceita template WABA já aprovado — use waTemplateName (nome exato do template aprovado) + waTemplateLang (ex: "pt_BR") + waTemplateParams (array na ordem das variáveis {{1}},{{2}}... do template); "template" nesse step vira só texto de exibição no histórico, não é o que é enviado. Se o template tiver cabeçalho de IMAGEM ou VÍDEO (ver list_whatsapp_templates), informe a URL pública correspondente em waTemplateHeaderImageUrl ou waTemplateHeaderVideoUrl (ex: a URL retornada por create_kb_image/create_kb_video) — NÃO existe cabeçalho de ÁUDIO em template, então áudio nunca entra aqui. Steps de follow-up após o contato responder (janela de 24h aberta) podem usar só "template" (texto livre). type "send_webhook": webhookUrl (obrigatório), webhookMethod ("POST"|"GET"|"PUT", padrão POST), webhookPayload (JSON com {{contact.*}}), webhookHeaders (JSON opcional, ex: {"Authorization":"Bearer ..."}).

Exemplo de chamada

tools/call
{
  "name": "create_sequence",
  "arguments": { "name": "Prospecção Sites Quebrados", "daily_limit": "20", "steps": "[{\"id\":\"s1\",\"delayDays\":0,\"delayHours\":0,\"type\":\"send_whatsapp\",\"waTemplateName\":\"primeiro_toque_aprovado_v1\",\"waTemplateLang\":\"pt_BR\",\"waTemplateParams\":[\"{{contact.firstName}}\"],\"waTemplateHeaderVideoUrl\":\"https://radar.noeixodigital.com/api/kb/video/clxxx\",\"template\":\"Oi {{contact.firstName}}! [texto do template aprovado]\"},{\"id\":\"s2\",\"delayDays\":3,\"delayHours\":0,\"type\":\"send_whatsapp\",\"template\":\"{{contact.firstName}}, tudo bem? Conseguiu verificar o site?\"},{\"id\":\"s3\",\"delayDays\":5,\"delayHours\":0,\"type\":\"send_linkedin\",\"template\":\"Oi {{contact.name}}, te mandei mensagem no WhatsApp sobre o site da {{contact.company}}...\"}]" }
}
update_sequence#

Edita uma cadência existente — todos os campos opcionais, só altera o que for enviado. is_active=false pausa a cadência inteira e pausa automaticamente as matrículas ativas dela (o dispatcher para de rodar); is_active=true retoma as matrículas pausadas que nunca responderam (quem respondeu fica pausado, preservado). steps substitui o array INTEIRO — busque os steps atuais via list_sequences antes de editar parcialmente.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
sequence_idstringobrigatórioID da cadência (obtido via list_sequences)
namestringopcionalNovo nome
descriptionstringopcionalNova descrição
daily_limitstringopcionalNovo limite diário de disparos
is_activestringopcional"true"/"false" — liga/desliga a cadência inteira e sincroniza as matrículas
stepsstringopcionalArray JSON com os steps NOVOS, substituindo os atuais por completo (mesmo formato de create_sequence)

Exemplo de chamada

tools/call
{
  "name": "update_sequence",
  "arguments": { "sequence_id": "clxxx", "is_active": "false" }  →  pausa a cadência inteira e todas as matrículas ativas dela
}
delete_sequence#

Apaga permanentemente uma cadência e TODAS as suas matrículas (cascade). Irreversível — use com cuidado, sobretudo em cadências de teste que ficaram órfãs. Não afeta os contatos em si.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
sequence_idstringobrigatórioID da cadência a apagar

Exemplo de chamada

tools/call
{
  "name": "delete_sequence",
  "arguments": { "sequence_id": "clxxx" }
}
enroll_contacts#

Matricula contatos em uma cadência de prospecção pelo número de telefone. Cria o contato no CRM automaticamente se não existir. Contatos já matriculados (ativos ou pausados), ou descadastrados (lista de supressão), são ignorados.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
sequence_idstringobrigatórioID da cadência (obtido via list_sequences)
phonesstringobrigatórioTelefones separados por vírgula no formato internacional, ex: "5548999990001,5548999990002"
contact_namesstringopcionalNomes correspondentes aos telefones, separados por vírgula (mesma ordem). Ex: "João Silva,Maria Santos"
start_atstringopcionalSobrescreve o horário do 1º step (ISO 8601) — útil pra testar sem esperar o delay/janela comercial padrão

Exemplo de chamada

tools/call
{
  "name": "enroll_contacts",
  "arguments": { "sequence_id": "clxxx", "phones": "5548999990001,5548999990002", "contact_names": "João Silva,Maria Santos" }
}
list_enrollments#

Lista matrículas de contatos em cadências, paginado. Status: active (ativa), paused (respondeu — pausada automaticamente), completed (concluída), waiting_manual (tarefa LinkedIn/Facebook pendente), unsubscribed (cancelada). Pra cadências grandes (milhares de matrículas), use count_enrollments primeiro pra saber o tamanho antes de paginar tudo.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
sequence_idstringopcionalFiltrar por cadência específica (opcional)
statusstringopcionalactive | paused | completed | unsubscribed | waiting_manual
current_stepstringopcionalFiltrar por índice do step ATUAL (0-based) — ex: "1" pega quem já concluiu o step 0
min_steps_donestringopcionalFiltrar por progresso mínimo — ex: "1" retorna só quem já recebeu pelo menos 1 toque
repliedstringopcional"true" só quem já respondeu; "false" só quem nunca respondeu
limitstringopcionalPadrão 20, máx 500
offsetstringopcionalQuantos resultados pular — incremente pelo `limit` a cada chamada pra paginar

Exemplo de chamada

tools/call
{
  "name": "list_enrollments",
  "arguments": { "sequence_id": "clxxx", "min_steps_done": "1", "limit": "300", "offset": "0" }
}
count_enrollments#

Conta matrículas agregadas por status e por step atual, sem baixar a lista inteira. Use ANTES de uma ação em lote (manage_enrollment com sequence_id) pra saber quantas matrículas seriam afetadas, ou pra montar um relatório rápido de uma cadência com milhares de matrículas.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
sequence_idstringopcionalFiltrar por cadência específica (opcional)

Exemplo de chamada

tools/call
{
  "name": "count_enrollments",
  "arguments": { "sequence_id": "clxxx" }  →  { "total": 18228, "byStatus": {"active": 18081, "paused": 140, ...}, "byCurrentStep": {"0": 18081, "1": 147} }
}
sequence_stats#

Métricas de performance de UMA cadência: enviados por step, aberturas de e-mail, bounces confirmados (hard bounce), descadastros, respostas e conclusões. Use antes de soltar um lote maior, ou pra medir o resultado real de uma cadência já rodando. ⚠️ Cliques em links ainda NÃO são rastreados — só abertura de e-mail (pixel).

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
sequence_idstringobrigatórioID da cadência (obtido via list_sequences)

Exemplo de chamada

tools/call
{
  "name": "sequence_stats",
  "arguments": { "sequence_id": "clxxx" }  →  { "totalSent": 203, "byStep": [{"stepIndex":0,"type":"send_email","sent":203}, ...], "emailOpens": 46, "bouncedContacts": 3, "unsubscribed": 5, "replied": 12, "completed": 8 }
}
manage_enrollment#

Gerencia matrícula(s) em uma cadência. Ações: pause (pausa), resume (retoma), cancel (cancela/remove), advance (executa step atual imediatamente sem esperar o delay), repeat (re-executa o último step), restart (volta ao step 0), done_manual (marca tarefa manual LinkedIn/Facebook como feita e avança para o próximo step). MODO INDIVIDUAL: enrollment_id. MODO EM LOTE: enrollment_ids (vários separados por vírgula) OU sequence_id (+ status/current_step/min_steps_done como filtro do alvo) — aplica em todas que baterem, até 2000 por chamada; quem não está no estado certo pra ação é só pulado, não trava o lote.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
enrollment_idstringopcionalModo individual: ID de UMA matrícula (obtido via list_enrollments)
enrollment_idsstringopcionalModo em lote: vários IDs separados por vírgula
sequence_idstringopcionalModo em lote: aplica em todas as matrículas dessa cadência que baterem com status/current_step/min_steps_done
statusstringopcionalModo em lote (com sequence_id): filtro de status
current_stepstringopcionalModo em lote (com sequence_id): filtro por step atual
min_steps_donestringopcionalModo em lote (com sequence_id): filtro por progresso mínimo
actionstringobrigatóriopause | resume | cancel | advance | repeat | restart | done_manual

Exemplo de chamada

tools/call
{
  "name": "manage_enrollment",
  "arguments": { "sequence_id": "clxxx", "status": "active", "min_steps_done": "0", "action": "pause" }  →  pausa em lote todos os ativos que ainda não receberam nenhum toque
}

Templates WABA

3 ferramentas

Templates de mensagem do WhatsApp Business (WABA) — obrigatórios pra envio FRIO (sem janela de atendimento aberta), exigem aprovação da Meta. Suporta cabeçalho de texto ou imagem (ex: banner de promoção) e botões de resposta rápida (QUICK_REPLY, ex: "Sim"/"Não").

list_whatsapp_templates#

Lista os templates WABA da conta com status de aprovação (APPROVED, PENDING, REJECTED, PAUSED). Confira antes de referenciar um template em create_sequence/create_automation.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.

Exemplo de chamada

tools/call
{
  "name": "list_whatsapp_templates",
  "arguments": {}
}
create_whatsapp_template#

Cria um template WABA (texto, imagem, vídeo ou +botões) e submete pra aprovação da Meta (minutos a ~1 dia). header_image_url/header_video_url baixa o arquivo e faz o upload pra Meta automaticamente (não precisa base64). Não existe cabeçalho de ÁUDIO nos templates da Meta. buttons vira QUICK_REPLY — cada tap do lead chega como mensagem de texto normal com o texto do botão.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
namestringobrigatórioNome único (minúsculas/números/underscore), ex: "promo_agosto_v1"
categorystringobrigatórioMARKETING | UTILITY | AUTHENTICATION
languagestringopcionalPadrão "pt_BR"
bodystringobrigatórioCorpo, com {{1}},{{2}}... pra variáveis (nunca no início/fim do texto)
header_textstringopcionalCabeçalho de texto (ignorado se algum header de imagem/vídeo vier junto)
header_image_urlstringopcionalURL PÚBLICA de imagem JPEG/PNG (até 5MB) pro cabeçalho — ex: banner da promoção do mês. Prioridade sobre header_video_url se ambos vierem.
header_image_base64stringopcionalAlternativa quando a imagem não está hospedada em URL nenhuma (ex: arquivo local) — data URL base64 completa ("data:image/png;base64,...."). Tem prioridade sobre header_image_url.
header_video_urlstringopcionalURL PÚBLICA de vídeo MP4 (até 16MB) pro cabeçalho — ex: vídeo institucional curto
header_video_base64stringopcionalAlternativa quando o vídeo não está hospedado em URL nenhuma — data URL base64 completa ("data:video/mp4;base64,...."). Tem prioridade sobre header_video_url.
footerstringopcionalRodapé, ex: "Responda PARAR para cancelar"
buttonsstringopcionalBotões separados por vírgula, até 3, até 25 caracteres cada. Ex: "Sim,Não"

Exemplo de chamada

tools/call
{
  "name": "create_whatsapp_template",
  "arguments": { "name": "promo_agosto_v1", "category": "MARKETING", "body": "Oi {{1}}! A promoção do mês está no ar: 20% off em todo o catálogo até dia 31.", "header_image_url": "https://exemplo.com/banner-promo.jpg", "buttons": "Sim,Não" }
}
delete_whatsapp_template#

Deleta um template WABA pelo nome. A Meta não permite editar o texto de um template já criado — pra corrigir algo (erro de digitação, acento corrompido), a única forma é deletar e criar de novo.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
namestringobrigatórioNome exato do template (via list_whatsapp_templates)

Exemplo de chamada

tools/call
{
  "name": "delete_whatsapp_template",
  "arguments": { "name": "promo_agosto_v1" }
}

Templates de E-mail

4 ferramentas

Biblioteca de templates de e-mail (aba "E-mail" de /templates) — catálogo reutilizável pra montar steps send_email de cadências. ⚠️ É só um catálogo: o StepEditor COPIA body/subject pro step no momento em que você escolhe um template — não existe referência viva. Editar ou apagar um template aqui NUNCA afeta uma cadência que já usou ele antes (use update_sequence pra corrigir uma cadência já em produção); só afeta quem escolher esse template DEPOIS da edição.

list_email_templates#

Lista os templates de e-mail salvos, com corpo completo. Use pra achar o template certo (ou ler o conteúdo de um antigo) antes de montar/corrigir um step send_email.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
searchstringopcionalFiltro por nome ou assunto (case-insensitive)

Exemplo de chamada

tools/call
{
  "name": "list_email_templates",
  "arguments": { "search": "jurídico" }
}
create_email_template#

Cria um novo template de e-mail na biblioteca. Fica disponível pra copiar em qualquer cadência futura via "📧 Template" no StepEditor.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
namestringobrigatórioNome do template (só identifica na biblioteca, não aparece pro lead)
subjectstringobrigatórioAssunto do e-mail. Suporta {{contact.firstName}} e demais variáveis de interpolação usadas nas cadências.
bodystringobrigatórioCorpo do e-mail (HTML se is_html=true)
is_htmlstringopcional"true" (padrão) ou "false"

Exemplo de chamada

tools/call
{
  "name": "create_email_template",
  "arguments": { "name": "Jurídico D+7 v2", "subject": "Oi {{contact.firstName}}, ainda dá tempo", "body": "<p>...</p>" }
}
update_email_template#

Atualiza nome, assunto, corpo ou formato de um template existente na biblioteca.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
template_idstringobrigatórioID do template (via list_email_templates)
namestringopcionalNovo nome
subjectstringopcionalNovo assunto
bodystringopcionalNovo corpo
is_htmlstringopcional"true"/"false"

Exemplo de chamada

tools/call
{
  "name": "update_email_template",
  "arguments": { "template_id": "clxxx", "body": "<p>Texto corrigido...</p>" }
}
delete_email_template#

Apaga um template da biblioteca. Não afeta cadências já configuradas.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
template_idstringobrigatórioID do template (via list_email_templates)

Exemplo de chamada

tools/call
{
  "name": "delete_email_template",
  "arguments": { "template_id": "clxxx" }
}

Mensagens rápidas

4 ferramentas

Mensagens rápidas do Chat: o operador digita "/" no campo de mensagem e escolhe uma. Texto livre, sem aprovação da Meta — só podem ser enviadas com a janela de 24h aberta (para janela fechada use os templates do WhatsApp). Podem ser pessoais (só quem criou vê) ou da equipe (toda a conta vê; alteram o autor, o gerente e o dono). Grupo e posição organizam a lista; no texto, {nome} vira o primeiro nome do cliente e {empresa} o nome do negócio na hora de usar.

list_quick_replies#

Lista as mensagens rápidas pessoais da conta autenticada + as da equipe, na ordem do menu, com id, título, texto, grupo, ordem, da_equipe e minha.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.

Exemplo de chamada

tools/call
{
  "name": "list_quick_replies",
  "arguments": {}
}
create_quick_reply#

Cria uma mensagem rápida. Por padrão é da equipe.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
titlestringobrigatórioRótulo curto exibido na lista (até 60 caracteres)
contentstringobrigatórioTexto inserido no campo de mensagem (até 4000 caracteres)
da_equipestringopcional"true" (padrão) toda a conta vê; "false" pessoal
grupostringopcionalGrupo no menu do "/" (até 30 caracteres), ex.: "Objeções". "" tira do grupo.
ordemnumberopcionalPosição dentro do grupo (1 a 999). Sem posição, vai para o fim do grupo, em ordem alfabética.

Exemplo de chamada

tools/call
{
  "name": "create_quick_reply",
  "arguments": { "title": "Pedir cidade", "content": "{nome}, em qual cidade fica o terreno de vocês?", "grupo": "Qualificação", "ordem": 1 }
}
update_quick_reply#

Altera título, texto ou o tipo (da equipe/pessoal). Pessoal só o autor altera; da equipe, autor, gerente ou dono.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
idstringobrigatórioID da mensagem rápida (via list_quick_replies)
titlestringopcionalNovo título
contentstringopcionalNovo texto
da_equipestringopcional"true" ou "false"
grupostringopcionalGrupo no menu do "/" (até 30 caracteres), ex.: "Objeções". "" tira do grupo.
ordemnumberopcionalPosição dentro do grupo (1 a 999). Sem posição, vai para o fim do grupo, em ordem alfabética.

Exemplo de chamada

tools/call
{
  "name": "update_quick_reply",
  "arguments": { "id": "clxxx", "content": "Texto novo" }
}
delete_quick_reply#

Apaga uma mensagem rápida. Exige confirm_title igual ao título atual.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
idstringobrigatórioID da mensagem rápida
confirm_titlestringobrigatórioTítulo atual, exatamente como em list_quick_replies

Exemplo de chamada

tools/call
{
  "name": "delete_quick_reply",
  "arguments": { "id": "clxxx", "confirm_title": "Pedir cidade" }
}

Provisionamento (White-label)

11 ferramentas

Criação de contas de cliente (multi-tenant) e configuração do agente conversacional. Uso restrito ao administrador da plataforma — ideal para entregar soluções white-label (ex: um agente de atendimento por cliente). Requer conta com papel admin da plataforma; contas comuns só conseguem configurar o próprio agente.

create_client_account#

Provisiona uma conta nova (white-label) para um cliente: cria o tenant isolado, o usuário administrador da conta e uma configuração de agente vazia. SOMENTE o administrador da plataforma pode usar. Retorna o userId da conta e a senha temporária. Depois use update_agent_config (target_user_id = este userId) para a persona, e as tools de KB/produtos/automação para o restante. O WhatsApp é conectado à parte, pelo painel Settings da conta (OAuth Meta — não disponível por MCP).

Parâmetros

NomeTipoReq.Descrição
business_namestringobrigatórioNome do negócio/empresa do cliente, ex: "Confeitaria Doce Mel". Vira o nome do tenant.
admin_emailstringobrigatórioE-mail de login do administrador da conta do cliente (único no sistema).
admin_namestringopcionalNome da pessoa administradora (padrão = business_name)
temp_passwordstringopcionalSenha temporária (se omitida, uma aleatória é gerada e retornada)
planstringopcionalFaixas de venda: essencial (R$ 197, 300 atendimentos) | crescimento (R$ 397, 1.000) | operacao (R$ 697, 2.000) | escala (R$ 1.197, 4.000) — a conta nasce com os recursos da faixa e o agente no gpt-4o-mini. Legado: starter | pro | enterprise. Padrão: enterprise (starter com mcp_profile desafio).
mcp_profilestringopcionalcompleto (padrão, todas as ações) | desafio (aluno do Desafio noEixo: o Claude da conta vê e usa só as ações do curso; a única que apaga é delete_quick_reply; erros saem em português simples). A conta do Desafio já nasce com o funil Novo contato › Em atendimento › Orçamento enviado › Follow-up › Cliente (ganho) › Perdido e com o nome do negócio no título do widget, plano starter e menu só com o que o curso usa (Chat, Pipeline, Cadências, Pedidos, Produtos, Base, Insights, Templates, Widget).

Exemplo de chamada

tools/call
{
  "name": "create_client_account",
  "arguments": { "business_name": "Confeitaria Doce Mel", "admin_email": "contato@docemel.com.br", "mcp_profile": "desafio" }
}
set_mcp_profile#

Define o perfil de ações MCP de uma conta já criada: "desafio" (só as ações do curso, bloqueadas também na chamada; trigger_automation só dispara a automação de publicar a landing page) ou "completo". SOMENTE o administrador da plataforma. Vale em até 1 minuto.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringobrigatóriouserId do dono da conta
profilestringobrigatóriodesafio | completo

Exemplo de chamada

tools/call
{
  "name": "set_mcp_profile",
  "arguments": { "target_user_id": "cm...", "profile": "desafio" }
}
get_landing_page#

Lê a landing page da conta: publicada ou não, endereço (<subdominio>.noeixo.tech), status (publicada | retirada) e todos os campos atuais. Use antes de alterar a página, para mudar só o que o aluno pediu.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma)

Exemplo de chamada

tools/call
{
  "name": "get_landing_page",
  "arguments": {}
}
publish_landing_page#

Publica ou atualiza a landing page em <subdominio>.noeixo.tech com o modelo do Desafio noEixo. Primeira vez: subdominio + nome_do_negocio, ramo, cidade, frase_principal, descricao, whatsapp, beneficios (lista JSON, 1–3) e servicos (lista JSON, 1–6). Para alterar, mande só o que muda; "" apaga um campo opcional. Opcionais: cor (#RRGGBB), tempo_resposta, depoimentos (só reais, até 3), perguntas (até 6), endereco, horario, email, chamada_final, foto_url (https), cnpj. Todo texto é escapado; colchete de exemplo do modelo é recusado; bloco sem dado some. O endereço é de uma conta só; trocar o subdomínio tira o antigo do ar.

Parâmetros

NomeTipoReq.Descrição
subdominiostringopcionalObrigatório na primeira publicação. Ex.: clinicasorriso
nome_do_negociostringopcionalAté 60 caracteres
frase_principalstringopcionalAté 90 caracteres
servicosstringopcionalLista JSON [{"nome","descricao","preco"}]. O preço aparece como enviado ("R$ 180" ou "A partir de R$ 890").
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma)

Exemplo de chamada

tools/call
{
  "name": "publish_landing_page",
  "arguments": { "subdominio": "clinicasorriso", "nome_do_negocio": "Clínica Sorriso", "ramo": "Odontologia", "cidade": "Joinville", "frase_principal": "Seu sorriso cuidado sem pressa", "descricao": "Clínica para a família toda.", "whatsapp": "(47) 99999-0000", "beneficios": "[\"Resposta em até 15 min\"]", "servicos": "[{\"nome\":\"Limpeza\",\"descricao\":\"Profilaxia completa\",\"preco\":\"R$ 150\"}]" }
}
unpublish_landing_page#

Tira do ar a landing page de uma conta (abuso, conteúdo proibido): apaga a página e marca como retirada; o aluno não republica pela ferramenta. SOMENTE o administrador da plataforma. Fica em /logs (landing_page_retirada).

Parâmetros

NomeTipoReq.Descrição
target_user_idstringobrigatóriouserId do dono da conta
motivostringobrigatórioMotivo da retirada

Exemplo de chamada

tools/call
{
  "name": "unpublish_landing_page",
  "arguments": { "target_user_id": "cm...", "motivo": "Página com promessa enganosa" }
}
get_account_info#

Lê os dados básicos da conta: nome do negócio, plano, data de criação, responsável, e-mail de acesso e perfil de ações (completo | desafio). Responde "qual o nome da minha conta".

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma)

Exemplo de chamada

tools/call
{
  "name": "get_account_info",
  "arguments": {}
}
get_whatsapp_status#

Confere se o WhatsApp está ligado ao Radar: { conectado, numero, nome_exibicao, provedor (meta | gupshup), pode_enviar_modelos }. Sem conexão, devolve conectado: false e onde ligar (Minha Conta › WhatsApp › Continuar com Facebook). O número é lido na Meta na hora.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma)

Exemplo de chamada

tools/call
{
  "name": "get_whatsapp_status",
  "arguments": {}
}
get_business_summary#

Lê o Resumo do negócio da conta (escrito pelo Claude no Desafio noEixo: dados do negócio, nota do diagnóstico, pontos a melhorar). Uso INTERNO: o atendente virtual nunca recebe este texto, e ele não está na base de conhecimento. Devolve { business_name, summary, updated_at }; sem resumo, summary vem vazio (o nome do negócio vem sempre).

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma)

Exemplo de chamada

tools/call
{
  "name": "get_business_summary",
  "arguments": {}
}
set_business_summary#

Grava o Resumo do negócio da conta: substitui (mode "replace", padrão) ou acrescenta ao final (mode "append"). Até 8.000 caracteres no total — acima disso, erro com o tamanho. Fica registrado quem alterou e quando (sem o texto). Não é enviado ao atendente virtual nem a clientes.

Parâmetros

NomeTipoReq.Descrição
summarystringobrigatórioTexto do resumo
modestringopcionalreplace (padrão) | append
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma)

Exemplo de chamada

tools/call
{
  "name": "set_business_summary",
  "arguments": { "summary": "Nome: Doce Mel. Vende: bolos sob encomenda. Nota do diagnóstico: 4/10.", "mode": "replace" }
}
update_agent_config#

Configura o agente conversacional de uma conta: persona (system_prompt), mensagem de boas-vindas, tom, modelo, chave OpenAI e ativação. Sem target_user_id, configura o agente da PRÓPRIA conta autenticada. O administrador da plataforma pode passar target_user_id para configurar a conta de um cliente (ex: recém-criada com create_client_account). Cria a configuração se ainda não existir.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.
system_promptstringopcionalPersona/instruções do agente (ex: atendente da confeitaria: tira dúvidas, informa preços, monta o pedido)
welcome_messagestringopcionalMensagem de boas-vindas / saudação inicial
tonestringopcionalprofessional | friendly
modelstringopcionalgpt-4o | gpt-4o-mini | gpt-4-turbo | gpt-3.5-turbo
openai_api_keystringopcionalChave OpenAI da conta (começa com "sk-"). Criptografada ao salvar. Necessária para responder e indexar KB.
is_activestringopcional"true" ativa, "false" desativa o agente
customer_memorystringopcional"true"/"false" — agente lembra pedidos anteriores do cliente (padrão true)
orders_enabledstringopcional"true"/"false" — permite o agente registrar pedidos
order_fieldsstringopcionalCampos personalizados da solicitação (os mesmos de Minha Conta › Agente IA › Campos personalizados). JSON [{"label":"Cidade e estado","required":true,"id":"cidade_estado"}] — id opcional (gerado pelo rótulo). Obrigatórios travam o registro até serem preenchidos; opcionais entram se o cliente informar. Nome, telefone e e-mail são fixos (só a obrigatoriedade muda, ex.: {"id":"email","required":false}). A lista enviada substitui a atual inteira; máx. 20; "[]" volta aos três padrão. Consulte o que está salvo em get_agent_config (orderFields).
contact_tagging_enabledstringopcional"true" (padrão) ou "false" — permite o agente marcar tags no contato durante a conversa (tool add_contact_tag), disparando automações "tag:<nome>"
calendar_booking_modestringopcional"true"/"false" — ativa o fluxo de agendamento guiado quando há Google Calendar ou NeetoCal conectado na conta
auto_tag_rulesstringopcionalJSON [{"matchText":"...","tag":"..."}] — fallback determinístico: se a resposta do agente contiver matchText, aplica a tag via código mesmo sem tool call (rede de segurança contra o LLM esquecer de chamar add_contact_tag)
order_notify_channelstringopcionalAvisar o cliente ao mudar estágio: off | auto (WhatsApp→SMS) | whatsapp | sms
order_stage_messagesstringopcionalJSON {"preparo":"","pronto":"..."} — chave presente = estágio avisa (vazio = padrão). Variáveis: {nome},{produto}
prospect_reply_modestringopcionalComo o agente trata resposta de contato em cadência de prospecção: off (agente não responde, operador trata na mão — padrão) | draft (agente gera a resposta mas NÃO envia, grava como nota interna) | auto (agente responde sozinho, com travas de opt-out/pausa do operador)
knowledge_gap_tracking_enabledstringopcional"true"/"false" (padrão false) — agente registra perguntas que não soube responder (tool flag_knowledge_gap + fallback heurístico) para revisão em /insights e evolução da KB. Ver categoria "Insights de Atendimento".
async_qa_enabledstringopcional"true"/"false" (padrão false) — revisão ASSÍNCRONA (cron, não em tempo real): audita periodicamente respostas recentes contra a KB com um modelo de IA como juiz, pra pegar alucinação confiante (fato inventado/errado dito sem hedge) — complementa knowledge_gap_tracking_enabled, que só pega quando o agente ADMITE não saber. Achados entram em /insights com source "async_qa". Ver categoria "Insights de Atendimento".
business_hoursstringopcionalHorário de atendimento HUMANO. É AQUI que mora o horário da equipe (mesmo cartão "Horário de atendimento humano" de Minha Conta): o agente consulta em toda resposta — nunca escreva horário no system_prompt nem na base, para não ter dois horários divergindo. Recomendado: JSON estruturado {"dias":{"1":{"inicio":"09:00","fim":"18:00","intervalo":{"inicio":"12:00","fim":"13:00"}},"6":{"inicio":"09:00","fim":"13:00"}},"observacao":"fechado em feriados"} — chave do dia: 0=domingo … 6=sábado; dia ausente = fechado. Texto livre ainda é aceito, mas é interpretado por regex que só entende UMA faixa e o mesmo horário a semana toda (sábado com horário próprio sai errado). Diferente de calendar_instructions (janela de AGENDAMENTO): é o que o agente usa quando o cliente pede pra falar com um humano — sabe se está dentro/fora do expediente (America/Sao_Paulo) e avisa quando o time volta. Vazio/omitido = desativado.
voice_reply_modestringopcionalResposta em ÁUDIO: "mirror" = quando o cliente manda áudio, o agente responde com mensagem de voz do WhatsApp (gpt-4o-mini-tts, gasta da chave OpenAI da conta, ~R$ 0,08 por minuto de fala); "off" = nunca (padrão). Link, e-mail, telefone e preço vão também por escrito; lista ou resposta longa vai só por texto. Só em número conectado direto pela Meta. Mesmo card "Resposta em áudio" de Minha Conta › Agente IA.
voice_namestringopcionalVoz: coral (feminina, calorosa — padrão) | nova | shimmer | sage (femininas) | ash | ballad | echo | verse (masculinas). Vazio = padrão.
voice_instructionsstringopcionalJeito de falar, em linguagem natural (até 600 caracteres). Ex.: "fale como um consultor de construção, seguro e direto". Vazio = padrão (português do Brasil, simpático, ritmo calmo).
reminder_timeout_minutesstringopcionalTimeout de inatividade — Estágio 1 (lembrete): minutos sem resposta pra disparar "você ainda está aí?". Só dispara pra quem já respondeu ao menos 1 vez (WABA compliance) e nunca em contato de cadência. Vazio/omitido = desativado.
reminder_messagestringopcionalTexto do lembrete do Estágio 1 — fallback quando ai_reminder_enabled="false" ou a geração por IA falha. Padrão: "Oi! Você ainda está aí? 😊".
typing_indicator_enabledstringopcionalMostra "digitando…" ao cliente no WhatsApp enquanto o agente prepara a resposta (só números Meta Direct). Marca a mensagem do cliente como lida nesse momento. "true"/"false" (padrão: ligado).
handoff_max_repliesstringopcionalPassagem para a equipe: limite de respostas do agente por conversa (1 a 500). Ao bater, o agente para nessa conversa, manda a mensagem de passagem e avisa a equipe com o resumo. "Liberar" zera a contagem. Vazio = sem limite (padrão).
handoff_max_cost_usdstringopcionalPassagem para a equipe: limite de gasto de IA por conversa em dólares (ex.: "0.50", até 100). Vazio = sem limite (padrão).
handoff_notifystringopcionalQuem é avisado na passagem: "equipe" (padrão, todos com notificação ligada), "dono_conversa" (sem dono, avisa a equipe toda) ou "escolhidos".
handoff_notify_user_idsstringopcionalIds de usuário da conta, separados por vírgula, para handoff_notify="escolhidos".
handoff_channelsstringopcionalPor onde sai o aviso de passagem: "push", "whatsapp" (números de Alertas de Mensagens), "email", separados por vírgula. Padrão: "push,whatsapp".
operator_signature_enabledstringopcionalPõe o primeiro nome de quem respondeu, em negrito, no topo de cada mensagem que a equipe envia pelo chat do WhatsApp ("*Vinicius:*" e o texto embaixo). Vale para texto e legenda de mídia; não para template, SMS nem Instagram. O histórico guarda a mensagem sem o nome. "true"/"false" (padrão: desligado).
ai_reminder_enabledstringopcionalGera o lembrete do Estágio 1 por IA, referenciando o que estava sendo discutido nas últimas mensagens, em vez do texto fixo. "true"/"false" (padrão false).
conversation_timeout_minutesstringopcionalTimeout de inatividade — Estágio 2 (encerramento): minutos sem resposta pra encerrar e arquivar a conversa. Deixe folga da janela de 24h do WABA. Vazio/omitido = desativado.
timeout_messagestringopcionalTexto da mensagem de encerramento do Estágio 2. Padrão: "Olá! Como não recebemos sua resposta, encerramos o atendimento. Se precisar de ajuda, é só chamar novamente. 😊".
second_touch_enabledstringopcionalSegundo toque — contato que NUNCA respondeu (oposto do Estágio 1/2, que exigem resposta prévia). Dispara um TEMPLATE aprovado (compliant fora da janela de 24h), não texto livre. Requer second_touch_template_name. Só WhatsApp, nunca cadência de prospecção. "true"/"false" (padrão false).
second_touch_delay_minutesstringopcionalMinutos sem resposta (desde a última msg do agente) pra disparar o segundo toque. Mínimo recomendado 1440 (24h). Vazio/omitido = 1440.
second_touch_template_namestringopcionalNome do template WABA APROVADO (ver list_whatsapp_templates), ex: "segundo_toque_sdr_ekyte_v2". PRECISA ter exatamente uma variável {{1}} no corpo pro primeiro nome (ex: "Oi {{1}}! ..."), nem mais nem menos — o cron sempre envia o primeiro nome como esse parâmetro.
second_touch_template_langstringopcionalIdioma do template (padrão "pt_BR" se omitido).
availability_max_optionsstringopcionalLista de horários: quantos mostrar no máximo (1 a 26), sempre os mais cedo do dia. Vazio = todos (padrão). Só as letras mostradas valem para a escolha.
availability_introstringopcionalFrase antes da lista. {quando} vira "Ainda hoje", "Amanhã" ou "Terça, 13/10". Ex.: "{quando} temos estes horários disponíveis:". Dia pedido cheio: o sistema põe antes "Hoje já não tenho horário livre." e mostra o próximo dia com vaga.
availability_closingstringopcionalFrase depois da lista. Vazio = "Qual desses horários prefere?". Sem nenhum dos três campos, a lista sai no formato de sempre.

Exemplo de chamada

tools/call
{
  "name": "update_agent_config",
  "arguments": { "target_user_id": "clxxx", "system_prompt": "Você é a atendente da Confeitaria Doce Mel...", "tone": "friendly", "is_active": "true", "order_notify_channel": "auto" }
}
get_agent_config#

Consulta a configuração atual do agente de uma conta (persona, tom, modelo, ativação, memória do cliente, pedidos, notificação de estágio, modo de resposta de prospecção). Sem target_user_id, consulta a PRÓPRIA conta autenticada. O administrador da plataforma pode passar target_user_id. Não retorna a chave OpenAI em texto puro, só se está configurada (hasOpenAIKey).

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalID da conta-alvo (APENAS admin da plataforma). Padrão: a conta autenticada.

Exemplo de chamada

tools/call
{
  "name": "get_agent_config",
  "arguments": { "target_user_id": "clxxx" }
}

Equipe e permissões

5 ferramentas

Quem da equipe pode o quê, recurso a recurso. O cargo é só o ponto de partida: cada pessoa pode ser ajustada por recurso, e o que se grava é apenas a diferença em relação ao padrão do cargo — por isso trocar o cargo depois continua surtindo efeito no resto. Os níveis são none (não vê), read (abre e consulta) e write (cria, altera e apaga). Domínio sensível (agente, integrações, equipe, admin) NÃO é liberado por omissão. Só quem administra a conta pode alterar, ninguém altera as próprias permissões, e a mudança passa a valer no PRÓXIMO LOGIN da pessoa — a sessão atual dela dura até 7 dias.

list_team_permissions#

Lista os membros da equipe com cargo, o ajuste individual (só o que difere do padrão do cargo) e a permissão efetiva resultante. Traz também a lista de recursos existentes e se a sua chave pode editar.

Exemplo de chamada

tools/call
{
  "name": "list_team_permissions",
  "arguments": {}
}
update_team_member_permissions#

Altera o que um membro pode fazer. Passe só os recursos que quer mudar — é incremental, o resto do ajuste anterior é preservado e o que nunca foi tocado segue o padrão do cargo. Use reset para devolver a pessoa inteiramente ao padrão.

Parâmetros

NomeTipoReq.Descrição
member_idstringobrigatórioID do membro (via list_team_permissions)
permissionsobjectopcionalMapa recurso → nível, ex: {"automacoes":"write","integracoes":"none"}. Níveis: none | read | write
resetbooleanopcionaltrue devolve ao padrão do cargo e ignora permissions

Exemplo de chamada

tools/call
{
  "name": "update_team_member_permissions",
  "arguments": { "member_id": "cmrz...", "permissions": { "cadencias": "write", "garimpo": "read" } }
}
invite_team_member#

Cria um membro na equipe com senha temporária, que volta uma única vez na resposta. Dono e gerente podem convidar; o gerente só atribui cargo abaixo do seu. E-mail único na plataforma inteira.

Parâmetros

NomeTipoReq.Descrição
emailstringobrigatórioE-mail de login
namestringobrigatórioNome exibido na equipe e no chat
rolestringobrigatóriooperator | manager | specialist | technician
temp_passwordstringopcionalSenha temporária; sem ela, uma é gerada

Exemplo de chamada

tools/call
{
  "name": "invite_team_member",
  "arguments": { "email": "ana@empresa.com", "name": "Ana", "role": "operator" }
}
update_team_member#

Muda o cargo de um membro ou gera senha temporária nova. O gerente só age sobre quem está abaixo dele e não promove ninguém a gerente; ninguém altera a própria conta. Cargo novo vale no próximo login da pessoa.

Parâmetros

NomeTipoReq.Descrição
member_idstringobrigatórioID do membro (via list_team_permissions)
rolestringopcionalCargo novo: operator | manager | specialist | technician
reset_passwordbooleanopcionaltrue gera senha nova, devolvida uma única vez

Exemplo de chamada

tools/call
{
  "name": "update_team_member",
  "arguments": { "member_id": "cmrz...", "role": "specialist" }
}
remove_team_member#

Remove um membro (apaga o login). Só o dono da conta. Não remove administradores nem a própria conta. Irreversível — para só tirar acesso, use update_team_member_permissions.

Parâmetros

NomeTipoReq.Descrição
member_idstringobrigatórioID do membro (via list_team_permissions)

Exemplo de chamada

tools/call
{
  "name": "remove_team_member",
  "arguments": { "member_id": "cmrz..." }
}

Funil de vendas (estágios)

3 ferramentas

Os estágios do Kanban do CRM. É aqui que se liga a venda ao trabalho que vem depois dela: marque o estágio de fechamento com is_won e aponte um template de processo — quando um contato entrar nesse estágio, o Radar abre o processo com as etapas já instanciadas e dispara o trigger de automação "deal_won". Sem marcar, nada muda.

list_pipeline_stages#

Lista os estágios do funil na ordem, com quantos contatos há em cada um, qual está marcado como ganho (is_won) e qual processo ele abre.

Exemplo de chamada

tools/call
{
  "name": "list_pipeline_stages",
  "arguments": {}
}
create_pipeline_stage#

Cria um estágio no funil. Marque is_won="true" no estágio de fechamento e aponte process_template_id para o processo que deve ser aberto automaticamente.

Parâmetros

NomeTipoReq.Descrição
is_loststringopcional"true" marca como etapa de perda: ao entrar, as cadências ativas do contato são pausadas. Não pode ser ganho e perda ao mesmo tempo.
namestringobrigatórioNome do estágio (ex: "Ganho")
colorstringopcionalCor em hex (padrão #6366f1)
ordernumberopcionalPosição no funil (omitido = vai para o fim)
is_wonstringopcional"true" marca como estágio de negócio ganho
process_template_idstringopcionalTemplate aberto ao ganhar (via list_process_templates). Só tem efeito com is_won="true"

Exemplo de chamada

tools/call
{
  "name": "create_pipeline_stage",
  "arguments": { "name": "Ganho", "color": "#059669", "is_won": "true", "process_template_id": "onb_2b4e..." }
}
update_pipeline_stage#

Atualiza um estágio. Só os campos enviados mudam. Envie process_template_id como string vazia para desvincular o processo.

Parâmetros

NomeTipoReq.Descrição
is_loststringopcional"true" marca como etapa de perda: ao entrar, as cadências ativas do contato são pausadas. Não pode ser ganho e perda ao mesmo tempo.
stage_idstringobrigatórioID do estágio (via list_pipeline_stages)
namestringopcionalNovo nome
colorstringopcionalNova cor em hex
ordernumberopcionalNova posição
is_wonstringopcional"true" ou "false"
process_template_idstringopcionalTemplate aberto ao ganhar; string vazia desvincula

Exemplo de chamada

tools/call
{
  "name": "update_pipeline_stage",
  "arguments": { "stage_id": "cmpck...", "is_won": "true", "process_template_id": "onb_2b4e..." }
}

Ordens de campo (visitas/OS)

3 ferramentas

Ordens de serviço executadas em campo — medição, instalação, manutenção. Podem ser avulsas (chamado solto) ou ser uma ETAPA de um processo: passando process_id + process_step_id, concluir a OS marca aquela etapa como feita e o processo anda sozinho. Fecha o ciclo CRM → processo → campo → processo.

list_field_orders#

Lista as ordens de campo com status, prazo, técnico e — quando houver — o processo e a etapa a que a OS pertence.

Parâmetros

NomeTipoReq.Descrição
statusstringopcionalreceived | assigned | en_route | in_progress | waiting_part | done | cancelled
contact_idstringopcionalSó as OS deste contato
process_idstringopcionalSó as OS deste processo
limitnumberopcionalMáximo de resultados (padrão 50)

Exemplo de chamada

tools/call
{
  "name": "list_field_orders",
  "arguments": { "status": "in_progress" }
}
create_field_order#

Cria uma ordem de campo para um contato. Com process_id + process_step_id a OS vira uma etapa do processo; sem eles, é uma OS avulsa. O type_id instancia o checklist e o SLA daquele tipo de OS.

Parâmetros

NomeTipoReq.Descrição
contact_idstringobrigatórioID do contato (via list_contacts)
titlestringobrigatórioTítulo da OS (ex: "Medição do terreno")
descriptionstringopcionalDetalhes do serviço
type_idstringopcionalTipo de OS — traz checklist e SLA
addressstringopcionalEndereço da visita
scheduled_atstringopcionalData/hora agendada em ISO
process_idstringopcionalProcesso ao qual a OS pertence (via list_processes)
process_step_idstringopcionalEtapa que esta OS representa. Exige process_id. Fechar a OS conclui a etapa

Exemplo de chamada

tools/call
{
  "name": "create_field_order",
  "arguments": { "contact_id": "cmu7...", "title": "Medição do terreno", "scheduled_at": "2026-09-25T14:00:00Z", "process_id": "cmu7g...", "process_step_id": "cmu7h..." }
}
update_field_order_status#

Move a OS de status. Ao mover para "done", a etapa de processo vinculada é concluída junto. Para o fechamento completo em campo (checklist obrigatório, fotos antes/depois, assinatura) use a tela do técnico, não esta tool.

Parâmetros

NomeTipoReq.Descrição
field_order_idstringobrigatórioID da OS (via list_field_orders)
statusstringobrigatórioreceived | assigned | en_route | in_progress | waiting_part | done | cancelled
technician_notesstringopcionalObservações do técnico

Exemplo de chamada

tools/call
{
  "name": "update_field_order_status",
  "arguments": { "field_order_id": "cmu7...", "status": "done" }
}

Processos (Onboarding / Escopos)

6 ferramentas

Checklists reutilizáveis para acompanhar escopos com clientes (ex: onboarding de cliente novo). Crie um template uma vez, instancie um processo por cliente e marque cada passo conforme executa — tudo rastreável dentro do Radar.

list_process_templates#

Lista os templates de processo (checklists reutilizáveis, ex: "Onboarding de Cliente Novo"). Retorna id, nome, descrição e os passos. Use antes de create_process para pegar o template_id.

Exemplo de chamada

tools/call
{
  "name": "list_process_templates",
  "arguments": {}
}
create_process_template#

Cria um template de processo (checklist reutilizável). Os steps são um array de {title, description, order}.

Parâmetros

NomeTipoReq.Descrição
namestringobrigatórioNome do template (ex: "Onboarding de Cliente Novo")
descriptionstringopcionalDescrição do template
stepsarrayobrigatórioPassos: [{ "title": "...", "description": "...", "order": 0 }]

Exemplo de chamada

tools/call
{
  "name": "create_process_template",
  "arguments": { "name": "Onboarding de Cliente Novo", "steps": [{ "title": "Criar conta", "order": 0 }, { "title": "Conectar WhatsApp", "order": 1 }] }
}
create_process#

Instancia um processo para um contato, copiando os passos de um template (ou de uma lista de steps). Use para iniciar o onboarding de um cliente e acompanhar os passos.

Parâmetros

NomeTipoReq.Descrição
contact_idstringobrigatórioID do contato/cliente (via list_contacts)
template_idstringopcionalID do template a copiar (via list_process_templates)
titlestringopcionalTítulo do processo (padrão: nome do template)
descriptionstringopcionalDescrição
due_datestringopcionalPrazo ISO
stepsarrayopcionalPassos avulsos, se não usar template

Exemplo de chamada

tools/call
{
  "name": "create_process",
  "arguments": { "contact_id": "cmr...", "template_id": "onb_..." }
}
list_processes#

Lista processos (acompanhamento de escopo/onboarding por cliente). Filtra por status e/ou contato. Retorna progresso (feitos/total).

Parâmetros

NomeTipoReq.Descrição
statusstringopcionalactive | completed | cancelled
contact_idstringopcionalFiltrar por contato
limitnumberopcionalMáx (padrão 20, máx 100)

Exemplo de chamada

tools/call
{
  "name": "list_processes",
  "arguments": { "status": "active" }
}
get_process#

Retorna um processo com todos os passos e status. Use o process_id de list_processes.

Parâmetros

NomeTipoReq.Descrição
process_idstringobrigatórioID do processo

Exemplo de chamada

tools/call
{
  "name": "get_process",
  "arguments": { "process_id": "cmr..." }
}
update_process_step#

Atualiza o status de um passo (pending → in_progress → done, ou blocked). Marcar "done" registra a data de conclusão. Use para avançar o onboarding conforme executa os passos.

Parâmetros

NomeTipoReq.Descrição
step_idstringobrigatórioID do passo (via get_process)
statusstringobrigatóriopending | in_progress | done | blocked

Exemplo de chamada

tools/call
{
  "name": "update_process_step",
  "arguments": { "step_id": "cmr...", "status": "done" }
}

Marca, widget e portal do cliente

6 ferramentas

A personalização visual que faz a plataforma aparecer com a marca do cliente, e o acesso que ele usa para acompanhar o próprio projeto. Sem estas ferramentas o provisionamento por MCP parava na metade: dava para criar a conta e configurar o agente, mas não para deixá-la com a cara do cliente. O logotipo pode ser enviado como arquivo (base64) quando não estiver hospedado em lugar nenhum.

set_brand#

Define cores, fonte e logotipo da conta — usados no painel interno e no portal do cliente. Só os campos enviados mudam; string vazia limpa um campo.

Parâmetros

NomeTipoReq.Descrição
primary_colorstringopcionalCor principal em hex de 6 dígitos (botões, menu ativo, progresso), ex: "#ad3432"
dark_colorstringopcionalCor escura em hex (barra lateral, faixas escuras)
accent_colorstringopcionalCor de destaque em hex (badges, realces)
font_familystringopcionalNome da fonte; precisa existir no Google Fonts, ex: "Montserrat"
logo_urlstringopcionalURL pública (http/https) do logotipo
logo_base64stringopcionalArquivo do logotipo como data URL ("data:image/png;base64,..."), até 400 KB. Tem prioridade sobre logo_url
target_user_idstringopcionalConta-alvo (apenas administrador da plataforma)

Exemplo de chamada

tools/call
{
  "name": "set_brand",
  "arguments": { "primary_color": "#ad3432", "dark_color": "#2b2c2e", "font_family": "Montserrat", "logo_url": "https://exemplo.com/logo.png" }
}
get_brand#

Lê a personalização aplicada (cores, fonte, logotipo) junto com a configuração do widget. Avisa quando a conta ainda está com o visual padrão da plataforma.

Parâmetros

NomeTipoReq.Descrição
target_user_idstringopcionalConta-alvo (apenas administrador da plataforma)

Exemplo de chamada

tools/call
{
  "name": "get_brand",
  "arguments": {}
}
set_widget_config#

Configura o widget de chat embutível no site do cliente (página pública /widget/[userId]): título, saudação, cor e logotipo.

Parâmetros

NomeTipoReq.Descrição
titlestringopcionalTítulo do cabeçalho, ex: "Atendimento Montreal"
greetingstringopcionalMensagem exibida ao abrir, antes de o visitante escrever
colorstringopcionalCor do widget em hex de 6 dígitos
logo_urlstringopcionalURL pública do logotipo (cabeçalho e favicon da aba)
logo_base64stringopcionalLogotipo como data URL, até 400 KB
target_user_idstringopcionalConta-alvo (apenas administrador da plataforma)

Exemplo de chamada

tools/call
{
  "name": "set_widget_config",
  "arguments": { "title": "Atendimento Montreal", "greeting": "Olá! Como podemos ajudar?", "color": "#ad3432" }
}
create_portal_access#

Cria ou redefine o acesso de um contato ao portal do cliente (/portal/login), onde ele acompanha os próprios processos e a proposta. Chamar de novo para o mesmo contato troca e-mail e senha, sem duplicar. A senha só é vista aqui — depois fica apenas o hash.

Parâmetros

NomeTipoReq.Descrição
emailstringobrigatórioE-mail de login do cliente no portal
passwordstringobrigatórioSenha, mínimo 6 caracteres
contact_idstringopcionalID do contato (via list_contacts). Alternativa: phone
phonestringopcionalTelefone do contato, se não tiver o contact_id
target_user_idstringopcionalConta-alvo (apenas administrador da plataforma)

Exemplo de chamada

tools/call
{
  "name": "create_portal_access",
  "arguments": { "contact_id": "cmsls...", "email": "cliente@empresa.com", "password": "obra2026" }
}
list_portal_access#

Lista quem tem acesso ao portal nesta conta, com e-mail de login e último acesso. "ultimo_login" nulo significa que a pessoa nunca entrou.

Parâmetros

NomeTipoReq.Descrição
limitnumberopcionalMáximo de registros (padrão 50, teto 200)
target_user_idstringopcionalConta-alvo (apenas administrador da plataforma)

Exemplo de chamada

tools/call
{
  "name": "list_portal_access",
  "arguments": {}
}
revoke_portal_access#

Remove o acesso de um contato ao portal. O contato e os processos dele continuam intactos — apenas o login deixa de existir.

Parâmetros

NomeTipoReq.Descrição
contact_idstringopcionalID do contato. Alternativa: email
emailstringopcionalE-mail do acesso, se não tiver o contact_id
target_user_idstringopcionalConta-alvo (apenas administrador da plataforma)

Exemplo de chamada

tools/call
{
  "name": "revoke_portal_access",
  "arguments": { "email": "cliente@empresa.com" }
}

Referência do Protocolo

Detalhes técnicos para clientes e integradores.

Protocolo

MCP HTTP Streamable

Versão spec

2025-03-26

Formato de mensagem

JSON-RPC 2.0

Autenticação

Bearer token — chave fixa (HMAC-SHA256) ou OAuth 2.0 + PKCE

CORS

Access-Control-Allow-Origin: *

Métodos HTTP

POST · GET · OPTIONS

Endpoints OAuth 2.0 (RFC 8414 + PKCE S256)

Discovery/.well-known/oauth-authorization-server
Authorization/mcp/authorize
Token/api/mcp/oauth/token
Dynamic Client Registration/api/mcp/oauth/register

Grant types: authorization_code (com PKCE) e refresh_token. Access token expira em 30 dias, refresh token em 90. Clientes que não fazem esse handshake (Claude Desktop, chamadas de API diretas) seguem usando a chave fixa (Bearer HMAC-SHA256) em vez de OAuth.

Métodos suportados

MétodoDescrição
initializeNegociação de protocolo — retorna protocolVersion e capabilities
tools/listRetorna a lista completa de ferramentas com inputSchema JSON Schema
tools/callExecuta uma ferramenta — params: { name, arguments }
pingHealth check — retorna {}
notifications/initializedConfirmação de inicialização pelo cliente — aceito graciosamente

As ferramentas disponíveis são determinadas dinamicamente em runtime. Use tools/list para sempre obter o schema atualizado — novas ferramentas podem ser adicionadas sem aviso prévio.