Skip to main content
Glama

responder

Sends a WhatsApp text message to a group or direct contact with human-paced delivery, review checks, and operator approval. Use it for first contact, replies, or multi-part messages.

Instructions

Envia uma mensagem de texto no WhatsApp — para um GRUPO (slug/nome/jid) ou um CONTATO em DM (dm-<55DDDnúmero>). PRIMEIRO CONTATO funciona: o número NÃO precisa estar em listar_contatos nem ter conversa anterior — passe dm-<55DDDnúmero> do jeito que o número veio (com ou sem o nono dígito) e o coletor confirma no WhatsApp qual é a conta antes de enviar. Se o retorno trouxer jid_corrigido_de, use o slug_correto dali em diante; número fora do WhatsApp é recusado com motivo, nada sai. Primeiro contato SEMPRE passa pelo OK do operador no texto, mesmo se outros chats rodam em modo autônomo (conduta na skill comunicacao-cliente). VOZ: carregue a skill de voz do operador (voz-do-operador ou a preenchida desta máquina) ANTES de redigir — ela define grafia, registro e a camada de venda do operador, medidos no texto real dele. Depois comunicacao-cliente (conduta: o que responder, três modos, erro sem se rebaixar, urgencia). CONFIRMAÇÃO: cada chat tem um modo (definir_modo). No modo 'confirmar' (DEFAULT), você DEVE ter mostrado o texto e recebido OK do operador antes de chamar. No modo 'autonomo', pode enviar direto. O retorno traz o modo do chat. (Isto é convenção que você respeita, não trava de código — não burle o 'confirmar'.) BALÕES: por default o texto é fatiado em até 3 balões (parágrafos em branco = quebras explícitas suas). Use um_balao: true quando a mensagem deve chegar INTEIRA num balão só — texto coeso/técnico (changelog, lista, instruções passo a passo), ou quando o operador pedir 'manda numa mensagem só'. Quando VOCÊ já decidiu a quebra (4, 5 balões…), passe baloes (lista, um item = um balão, até 8) em UMA chamada — NUNCA chame responder várias vezes pra simular balões: cada chamada é uma entrega separada com visto/digitando. Conversa curta e informal fica melhor em balões. REVISÃO: antes de enviar, o texto passa por revisão (repetição contra as últimas mensagens do chat, dois-pontos e tells, auto-incriminação, desculpa). Recusa devolve hits e sugestões; reescreva e chame de novo. Chame preparar_resposta ANTES de redigir. ENTREGA: devolve um TICKET na hora; a mensagem sai depois com latência humana (segundos numa conversa ativa, minutos a horas numa fria), visto antes do digitando, digitação na velocidade do operador. Novo responder no mesmo chat SUBSTITUI o ticket anterior. Acompanhe com status_envio; cancelar_envio cancela. Se o plantão avisar 'Entrega interrompida', releia o chat e responda de novo.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "grupo": "<grupo>"
    },
    "name": "responder"
  }
}

Input Schema

NameRequiredDescriptionDefault
citarNoid da mensagem recebida a responder (reply): o 1º balão sai citando ela
grupoYesslug do grupo (o mesmo de ler_mensagens/listar_grupos), nome exato, `dm-<55DDDnúmero>` pra DM (vale pra número novo, sem conversa anterior), OU um jid (grupo @g.us / DM '<numero>@s.whatsapp.net'). Slug é o jeito mais seguro.
textoNomensagem a enviar (obrigatório se não passar `baloes`)
baloesNobalões já decididos por você, na ordem (um item = um balão). Substitui `texto`/`um_balao`; tudo sai numa entrega humanizada só.
revisaoNo'ignorar' pula APENAS o score de estilo (nunca bloqueios de tratamento/culpa). Só quando o operador aprovou o texto exatamente assim e a revisão recusou.
aguardarNotrue = segura a chamada até a entrega terminar (comportamento antigo; Esc cancela). Default false: devolve o ticket na hora.
um_balaoNotrue = envia o texto INTEIRO num único balão (sem fatiar), mantendo a entrega humanizada (visto/digitando). Default false = quebra em até 3 balões.
urgenciaNo'agora' = cliente esperando um ok (só a janela de 5 s); 'normal' (default) = latência humana pelo estado da conversa; 'calma' = update sem pressa (força o regime frio: minutos a horas).
candidatosNo2 ou 3 versões alternativas da MESMA resposta (cada uma = lista de balões). O código revisa todas e envia só a que menos destoa do operador. Exclusivo com texto/baloes. Use quando a mensagem for mais que um 'ok'.
operador_pediuNotrue SÓ quando o operador pediu, nesta conversa, este envio pra este chat. Libera a trava do autônomo de quando ele respondeu pelo celular (`operador_assumiu`); nunca a de 'é IA?' (`perguntou_ia`). Nunca use por conta própria pra contornar a trava.
tempo_humano_sNoquanto uma PESSOA levaria entre ler a mensagem e mandar ESTA resposta: 'blz' = segundos; responder depois de pensar = 1-3 min; corrigir um bug e subir = 15-30 min. Pese o clima: cliente insistente ou grosso, estime menos. O código aplica só uma fração (teto de 4 min) e desconta o tempo que você já gastou trabalhando; assistir/ler a mídia do cliente já entra sozinho. Não atrasa o seu trabalho, só a entrega.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does: it discloses that a ticket returns immediately while delivery happens later at human latency, seen-before-typing ordering, typing speed matched to the operator, and that a new call in the same chat replaces the prior ticket. It also warns the pre-send revision can refuse with hits and suggestions, that out-of-WhatsApp numbers are rejected with nothing sent, and that the confirm mode is a convention rather than a code lock.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in sentence one and section headers (VOZ, CONFIRMAÇÃO, BALÕES, REVISÃO, ENTREGA) aid scanning, but the text is very long and re-explains parameters already fully documented in the schema (um_balao, baloes, urgencia, tempo_humano_s). The embedded skill-loading instructions sit awkwardly among behavioral rules.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter mutation tool with no annotations and no output schema, the definition covers what comes back (ticket, `modo`, `jid_corrigido_de`/`slug_correto`), how to follow up (status_envio, cancelar_envio), and what to do when delivery is interrupted. An agent has everything needed to invoke it correctly and recover from refusals.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds decision meaning beyond it: why `um_balao` exists versus default 3-balloon slicing, that `baloes` must be sent in a single call, that `candidatos` sends only the least-divergent version, and how `tempo_humano_s` is fractionally applied with a 4-minute cap. Some overlap with the schema remains (urgencia windows, jid_corrigido_de), keeping it below 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource: 'Envia uma mensagem de texto no WhatsApp' to a group (slug/name/jid) or a DM contact. It implicitly distinguishes itself from responder_midia by scoping to text, and names siblings it interacts with (preparar_resposta, status_envio, cancelar_envio, definir_modo) so an agent can place it in the workflow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to guidance throughout: first contact works without prior conversation, first contact always requires operator OK, call preparar_resposta before drafting, use status_envio to track and cancelar_envio to cancel. It also gives a hard negative rule — never call responder multiple times to simulate balloons, pass `baloes` in one call — plus when to prefer `um_balao` (cohesive/technical text) versus short informal chats.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.