MCP — Referencia Completa de Tools

Referencia tecnica de todas as tools expostas pelo conector MCP do Dexter. Cada tool inclui parametros, exemplos de chamada e resposta, permissoes e guardrails.

Niveis de Permissao

Cada tool requer um nivel de permissao configurado na tela Integracoes do dashboard.

NivelToggle na tela IntegracoesDescricao
ReadPermitir leitura de dadosConsultas somente-leitura: contatos, conversas, campanhas, analytics, agenda, fila de trabalho.
WritePermitir escrita de dadosCriar/atualizar contatos, tags, campanhas em rascunho, gerar mensagens, pausar campanhas, dispensar itens da fila.
SendPermitir envio de mensagensEnviar mensagem WhatsApp, ativar campanha, aprovar item da fila, agendar na Google Agenda.

Indice de Tools

ToolPermissaoDescricao curta
dexter_contacts_searchReadBuscar contatos por nome, telefone, tag ou agente
dexter_contacts_getReadDados completos de um contato
dexter_contacts_upsertWriteCriar ou atualizar contato
dexter_contacts_tagWriteAdicionar/remover tags de um contato
dexter_contact_tags_listReadListar tags disponiveis da instancia
dexter_stale_leadsReadRelatorio de leads inativos
dexter_conversations_listReadListar conversas (inclusive nao salvas)
dexter_conversations_historyReadHistorico de mensagens de uma conversa
dexter_campaigns_listReadListar campanhas da instancia
dexter_campaigns_statusReadStatus detalhado de uma campanha
dexter_campaigns_prepareReadAssistente de criacao: proxima pergunta
dexter_campaigns_kb_topicsReadListar assuntos do Knowledge Base
dexter_campaigns_audience_previewReadPreview da audiencia da campanha
dexter_campaigns_generateWriteGerar mensagens com IA
dexter_campaigns_createWriteCriar campanha em rascunho
dexter_campaigns_activateSendAtivar campanha (requer confirmacao)
dexter_campaigns_pauseWritePausar campanha ativa
dexter_calendar_statusReadStatus da conexao Google Calendar
dexter_calendar_freebusyReadHorarios ocupados na agenda
dexter_calendar_slotsReadSlots disponiveis para agendamento
dexter_calendar_bookSendAgendar evento no Google Calendar
dexter_messages_sendSendEnviar mensagem individual via WhatsApp
dexter_analytics_overviewReadMetricas gerais da operacao
dexter_agents_listReadListar assistentes de IA configurados
dexter_work_queue_listReadListar fila de trabalho do Expediente
dexter_work_queue_approveSendAprovar e enviar item da fila
dexter_work_queue_dismissWriteDispensar item da fila

Contatos

Busca contatos da instancia por nome, telefone, tag ou agente responsavel. Resultado paginado.

Parametros

NomeTipoObrigatorioDescricao
querystringNaoTrecho do nome, nome do WhatsApp ou telefone
tagstringNaoFiltrar por tag exata
agentstringNaoFiltrar por agente: sdr, cs ou onboarding
limitintegerNaoItens por pagina (1-50, padrao: 20)
offsetintegerNaoPular N resultados (padrao: 0)

Exemplo de chamada

{
  "name": "dexter_contacts_search",
  "arguments": {
    "query": "Maria",
    "agent": "sdr",
    "limit": 5
  }
}

Exemplo de resposta

{
  "total": 12,
  "offset": 0,
  "limit": 5,
  "contacts": [
    {
      "phone": "5511999990001",
      "name": "Maria Souza",
      "waName": "Maria S.",
      "agent": "sdr",
      "active": true,
      "updatedAt": 1719300000,
      "tags": ["lead-quente", "demo-agendada"]
    }
  ]
}

Caso de uso

Buscar contatos antes de enviar uma mensagem, verificar se um lead ja existe na base, ou filtrar contatos de um agente especifico para relatorios.

Permissao: Read

dexter_contacts_get

Retorna os dados completos de um contato: campos, tags, campos customizados e estatisticas de conversa.

Parametros

NomeTipoObrigatorioDescricao
phonestringSimTelefone com DDI (ex: 5541999998888)

Exemplo de chamada

{
  "name": "dexter_contacts_get",
  "arguments": {
    "phone": "5511999990001"
  }
}

Exemplo de resposta

{
  "phone": "5511999990001",
  "name": "Maria Souza",
  "waName": "Maria S.",
  "agent": "sdr",
  "active": true,
  "updatedAt": 1719300000,
  "tags": ["lead-quente"],
  "customData": { "empresa": "Acme Ltda", "cargo": "Gerente" },
  "totalMessages": 47,
  "lastMessageTs": 1719299500
}

Caso de uso

Obter o perfil completo de um contato antes de iniciar uma conversa, verificar campos customizados ou conferir o volume de mensagens trocadas.

Permissao: Read

dexter_contacts_upsert

Cria ou atualiza um contato pelo telefone. Atualiza somente os campos informados (upsert inteligente) — campos omitidos permanecem inalterados.

Parametros

NomeTipoObrigatorioDescricao
phonestringSimTelefone com DDI (ex: 5541999998888)
namestringNaoNome do contato
agentstringNaoAgente responsavel: sdr, cs ou onboarding
activebooleanNaoSe o agente de IA deve responder este contato
custom_fieldsobjectNaoCampos customizados (merge com os existentes)

Exemplo de chamada

{
  "name": "dexter_contacts_upsert",
  "arguments": {
    "phone": "5511999990001",
    "name": "Maria Souza",
    "agent": "sdr",
    "active": true,
    "custom_fields": { "empresa": "Acme Ltda" }
  }
}

Exemplo de resposta

{
  "phone": "5511999990001",
  "name": "Maria Souza",
  "waName": "Maria S.",
  "agent": "sdr",
  "active": true,
  "updatedAt": 1719301000,
  "tags": [],
  "customData": { "empresa": "Acme Ltda" },
  "totalMessages": 0,
  "lastMessageTs": 0
}

Caso de uso

Cadastrar um novo lead vindo de formulario externo, atualizar o agente responsavel por um contato ou enriquecer dados customizados do CRM.

Nota: Ao menos um campo alem de phone deve ser informado (name, agent, active ou custom_fields). A tool retorna o contato completo apos a atualizacao.

Permissao: Write

dexter_contacts_tag

Adiciona e/ou remove tags de um contato em uma unica chamada.

Parametros

NomeTipoObrigatorioDescricao
phonestringSimTelefone com DDI (ex: 5541999998888)
addarray of stringNaoTags a adicionar
removearray of stringNaoTags a remover

Exemplo de chamada

{
  "name": "dexter_contacts_tag",
  "arguments": {
    "phone": "5511999990001",
    "add": ["demo-agendada", "qualificado"],
    "remove": ["lead-frio"]
  }
}

Exemplo de resposta

{
  "phone": "5511999990001",
  "tags": ["lead-quente", "demo-agendada", "qualificado"]
}

Caso de uso

Classificar leads apos qualificacao automatica, mover contatos entre etapas do funil, ou segmentar audiencia para campanhas futuras.

Permissao: Write

dexter_contact_tags_list

Lista todas as tags da instancia com a quantidade de contatos em cada uma.

Parametros

NomeTipoObrigatorioDescricao
Nenhum parametro obrigatorio ou opcional.

Exemplo de chamada

{
  "name": "dexter_contact_tags_list",
  "arguments": {}
}

Exemplo de resposta

{
  "tags": [
    { "tag": "lead-quente", "count": 34 },
    { "tag": "cliente-ativo", "count": 18 },
    { "tag": "demo-agendada", "count": 7 }
  ],
  "total": 3
}

Caso de uso

Verificar quais tags existem antes de segmentar a audiencia de uma campanha, ou montar um relatorio de distribuicao do funil.

Permissao: Read

dexter_stale_leads

Relatorio sob demanda de leads parados: contatos SDR ativos sem interacao ha N dias e fora de campanha ativa. Somente leitura — nao cria itens na fila de trabalho.

Parametros

NomeTipoObrigatorioDescricao
daysintegerNaoDias de inatividade minima (1-90, padrao: 4)
limitintegerNaoMaximo de leads retornados (1-50, padrao: 20)

Exemplo de chamada

{
  "name": "dexter_stale_leads",
  "arguments": {
    "days": 7,
    "limit": 10
  }
}

Exemplo de resposta

{
  "days": 7,
  "total": 5,
  "leads": [
    {
      "phone": "5521988887777",
      "name": "Joao Lima",
      "silentDays": 12,
      "lastRole": "assistant",
      "lastText": "Fico no aguardo do seu retorno!",
      "leadReplied": true,
      "tier": "warm"
    }
  ]
}

Caso de uso

Identificar leads que precisam de follow-up, montar campanhas de reativacao ou gerar relatorio de leads inativos para o time comercial.

Permissao: Read

Conversas

dexter_conversations_list

Lista conversas da instancia a partir do historico acumulado, incluindo numeros que nao estao salvos em Contatos. Resultado paginado, ordenado pela mensagem mais recente.

Parametros

NomeTipoObrigatorioDescricao
querystringNaoFiltrar por nome, waName, telefone ou trecho da ultima mensagem
only_unsavedbooleanNaoSe true, retorna so conversas sem cadastro em Contatos (padrao: false)
limitintegerNaoItens por pagina (1-50, padrao: 20)
offsetintegerNaoPular N resultados (padrao: 0)

Exemplo de chamada

{
  "name": "dexter_conversations_list",
  "arguments": {
    "only_unsaved": true,
    "limit": 10
  }
}

Exemplo de resposta

{
  "total": 42,
  "offset": 0,
  "limit": 10,
  "hasMore": true,
  "conversations": [
    {
      "phone": "5511988880001",
      "name": "",
      "waName": "Carlos M.",
      "savedContact": false,
      "messageCount": 8,
      "lastTs": 1719301000,
      "lastText": "Boa tarde, gostaria de saber...",
      "lastRole": "user",
      "pending": true
    }
  ]
}

Caso de uso

Descobrir telefones de conversas que ainda nao foram salvos como contato, identificar conversas pendentes de resposta (pending: true), ou montar dashboard de atividade.

Permissao: Read

dexter_conversations_history

Retorna mensagens da conversa de WhatsApp com um telefone (contato salvo ou nao). Por padrao devolve as ultimas N mensagens. Suporta paginacao bidirecional.

Parametros

NomeTipoObrigatorioDescricao
phonestringSimTelefone com DDI (ex: 5541999998888)
limitintegerNaoMensagens por pagina (1-100, padrao: 30)
offsetintegerNaoPular N mensagens a partir do fim — 0 = mais recentes (padrao: 0)
before_tsintegerNaoRetornar apenas mensagens com timestamp estritamente menor que este Unix timestamp

Exemplo de chamada

{
  "name": "dexter_conversations_history",
  "arguments": {
    "phone": "5511999990001",
    "limit": 20,
    "offset": 0
  }
}

Exemplo de resposta

{
  "phone": "5511999990001",
  "count": 20,
  "total": 153,
  "offset": 0,
  "limit": 20,
  "hasMore": true,
  "oldestTs": 1719200000,
  "newestTs": 1719301000,
  "messages": [
    { "ts": 1719200000, "role": "user", "text": "Boa tarde!" },
    { "ts": 1719200010, "role": "assistant", "text": "Ola! Como posso ajudar?" }
  ]
}

Caso de uso

Ler o historico completo de uma conversa para contexto, exportar mensagens para auditoria, ou revisar a interacao do agente com um lead.

Paginacao: Use offset para navegar paginas (0 = mais recente). Para historicos muito longos, use before_ts passando o oldestTs da pagina anterior como referencia. A resposta inclui hasMore para indicar se existem mais mensagens.

Permissao: Read

Campanhas

dexter_campaigns_list

Lista as campanhas da instancia com id, nome, status e tipo. Resultado paginado.

Parametros

NomeTipoObrigatorioDescricao
statusstringNaoFiltrar por status: active, paused, draft, finished
limitintegerNaoItens por pagina (1-50, padrao: 20)
offsetintegerNaoPular N resultados (padrao: 0)

Exemplo de chamada

{
  "name": "dexter_campaigns_list",
  "arguments": {
    "status": "active",
    "limit": 10
  }
}

Exemplo de resposta

{
  "total": 3,
  "offset": 0,
  "limit": 10,
  "campaigns": [
    {
      "id": 42,
      "name": "Reativacao leads frios",
      "status": "active",
      "type": "finite"
    }
  ]
}

Caso de uso

Monitorar campanhas em execucao, listar rascunhos pendentes de ativacao ou gerar relatorio de todas as campanhas.

Permissao: Read

dexter_campaigns_status

Status detalhado de uma campanha: contagem de contatos por estado, respostas recebidas e proximo envio agendado.

Parametros

NomeTipoObrigatorioDescricao
campaign_idintegerSimID da campanha

Exemplo de chamada

{
  "name": "dexter_campaigns_status",
  "arguments": {
    "campaign_id": 42
  }
}

Exemplo de resposta

{
  "id": 42,
  "name": "Reativacao leads frios",
  "status": "active",
  "type": "finite",
  "contacts": {
    "total": 50,
    "replied": 8,
    "byState": { "active": 30, "done": 12, "failed": 0 }
  },
  "nextSendAtMs": 1719400000000,
  "pendingNextSend": 30,
  "createdAtMs": 1719200000000,
  "updatedAtMs": 1719300000000,
  "endsAtMs": 1719500000000
}

Caso de uso

Acompanhar o progresso de uma campanha ativa, verificar taxa de resposta ou identificar quando sera o proximo envio.

Permissao: Read

dexter_campaigns_prepare

Assistente interativo de criacao de campanha finita. Retorna a proxima pergunta que precisa ser respondida antes de criar a campanha. Nao grava nenhum dado.

Parametros

NomeTipoObrigatorioDescricao
namestringNaoNome da campanha
audience_phonesarray of stringNaoLista de telefones com DDI
audience_tagstringNaoTag para selecionar audiencia
generationModestringNaoscratch, kb_random ou kb_topic
selectedTopicKeystringNaoChave do topico KB selecionado
messagesarray of stringNaoMensagens ja geradas
messageBlocksarrayNaoBlocos de mensagens estruturados

Exemplo de chamada

{
  "name": "dexter_campaigns_prepare",
  "arguments": {
    "name": "Follow-up leads demo"
  }
}

Exemplo de resposta

{
  "campaignType": "finite",
  "ready": false,
  "filled": {
    "name": true,
    "audience": false,
    "generationMode": "",
    "selectedTopicKey": "",
    "messages": false
  },
  "missing": ["audience"],
  "askNext": "Quem recebe? Uma lista de telefones com DDI ou uma tag que ja existe na instancia?",
  "defaults": {
    "blocksCount": 3,
    "messagesPerBlock": 1,
    "sendIntervalSec": 86400,
    "maxContactsPerDay": 20,
    "endsInDays": 3,
    "allowedWindows": [
      { "days": [0,1,2,3,4], "start": "09:00", "end": "18:00", "tz": "America/Sao_Paulo" }
    ]
  }
}

Caso de uso

Guiar o processo de criacao de campanha passo a passo. Chame repetidamente preenchendo os campos pendentes ate ready: true.

Permissao: Read

dexter_campaigns_kb_topics

Lista os assuntos disponiveis no Knowledge Base para campanhas finitas. Quando o modo de geracao for kb_topic, escolha um topicKey desta lista — nao invente assuntos.

Parametros

NomeTipoObrigatorioDescricao
knowledgeSourcesobjectNaoFontes de conhecimento: assistentes (sdr, cs, onboarding) e includeGlobalBlocks

Exemplo de chamada

{
  "name": "dexter_campaigns_kb_topics",
  "arguments": {
    "knowledgeSources": {
      "assistants": ["sdr"],
      "includeGlobalBlocks": true
    }
  }
}

Exemplo de resposta

{
  "knowledgeSources": { "assistants": ["sdr"], "includeGlobalBlocks": true },
  "topics": [
    { "topicKey": "planos-preco", "title": "Planos e Precos", "snippetCount": 4 },
    { "topicKey": "funcionalidades", "title": "Funcionalidades", "snippetCount": 6 }
  ],
  "total": 2
}

Caso de uso

Listar assuntos disponiveis antes de gerar mensagens com dexter_campaigns_generate no modo kb_topic.

Permissao: Read

dexter_campaigns_audience_preview

Previa de quem entraria numa campanha finita, por telefones ou por tag. Nao grava nenhum dado.

Parametros

NomeTipoObrigatorioDescricao
audience_phonesarray of stringCondicionalLista de telefones com DDI (obrigatorio se audience_tag nao for informado)
audience_tagstringCondicionalTag para selecionar contatos (obrigatorio se audience_phones nao for informado)
excludeActiveCampaignContactsbooleanNaoExcluir contatos ja em campanha ativa
excludeExistingContactsbooleanNaoExcluir contatos ja existentes na base

Exemplo de chamada

{
  "name": "dexter_campaigns_audience_preview",
  "arguments": {
    "audience_tag": "lead-quente",
    "excludeActiveCampaignContacts": true
  }
}

Exemplo de resposta

{
  "eligible": 28,
  "excluded": 4,
  "alreadyInCampaign": 3,
  "samplePhones": ["5511999990001", "5521988880002", "5531977770003"]
}

Caso de uso

Verificar o tamanho e composicao da audiencia antes de criar a campanha, evitando surpresas com o volume de envios.

Permissao: Read

dexter_campaigns_generate

Gera os blocos de mensagens de uma campanha finita usando IA. Nao grava a campanha — mostre o texto ao usuario antes de criar.

Parametros

NomeTipoObrigatorioDescricao
generationModestringNaoscratch (do zero), kb_random (assunto aleatorio) ou kb_topic (assunto escolhido). Padrao: scratch
knowledgeSourcesobjectNaoFontes de conhecimento (para modos kb_*)
topicKeystringCondicionalChave do topico — obrigatorio se generationMode for kb_topic
promptstringNaoInstrucao adicional para a IA na geracao
blocksCountintegerNaoNumero de blocos (1-6)
messagesPerBlockintegerNaoMensagens por bloco (1-5)
messageTonestringNaoTom das mensagens (ex: profissional, casual)
messageCharTargetintegerNaoTamanho alvo das mensagens em caracteres
includeContactDatabooleanNaoIncluir dados do contato na personalizacao

Exemplo de chamada

{
  "name": "dexter_campaigns_generate",
  "arguments": {
    "generationMode": "kb_topic",
    "knowledgeSources": { "assistants": ["sdr"] },
    "topicKey": "planos-preco",
    "blocksCount": 3,
    "messagesPerBlock": 1,
    "messageTone": "profissional"
  }
}

Exemplo de resposta

{
  "generated": true,
  "persisted": false,
  "messages": [
    "Ola {{nome}}! Vi que voce se interessou pelos nossos planos...",
    "{{nome}}, queria compartilhar uma novidade sobre...",
    "Ultima mensagem da serie: temos uma condicao especial..."
  ],
  "messageBlocks": [ ... ],
  "selectedTopic": "Planos e Precos",
  "selectedTopicKey": "planos-preco",
  "selectedSnippets": [ ... ],
  "knowledgeSources": { "assistants": ["sdr"] },
  "generationMode": "kb_topic"
}

Caso de uso

Gerar rascunho das mensagens da campanha para revisao humana antes de criar o rascunho final.

Nota: A tool nao persiste nada. Apos revisar o texto gerado, passe os blocos resultantes para dexter_campaigns_create.

Permissao: Write

dexter_campaigns_create

Cria uma campanha finita em rascunho. A campanha nao e ativada automaticamente — a ativacao requer uma chamada separada a dexter_campaigns_activate.

Parametros

NomeTipoObrigatorioDescricao
namestringSimNome da campanha (max. 120 caracteres)
messagesarray of stringCondicional1 a 6 mensagens, uma por bloco (se messageBlocks nao for usado)
messageBlocksarrayCondicionalBlocos estruturados (alternativa a messages)
blocksCountintegerNaoNumero de blocos
messagesPerBlockintegerNaoMensagens por bloco
audience_phonesarray of stringCondicionalTelefones com DDI (obrigatorio se audience_tag nao for informado)
audience_tagstringCondicionalTag para selecionar contatos
generationModestringNaoscratch, kb_random ou kb_topic
knowledgeSourcesobjectNaoFontes de conhecimento
selectedTopicstringNaoTitulo do topico selecionado
selectedTopicKeystringCondicionalChave do topico (obrigatorio em modo kb_topic)
selectedSnippetsarrayNaoTrechos do KB selecionados
promptstringNaoInstrucao usada na geracao
allowedWindowsarrayNaoJanelas de envio (padrao: dias uteis 09h-18h SP)
sendIntervalSecintegerNaoIntervalo entre blocos em segundos (min. 60, padrao: 86400)
maxContactsPerDayintegerNaoMaximo de contatos novos por dia (padrao: 20)
endsInDaysnumberNaoDias ate expirar a campanha (padrao: 3)
excludeActiveCampaignContactsbooleanNaoExcluir contatos ja em campanha ativa
excludeExistingContactsbooleanNaoExcluir contatos ja existentes
includeContactDatabooleanNaoPersonalizar com dados do contato

Exemplo de chamada

{
  "name": "dexter_campaigns_create",
  "arguments": {
    "name": "Follow-up leads demo",
    "messages": [
      "Ola {{nome}}! Tudo bem? Queria retomar nossa conversa...",
      "{{nome}}, tenho uma novidade que pode te interessar...",
      "Ultima oportunidade: condicao especial ate sexta!"
    ],
    "audience_tag": "lead-quente",
    "generationMode": "scratch",
    "maxContactsPerDay": 15,
    "endsInDays": 5
  }
}

Exemplo de resposta

{
  "created": true,
  "campaignId": 43,
  "status": "draft",
  "campaignType": "finite",
  "note": "Campanha criada em RASCUNHO. Para ativar, use dexter_campaigns_activate e a frase ATIVAR com o id."
}

Caso de uso

Criar o rascunho final da campanha apos gerar e revisar as mensagens. O proximo passo e usar dexter_campaigns_activate.

Permissao: Write

dexter_campaigns_activate

Ativa uma campanha finita em rascunho. Requer confirmacao explicita do usuario.

Parametros

NomeTipoObrigatorioDescricao
campaign_idintegerSimID da campanha a ativar
confirmationstringCondicionalFrase exata de confirmacao no formato ATIVAR {id}, digitada pelo usuario

Fluxo de ativacao (duas chamadas)

1
Primeira chamada — sem confirmation: retorna o resumo da campanha e a frase que o usuario precisa digitar.
2
Segunda chamada — com confirmation: ativa a campanha somente se a frase bater exatamente.

Exemplo — chamada 1 (solicitar resumo)

{
  "name": "dexter_campaigns_activate",
  "arguments": {
    "campaign_id": 43
  }
}

Exemplo de resposta (resumo)

{
  "needsConfirmation": true,
  "activated": false,
  "campaignId": 43,
  "status": "draft",
  "name": "Follow-up leads demo",
  "firstMessage": "Ola {{nome}}! Tudo bem? Queria retomar...",
  "windows": "[{\"days\":[0,1,2,3,4],\"start\":\"09:00\",\"end\":\"18:00\"}]",
  "audience": { "eligible": 28 },
  "requiredPhrase": "ATIVAR 43",
  "note": "Mostre este resumo e espere o usuario escrever a frase. Nao invente a confirmacao."
}

Exemplo — chamada 2 (confirmar)

{
  "name": "dexter_campaigns_activate",
  "arguments": {
    "campaign_id": 43,
    "confirmation": "ATIVAR 43"
  }
}
Guardrail critico: O agente (IA) nunca deve inventar ou preencher a frase de confirmacao. A frase ATIVAR {id} deve ser digitada pelo usuario humano. Se a frase nao bater, a ativacao e recusada.

Caso de uso

Ativar uma campanha finalizada e revisada. O fluxo de duas etapas garante que o usuario viu o resumo e confirmou deliberadamente.

Permissao: Send

dexter_campaigns_pause

Pausa uma campanha ativa da instancia. A retomada deve ser feita pelo dono no dashboard.

Parametros

NomeTipoObrigatorioDescricao
campaign_idintegerSimID da campanha a pausar

Exemplo de chamada

{
  "name": "dexter_campaigns_pause",
  "arguments": {
    "campaign_id": 42
  }
}

Exemplo de resposta

{
  "paused": true,
  "campaignId": 42
}

Caso de uso

Interromper rapidamente uma campanha em andamento — por exemplo, se o conteudo precisa de correcao ou se o volume de respostas esta alto demais.

Nota: Somente campanhas com status active podem ser pausadas. A retomada e feita exclusivamente pelo dashboard.

Permissao: Write

Agenda

dexter_calendar_status

Verifica se a instancia tem Google Agenda configurada e acessivel. Nao retorna tokens ou credenciais.

Parametros

NomeTipoObrigatorioDescricao
Nenhum parametro.

Exemplo de chamada

{
  "name": "dexter_calendar_status",
  "arguments": {}
}

Exemplo de resposta

{
  "configured": true,
  "skillEnabled": true,
  "instanceCredentials": true,
  "reachable": true,
  "timezone": "America/Sao_Paulo",
  "calendarId": "primary"
}

Caso de uso

Verificar se a agenda esta configurada antes de tentar agendar ou consultar horarios.

Permissao: Read

dexter_calendar_freebusy

Retorna as janelas ocupadas da agenda Google num intervalo de datas, usando o mesmo free/busy do Dexter.

Parametros

NomeTipoObrigatorioDescricao
time_minstringSimData/hora inicio em ISO 8601 (ex: 2025-01-20T09:00:00-03:00)
time_maxstringSimData/hora fim em ISO 8601

Exemplo de chamada

{
  "name": "dexter_calendar_freebusy",
  "arguments": {
    "time_min": "2025-01-20T09:00:00-03:00",
    "time_max": "2025-01-20T18:00:00-03:00"
  }
}

Exemplo de resposta

{
  "busy": [
    { "start": "2025-01-20T10:00:00-03:00", "end": "2025-01-20T11:00:00-03:00" },
    { "start": "2025-01-20T14:00:00-03:00", "end": "2025-01-20T15:00:00-03:00" }
  ]
}

Caso de uso

Consultar janelas ocupadas antes de sugerir horarios ao lead, ou verificar disponibilidade em um dia especifico.

Permissao: Read

dexter_calendar_slots

Lista horarios livres na agenda nos proximos dias uteis, em slots de 45 minutos. Nao cria eventos.

Parametros

NomeTipoObrigatorioDescricao
laterbooleanNaoSe true, olha mais dias uteis adiante (padrao: false)

Exemplo de chamada

{
  "name": "dexter_calendar_slots",
  "arguments": {
    "later": false
  }
}

Exemplo de resposta

{
  "slots": [
    {
      "start": "2025-01-21T09:00:00-03:00",
      "end": "2025-01-21T09:45:00-03:00",
      "label": "Ter 21/01 09:00-09:45"
    },
    {
      "start": "2025-01-21T11:00:00-03:00",
      "end": "2025-01-21T11:45:00-03:00",
      "label": "Ter 21/01 11:00-11:45"
    }
  ],
  "durationMin": 45
}

Caso de uso

Apresentar opcoes de horario ao lead para agendamento de reuniao, sem necessidade de consultar free/busy manualmente.

Permissao: Read

dexter_calendar_book

Cria um evento na Google Agenda e devolve o link do Google Meet. Nao envia mensagem no WhatsApp.

Parametros

NomeTipoObrigatorioDescricao
confirm_bookingbooleanSimDeve ser true para confirmar a criacao
startstringSimData/hora inicio em ISO 8601
endstringSimData/hora fim em ISO 8601
summarystringSimTitulo do evento
attendee_emailstringSimE-mail do participante
phonestringSimTelefone do participante com DDI
descriptionstringNaoDescricao do evento

Exemplo de chamada

{
  "name": "dexter_calendar_book",
  "arguments": {
    "confirm_booking": true,
    "start": "2025-01-21T09:00:00-03:00",
    "end": "2025-01-21T09:45:00-03:00",
    "summary": "Reuniao de demonstracao - Acme Ltda",
    "attendee_email": "maria@acme.com.br",
    "phone": "5511999990001",
    "description": "Demo do Dexter com Maria Souza"
  }
}

Exemplo de resposta

{
  "booked": true,
  "link": "https://meet.google.com/abc-defg-hij",
  "email": "maria@acme.com.br",
  "phone": "5511999990001"
}

Caso de uso

Agendar reunioes de demonstracao ou follow-up com leads qualificados, diretamente na agenda da equipe.

Guardrails:
  • confirm_booking precisa ser true — chamadas sem confirmacao sao recusadas.
  • O horario precisa estar livre na agenda. Se estiver ocupado, a tool retorna erro slot_busy.
  • E-mail e telefone com DDI sao obrigatorios — chamadas sem eles sao recusadas.
  • A tool nao envia mensagem no WhatsApp. O convite e enviado por e-mail pelo Google Calendar.

Permissao: Send

Mensagens

dexter_messages_send

Envia uma mensagem de WhatsApp para um contato. Acao de alto impacto: exige a permissao "Permitir envio de mensagens" habilitada na secao MCP da tela Integracoes.

Parametros

NomeTipoObrigatorioDescricao
phonestringSimTelefone com DDI (ex: 5541999998888)
messagestringSimTexto da mensagem
delay_typingintegerNaoSegundos simulando digitacao (3-15, padrao: aleatorio 3-10s)

Exemplo de chamada

{
  "name": "dexter_messages_send",
  "arguments": {
    "phone": "5511999990001",
    "message": "Ola Maria! Segue o link da proposta conforme combinado.",
    "delay_typing": 5
  }
}

Exemplo de resposta

{
  "sent": true,
  "phone": "5511999990001",
  "status": 200,
  "typing_sec": 5
}

Caso de uso

Enviar mensagem pontual a um contato — follow-up manual, resposta a solicitacao, envio de link ou documento.

Guardrails de envio:
  • Dedup: Uma mensagem identica para o mesmo numero e bloqueada por 3 minutos (retorna erro 429).
  • Rate limit: Nao e possivel enviar duas mensagens para o mesmo numero no mesmo segundo.
  • Timeout: Se uma chamada ficar sem resposta, nao reenvie imediatamente — o envio provavelmente ocorreu. Repetir dentro de 3 minutos e seguro (sera bloqueado se duplicado).
  • Supressao DDI: Numeros na lista de supressao do Dexter Data Intelligence sao bloqueados automaticamente.

Permissao: Send

Analytics

dexter_analytics_overview

Visao geral da operacao: total de contatos, campanhas por status e volume de mensagens enviadas e recebidas no periodo.

Parametros

NomeTipoObrigatorioDescricao
daysintegerNaoJanela de analise em dias (1-90, padrao: 7)

Exemplo de chamada

{
  "name": "dexter_analytics_overview",
  "arguments": {
    "days": 30
  }
}

Exemplo de resposta

{
  "days": 30,
  "contactsTotal": 245,
  "campaignsByStatus": {
    "active": 2,
    "finished": 5,
    "draft": 1,
    "paused": 1
  },
  "messagesInbound": 1230,
  "messagesOutbound": 980,
  "conversationsWithActivity": 87
}

Caso de uso

Gerar relatorio executivo da operacao, monitorar volume de mensagens ou acompanhar a evolucao da base de contatos.

Permissao: Read

Assistentes

dexter_agents_list

Lista os agentes de IA configurados na instancia (SDR, CS e Onboarding) com nome, funcao e objetivo.

Parametros

NomeTipoObrigatorioDescricao
Nenhum parametro.

Exemplo de chamada

{
  "name": "dexter_agents_list",
  "arguments": {}
}

Exemplo de resposta

{
  "agents": [
    {
      "id": "sdr",
      "name": "SDR (DM)",
      "role": "pre-vendas",
      "goal": "Tirar duvidas, qualificar e encaminhar para reuniao.",
      "personality": "Proativo, consultivo e direto"
    },
    {
      "id": "cs",
      "name": "CS (Grupo)",
      "role": "suporte",
      "goal": "Suporte para clientes ativos em grupos.",
      "personality": ""
    },
    {
      "id": "onboarding",
      "name": "Onboarding (DM)",
      "role": "implantacao",
      "goal": "Acompanhamento e checklist de implantacao.",
      "personality": ""
    }
  ]
}

Caso de uso

Verificar quais agentes estao configurados, seus nomes personalizados e funcoes antes de atribuir contatos.

Permissao: Read

Work Queue (Expediente)

dexter_work_queue_list

Lista a fila de trabalho do Dexter Expediente: leads parados, follow-ups aguardando aprovacao, itens executados e dispensados.

Parametros

NomeTipoObrigatorioDescricao
statusstringNaoFiltrar por status: pending, executed, dismissed, failed, expired ou all (padrao: pending)
limitintegerNaoMaximo de itens retornados (1-50, padrao: 20)

Exemplo de chamada

{
  "name": "dexter_work_queue_list",
  "arguments": {
    "status": "pending",
    "limit": 10
  }
}

Exemplo de resposta

{
  "items": [
    {
      "id": 101,
      "kind": "stale_lead_followup",
      "kindLabel": "Follow-up de lead parado",
      "phone": "5511988880001",
      "title": "Maria sem resposta ha 5 dias",
      "evidence": "Ultima msg: 'Fico no aguardo' (5d atras)",
      "draft": "Ola Maria, tudo bem? Gostaria de retomar nossa conversa...",
      "status": "pending",
      "execMode": "",
      "createdAtMs": 1719300000000,
      "executedAtMs": null
    }
  ],
  "count": 1
}

Caso de uso

Verificar itens pendentes na fila antes de aprovar ou dispensar, monitorar o que ja foi executado ou revisar itens que falharam.

Permissao: Read

dexter_work_queue_approve

Aprova e executa um item pendente da fila do Expediente — envia o follow-up rascunhado ao lead. Acao de alto impacto: exige permissao de envio.

Parametros

NomeTipoObrigatorioDescricao
item_idintegerSimID do item na fila
messagestringNaoTexto substituto: se informado, sobrescreve o rascunho antes de enviar

Exemplo de chamada

{
  "name": "dexter_work_queue_approve",
  "arguments": {
    "item_id": 101
  }
}

Exemplo de resposta

{
  "executed": true,
  "itemId": 101,
  "summary": "Mensagem enviada para 5511988880001"
}

Caso de uso

Aprovar follow-ups sugeridos pelo Dexter Expediente. Opcionalmente, editar o rascunho antes de enviar passando o parametro message.

Nota: Todos os guardrails de dedup e rate-limit do envio continuam valendo. O item precisa estar com status pending.

Permissao: Send

dexter_work_queue_dismiss

Descarta um item pendente da fila do Expediente. O item nao volta a ser sugerido por alguns dias.

Parametros

NomeTipoObrigatorioDescricao
item_idintegerSimID do item na fila

Exemplo de chamada

{
  "name": "dexter_work_queue_dismiss",
  "arguments": {
    "item_id": 102
  }
}

Exemplo de resposta

{
  "dismissed": true,
  "itemId": 102
}

Caso de uso

Descartar follow-ups que nao fazem sentido no momento — por exemplo, leads que ja responderam por outro canal ou que nao sao prioridade.

Permissao: Write

Guardrails e Limites

Todas as tools do conector MCP respeitam os mesmos guardrails de seguranca do Dexter:

GuardrailTools afetadasComportamento
Dedup de mensagem dexter_messages_send, dexter_work_queue_approve Mensagem identica para o mesmo numero e bloqueada por 3 minutos. Retorna erro ao inves de enviar duplicado.
Rate limit same-second dexter_messages_send, dexter_work_queue_approve Duas mensagens para o mesmo numero no mesmo segundo sao bloqueadas.
Supressao DDI dexter_messages_send Numeros na lista de supressao do Data Intelligence sao bloqueados automaticamente.
Confirmacao de ativacao dexter_campaigns_activate A frase ATIVAR {id} precisa ser digitada pelo usuario humano. O agente IA nao inventa a frase.
Slot ocupado dexter_calendar_book Se o horario esta ocupado na agenda, a criacao do evento e recusada com erro slot_busy.
Paginacao segura dexter_conversations_history Use offset ou before_ts para percorrer historicos longos. Limite maximo de 100 mensagens por pagina.
Limite de audiencia dexter_campaigns_create Maximo de 6 blocos por campanha e 5 mensagens por bloco.
Timeout de envio dexter_messages_send Se a chamada nao retornar, nao reenvie — o envio provavelmente ocorreu. Repetir dentro de 3 min e seguro.

Erros Comuns

ErroCausaSolucao
permission_denied A tool requer um nivel de permissao nao habilitado Ative a permissao correspondente (Read, Write ou Send) na tela Integracoes do dashboard
confirmation_mismatch A frase de confirmacao nao bate com o esperado O usuario deve digitar exatamente ATIVAR {id}
slot_busy O horario ja esta ocupado na agenda Consulte dexter_calendar_slots para horarios livres
google_calendar_unavailable Google Agenda nao configurada ou inacessivel Verifique com dexter_calendar_status e configure as credenciais no dashboard
google_oauth_not_configured Credenciais OAuth nao configuradas para esta instancia Configure Google OAuth nas credenciais da instancia no dashboard
topic_not_found O topicKey informado nao existe no KB Use dexter_campaigns_kb_topics para listar os topicos validos
no_topics_available Nenhum topico disponivel nas fontes de conhecimento Verifique se o KB dos assistentes tem conteudo configurado
HTTP 429 Mensagem duplicada bloqueada pelo dedup de 3 minutos Aguarde 3 minutos ou envie um texto diferente