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.
| Nivel | Toggle na tela Integracoes | Descricao |
|---|---|---|
Read | Permitir leitura de dados | Consultas somente-leitura: contatos, conversas, campanhas, analytics, agenda, fila de trabalho. |
Write | Permitir escrita de dados | Criar/atualizar contatos, tags, campanhas em rascunho, gerar mensagens, pausar campanhas, dispensar itens da fila. |
Send | Permitir envio de mensagens | Enviar mensagem WhatsApp, ativar campanha, aprovar item da fila, agendar na Google Agenda. |
Indice de Tools
| Tool | Permissao | Descricao curta |
|---|---|---|
| dexter_contacts_search | Read | Buscar contatos por nome, telefone, tag ou agente |
| dexter_contacts_get | Read | Dados completos de um contato |
| dexter_contacts_upsert | Write | Criar ou atualizar contato |
| dexter_contacts_tag | Write | Adicionar/remover tags de um contato |
| dexter_contact_tags_list | Read | Listar tags disponiveis da instancia |
| dexter_stale_leads | Read | Relatorio de leads inativos |
| dexter_conversations_list | Read | Listar conversas (inclusive nao salvas) |
| dexter_conversations_history | Read | Historico de mensagens de uma conversa |
| dexter_campaigns_list | Read | Listar campanhas da instancia |
| dexter_campaigns_status | Read | Status detalhado de uma campanha |
| dexter_campaigns_prepare | Read | Assistente de criacao: proxima pergunta |
| dexter_campaigns_kb_topics | Read | Listar assuntos do Knowledge Base |
| dexter_campaigns_audience_preview | Read | Preview da audiencia da campanha |
| dexter_campaigns_generate | Write | Gerar mensagens com IA |
| dexter_campaigns_create | Write | Criar campanha em rascunho |
| dexter_campaigns_activate | Send | Ativar campanha (requer confirmacao) |
| dexter_campaigns_pause | Write | Pausar campanha ativa |
| dexter_calendar_status | Read | Status da conexao Google Calendar |
| dexter_calendar_freebusy | Read | Horarios ocupados na agenda |
| dexter_calendar_slots | Read | Slots disponiveis para agendamento |
| dexter_calendar_book | Send | Agendar evento no Google Calendar |
| dexter_messages_send | Send | Enviar mensagem individual via WhatsApp |
| dexter_analytics_overview | Read | Metricas gerais da operacao |
| dexter_agents_list | Read | Listar assistentes de IA configurados |
| dexter_work_queue_list | Read | Listar fila de trabalho do Expediente |
| dexter_work_queue_approve | Send | Aprovar e enviar item da fila |
| dexter_work_queue_dismiss | Write | Dispensar item da fila |
Contatos
dexter_contacts_search
Busca contatos da instancia por nome, telefone, tag ou agente responsavel. Resultado paginado.
Parametros
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
query | string | Nao | Trecho do nome, nome do WhatsApp ou telefone |
tag | string | Nao | Filtrar por tag exata |
agent | string | Nao | Filtrar por agente: sdr, cs ou onboarding |
limit | integer | Nao | Itens por pagina (1-50, padrao: 20) |
offset | integer | Nao | Pular 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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
phone | string | Sim | Telefone 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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
phone | string | Sim | Telefone com DDI (ex: 5541999998888) |
name | string | Nao | Nome do contato |
agent | string | Nao | Agente responsavel: sdr, cs ou onboarding |
active | boolean | Nao | Se o agente de IA deve responder este contato |
custom_fields | object | Nao | Campos 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.
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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
phone | string | Sim | Telefone com DDI (ex: 5541999998888) |
add | array of string | Nao | Tags a adicionar |
remove | array of string | Nao | Tags 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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
| 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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
days | integer | Nao | Dias de inatividade minima (1-90, padrao: 4) |
limit | integer | Nao | Maximo 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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
query | string | Nao | Filtrar por nome, waName, telefone ou trecho da ultima mensagem |
only_unsaved | boolean | Nao | Se true, retorna so conversas sem cadastro em Contatos (padrao: false) |
limit | integer | Nao | Itens por pagina (1-50, padrao: 20) |
offset | integer | Nao | Pular 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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
phone | string | Sim | Telefone com DDI (ex: 5541999998888) |
limit | integer | Nao | Mensagens por pagina (1-100, padrao: 30) |
offset | integer | Nao | Pular N mensagens a partir do fim — 0 = mais recentes (padrao: 0) |
before_ts | integer | Nao | Retornar 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.
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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
status | string | Nao | Filtrar por status: active, paused, draft, finished |
limit | integer | Nao | Itens por pagina (1-50, padrao: 20) |
offset | integer | Nao | Pular 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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
campaign_id | integer | Sim | ID 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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
name | string | Nao | Nome da campanha |
audience_phones | array of string | Nao | Lista de telefones com DDI |
audience_tag | string | Nao | Tag para selecionar audiencia |
generationMode | string | Nao | scratch, kb_random ou kb_topic |
selectedTopicKey | string | Nao | Chave do topico KB selecionado |
messages | array of string | Nao | Mensagens ja geradas |
messageBlocks | array | Nao | Blocos 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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
knowledgeSources | object | Nao | Fontes 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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
audience_phones | array of string | Condicional | Lista de telefones com DDI (obrigatorio se audience_tag nao for informado) |
audience_tag | string | Condicional | Tag para selecionar contatos (obrigatorio se audience_phones nao for informado) |
excludeActiveCampaignContacts | boolean | Nao | Excluir contatos ja em campanha ativa |
excludeExistingContacts | boolean | Nao | Excluir 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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
generationMode | string | Nao | scratch (do zero), kb_random (assunto aleatorio) ou kb_topic (assunto escolhido). Padrao: scratch |
knowledgeSources | object | Nao | Fontes de conhecimento (para modos kb_*) |
topicKey | string | Condicional | Chave do topico — obrigatorio se generationMode for kb_topic |
prompt | string | Nao | Instrucao adicional para a IA na geracao |
blocksCount | integer | Nao | Numero de blocos (1-6) |
messagesPerBlock | integer | Nao | Mensagens por bloco (1-5) |
messageTone | string | Nao | Tom das mensagens (ex: profissional, casual) |
messageCharTarget | integer | Nao | Tamanho alvo das mensagens em caracteres |
includeContactData | boolean | Nao | Incluir 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.
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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
name | string | Sim | Nome da campanha (max. 120 caracteres) |
messages | array of string | Condicional | 1 a 6 mensagens, uma por bloco (se messageBlocks nao for usado) |
messageBlocks | array | Condicional | Blocos estruturados (alternativa a messages) |
blocksCount | integer | Nao | Numero de blocos |
messagesPerBlock | integer | Nao | Mensagens por bloco |
audience_phones | array of string | Condicional | Telefones com DDI (obrigatorio se audience_tag nao for informado) |
audience_tag | string | Condicional | Tag para selecionar contatos |
generationMode | string | Nao | scratch, kb_random ou kb_topic |
knowledgeSources | object | Nao | Fontes de conhecimento |
selectedTopic | string | Nao | Titulo do topico selecionado |
selectedTopicKey | string | Condicional | Chave do topico (obrigatorio em modo kb_topic) |
selectedSnippets | array | Nao | Trechos do KB selecionados |
prompt | string | Nao | Instrucao usada na geracao |
allowedWindows | array | Nao | Janelas de envio (padrao: dias uteis 09h-18h SP) |
sendIntervalSec | integer | Nao | Intervalo entre blocos em segundos (min. 60, padrao: 86400) |
maxContactsPerDay | integer | Nao | Maximo de contatos novos por dia (padrao: 20) |
endsInDays | number | Nao | Dias ate expirar a campanha (padrao: 3) |
excludeActiveCampaignContacts | boolean | Nao | Excluir contatos ja em campanha ativa |
excludeExistingContacts | boolean | Nao | Excluir contatos ja existentes |
includeContactData | boolean | Nao | Personalizar 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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
campaign_id | integer | Sim | ID da campanha a ativar |
confirmation | string | Condicional | Frase exata de confirmacao no formato ATIVAR {id}, digitada pelo usuario |
Fluxo de ativacao (duas chamadas)
confirmation: retorna o resumo da campanha e a frase que o usuario precisa digitar.
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"
}
}
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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
campaign_id | integer | Sim | ID 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.
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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
| 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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
time_min | string | Sim | Data/hora inicio em ISO 8601 (ex: 2025-01-20T09:00:00-03:00) |
time_max | string | Sim | Data/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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
later | boolean | Nao | Se 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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
confirm_booking | boolean | Sim | Deve ser true para confirmar a criacao |
start | string | Sim | Data/hora inicio em ISO 8601 |
end | string | Sim | Data/hora fim em ISO 8601 |
summary | string | Sim | Titulo do evento |
attendee_email | string | Sim | E-mail do participante |
phone | string | Sim | Telefone do participante com DDI |
description | string | Nao | Descricao 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.
confirm_bookingprecisa sertrue— 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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
phone | string | Sim | Telefone com DDI (ex: 5541999998888) |
message | string | Sim | Texto da mensagem |
delay_typing | integer | Nao | Segundos 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.
- 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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
days | integer | Nao | Janela 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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
| 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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
status | string | Nao | Filtrar por status: pending, executed, dismissed, failed, expired ou all (padrao: pending) |
limit | integer | Nao | Maximo 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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
item_id | integer | Sim | ID do item na fila |
message | string | Nao | Texto 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.
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
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
item_id | integer | Sim | ID 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:
| Guardrail | Tools afetadas | Comportamento |
|---|---|---|
| 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
| Erro | Causa | Solucao |
|---|---|---|
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 |