Skip to main content
Glama

@zihin/mcp-server

Proxy MCP stdio-to-HTTP para a plataforma Zihin.ai. Conecta clientes MCP ao Zihin MCP Server via HTTP.

zihin-mcp MCP server

Cliente MCP <-stdio-> [@zihin/mcp-server] <-HTTP-> https://llm.zihin.ai/mcp

Inicio rapido

macOS / Linux:

ZIHIN_API_KEY=zhn_live_xxx npx @zihin/mcp-server

Windows (PowerShell):

$env:ZIHIN_API_KEY="zhn_live_xxx"; npx @zihin/mcp-server

Na pratica, a maioria dos clientes MCP (Claude Desktop, Cursor, etc.) define a variavel automaticamente via bloco "env" na configuracao — nao e necessario definir manualmente no shell.

Related MCP server: OpenAPI to Model Context Protocol (MCP)

Configuracao

Claude Desktop

Adicione ao claude_desktop_config.json:

{
  "mcpServers": {
    "zihin": {
      "command": "npx",
      "args": ["-y", "@zihin/mcp-server"],
      "env": {
        "ZIHIN_API_KEY": "zhn_live_xxx"
      }
    }
  }
}

Claude Code

Adicione ao .mcp.json do projeto:

{
  "mcpServers": {
    "zihin": {
      "command": "npx",
      "args": ["-y", "@zihin/mcp-server"],
      "env": {
        "ZIHIN_API_KEY": "zhn_live_xxx"
      }
    }
  }
}

Ou via CLI (a variavel ZIHIN_API_KEY deve estar definida no shell):

claude mcp add zihin -e ZIHIN_API_KEY=zhn_live_xxx -- npx -y @zihin/mcp-server

Cursor

Instalacao em 1 clique (cole na barra de endereco do navegador ou rode open '<link>'):

cursor://anysphere.cursor-deeplink/mcp/install?name=zihin&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkB6aWhpbi9tY3Atc2VydmVyIl0sImVudiI6eyJaSUhJTl9BUElfS0VZIjoiemhuX2xpdmVfeHh4In19

Troque zhn_live_xxx pela sua key nas configuracoes do MCP depois de instalar. Ou adicione ao .cursor/mcp.json:

{
  "mcpServers": {
    "zihin": {
      "command": "npx",
      "args": ["-y", "@zihin/mcp-server"],
      "env": {
        "ZIHIN_API_KEY": "zhn_live_xxx"
      }
    }
  }
}

VS Code (Copilot)

Install in VS Code

O botao abre o VS Code com a config pronta (troque zhn_live_xxx pela sua key). Manual: comando MCP: Add Server ou .vscode/mcp.json:

{
  "servers": {
    "zihin": {
      "command": "npx",
      "args": ["-y", "@zihin/mcp-server"],
      "env": { "ZIHIN_API_KEY": "zhn_live_xxx" }
    }
  }
}

Windsurf

Adicione ao ~/.windsurf/mcp.json:

{
  "mcpServers": {
    "zihin": {
      "command": "npx",
      "args": ["-y", "@zihin/mcp-server"],
      "env": {
        "ZIHIN_API_KEY": "zhn_live_xxx"
      }
    }
  }
}

Gemini CLI

gemini extensions install https://github.com/zihin-ai/gemini-cli-zihin

A extensao pede a API Key na instalacao (fica no keychain) e instala o MCP + contexto. Config manual: ver "Outros clientes MCP".

Codex (OpenAI)

Adicione ao ~/.codex/config.toml (ou .codex/config.toml no projeto):

[mcp_servers.zihin]
command = "npx"
args = ["-y", "@zihin/mcp-server"]
env_vars = ["ZIHIN_API_KEY"]

A variavel ZIHIN_API_KEY deve estar definida no seu shell. Alternativamente, para definir inline:

[mcp_servers.zihin]
command = "npx"
args = ["-y", "@zihin/mcp-server"]

[mcp_servers.zihin.env]
ZIHIN_API_KEY = "zhn_live_xxx"

Outros clientes MCP

Qualquer cliente que suporte o protocolo MCP via stdio pode usar este pacote. O padrao de configuracao e o mesmo: executar npx -y @zihin/mcp-server com a variavel ZIHIN_API_KEY definida.

Variaveis de ambiente

Variavel

Obrigatoria

Descricao

ZIHIN_API_KEY

Sim

API Key do tenant (formato zhn_live_*, zhn_test_* ou zhn_dev_*)

ZIHIN_MCP_URL

Nao

URL do MCP Server (default: https://llm.zihin.ai/mcp)

ZIHIN_MCP_CALL_TIMEOUT_MS

Nao

Teto de tempo de um tools/call, em milissegundos (default: 300000, 5 min; faixa aceita: 1000–1800000). O server tem deadline proprio por canal (defaults de chat 150s, builder 180s e demais canais 240s, sujeitos ao teto operacional do servidor) — o default deixa o server responder o erro diagnosticavel antes de o proxy cortar. As skills do backend 2026.10.5 informam teto operacional de 180s para os canais externos, incluindo chat_with_agent; esse valor depende da configuracao do servidor. Acima de ~300s o fetch do Node (undici) pode cortar antes, com timeout proprio de headers/body.

Como funciona

O pacote atua como um proxy transparente entre o cliente MCP local (via stdio) e o Zihin MCP Server (via HTTP):

  • Todas as tools, resources e prompts sao descobertos automaticamente do server

  • Auth, RBAC e tenant isolation sao enforced server-side via API Key

  • O role (admin/editor/member) e determinado pela API Key

Skills — deixe seu IDE especialista no Zihin

O servidor expoe 6 skills (playbooks procedurais: criar agente, tools, triggers, diagnostico, governanca) como resources zihin://skills/*, para os roles que enxergam resources (ver Capabilities). Nada precisa ser instalado, mas o corpo da skill nao e entregue sozinho: o client (ou o modelo) precisa consulta-lo com resources/read.

Para instalar tambem no formato NATIVO do seu client (ativacao automatica por contexto):

# Claude Code (Agent Skills em .claude/skills/)
ZIHIN_API_KEY=zhn_live_xxx npx @zihin/mcp-server install-skills --client claude

# Cursor (.cursor/rules/*.mdc) | Windsurf (.windsurf/rules/) | Codex (AGENTS.md + .zihin/skills/)
ZIHIN_API_KEY=zhn_live_xxx npx @zihin/mcp-server install-skills --client cursor
ZIHIN_API_KEY=zhn_live_xxx npx @zihin/mcp-server install-skills --client all

# Offline (usa as skills empacotadas no npm)
npx @zihin/mcp-server install-skills --client claude --bundled

Opcoes: --client claude|cursor|windsurf|codex|all · --dir <raiz-do-projeto> · --global (so claude, instala em ~/.claude/skills) · --bundled (offline).

As skills sao buscadas do server vivo (sempre atualizadas). Se a busca falhar (rede, server fora do ar, key recusada) ou voltar vazia, o comando instala as copias empacotadas no npm — as mesmas do --bundled, congeladas na data da release. Na falha ele imprime um aviso; nos dois casos a saida informa a fonte usada (fonte: server ou fonte: bundled). Sem ZIHIN_API_KEY e sem --bundled nao ha fallback: o comando encerra com erro. No Codex, um bloco gerenciado e inserido no AGENTS.md (entre <!-- zihin-skills:start/end -->, idempotente) com o indice das skills em .zihin/skills/.

Plugin Claude Code (MCP + skills em um comando)

claude plugin marketplace add zihin-ai/zihin-mcp
claude plugin install zihin@zihin

O plugin instala o MCP server (via este pacote) + as 6 skills. Requer ZIHIN_API_KEY exportada no ambiente.

Capabilities

As capabilities disponiveis dependem do role da API Key, controlado server-side:

Role

Tools

Resources

Prompts

admin

Todas (88)

19

3

editor

Leitura (48 — writes nao sao listadas)

19

3

member

Subset consumer (5)

-

-

Contagens verificadas contra producao em 04/10/2026 (88 tools / 19 resources — 3 catalogos + 10 schemas + 6 skills / 3 prompts). O numero exato pode variar conforme o server evolui.

Resources disponiveis

URI

Descricao

zihin://agents

Lista de agentes do tenant

zihin://models

Catalogo de modelos LLM disponiveis

zihin://schema-templates

Templates de schema para configuracao

zihin://schemas/{tipo}

Contrato formal (JSON Schema) de cada payload — o mesmo que o server valida (10 tipos)

zihin://skills/{slug}

Playbooks procedurais (6 skills — ver secao Skills acima)

Prompts disponiveis

Nome

Descricao

setup-agent

Cria um agente completo (agente + persona + tools + publicacao)

add-tool

Adiciona uma tool a um agente existente

configure-webhook

Configura trigger webhook para um agente

Testes

87 testes: unitarios offline (classificacao de erros, teto de timeout, install-skills, verificador do registry, coerencia dos manifests do plugin) + integracao real contra o server de producao. Sem ZIHIN_API_KEY, so os offline rodam; com a key, a suite completa:

ZIHIN_API_KEY=zhn_live_xxx npm test

Cobertura: validacao de API Key, tools (incluindo chat_with_agent com session tracking, continuidade e o contrato de saida — execution_id, cancelled, tools_used/tool_calls), resources, prompts, protocolo MCP (identidade espelhada + instructions), classificacao de erros (formas SDK v1 e v2) e o teto de tools/call conferido contra o deadline do server.

A suite de integracao faz DUAS chamadas reais a chat_with_agent (abertura da sessao e continuidade) — dois turnos de agente, com custo real de LLM no tenant. No CI ela roda apenas no workflow da tag v*.

Troubleshooting

"ERRO: ZIHIN_API_KEY nao definida"

Defina a variavel de ambiente antes de rodar:

# macOS / Linux
ZIHIN_API_KEY=zhn_live_xxx npx @zihin/mcp-server

# Windows (PowerShell)
$env:ZIHIN_API_KEY="zhn_live_xxx"; npx @zihin/mcp-server

"Falha ao conectar ao server"

  • Verifique sua conexao com a internet

  • Verifique se a API Key e valida e esta ativa

  • Se usar URL customizada, verifique ZIHIN_MCP_URL

"ERRO FATAL: API Key invalida ou revogada"

A API Key foi revogada ou desativada no painel Zihin. Gere uma nova key e atualize a configuracao do cliente MCP. Reinicie o processo apos a troca.

"A tool X passou do teto de 300s do proxy e foi abortada"

O proxy espera ate 5 minutos por um tools/call. Quando essa mensagem aparece, o limite atingido foi o do proxy, nao o do server — o trabalho foi cancelado no servidor (no dialeto 2026-07-28 o abort do request e o sinal de cancelamento), entao nao ha execucao orfa queimando token.

  • Turno de agente legitimamente longo: suba o teto com ZIHIN_MCP_CALL_TIMEOUT_MS (em milissegundos, faixa 1000–1800000). Acima de ~300s o proprio fetch do Node pode cortar antes.

  • Quem estourou primeiro foi o server (deadline por canal: defaults de chat 150s, builder 180s e demais canais 240s, sujeitos ao teto operacional do servidor): a mensagem que chega e outra, um erro TURN_TIMEOUT com execution_id e session_id — leve esses dois identificadores para o suporte, sao a correlacao com a execucao no servidor.

  • Cliente MCP tem timeout proprio, independente deste: se o host desistir antes, ele mostra o erro dele.

Tools nao aparecem no cliente

  • Reinicie o cliente MCP apos alterar a configuracao

  • Claude Desktop: verifique logs em ~/Library/Logs/Claude/mcp*.log (macOS) ou %APPDATA%\Claude\logs\mcp*.log (Windows)

Limitacoes

  • Turno longo tem teto: tools/call espera no maximo 5 min no proxy (configuravel — ver ZIHIN_MCP_CALL_TIMEOUT_MS), e o server tem deadline proprio por canal (defaults de chat 150s, builder 180s e demais canais 240s, sujeitos ao teto operacional do servidor). Turno que passa disso e cancelado, nao enfileirado.

  • Streaming: A tool chat_with_agent retorna a resposta completa de uma vez (sincrono). O protocolo MCP define que tools retornam um CallToolResult completo — nao ha suporte a streaming progressivo. Para feedback em tempo real durante execucao do agente, use o endpoint REST SSE (POST /api/v2/agents/:agent_id/stream).

Requisitos

  • Node.js >= 20

  • Compativel com macOS, Linux e Windows

Licenca

MIT

Available Tools

88 tools
cancel_agent_turnA
Destructive
Inspect

Cancela um turn de agente EM ANDAMENTO (mid-LLM, mid-tool, mid-stream). Útil quando agente entrou em loop caro, está respondendo errado, ou consumer pediu para parar. Diferente de set_session_control(suspended) que só bloqueia próximo turn — aqui interrompe o que já executa. Em multi-agent (Sprint 63), cancelar parent propaga em cascata via root_execution_id pra sub-agentes ativos.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoMotivo opcional do cancel (audit/telemetria)
session_idYessession_id text (ou UUID id) da sessão alvo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already mark the tool as destructive and non-idempotent, so the description wisely adds context: it interrupts mid-execution and cascades to active sub-agents via root_execution_id in multi-agent scenarios. It does not detail consequences like partial output handling, but the key behavioral traits are disclosed and consistent with the annotations.

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

Conciseness5/5

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

Three dense sentences each carry meaningful content: the core action, the applicable scenarios, the distinction from a sibling tool, and the multi-agent cascading behavior. No filler or repetition; the most important information is front-loaded.

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

Completeness4/5

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

The description is largely complete for a destructive cancellation tool: it names the target, the problem cases, the alternative, and the multi-agent propagation behavior. It could be slightly stronger on irreversibility or what happens to already-produced partial output, but overall an agent has enough to decide when and how to invoke it.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents session_id and reason. The description adds no additional parameter-level meaning beyond what the schema provides, so the baseline score of 3 is appropriate.

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?

The description states a precise verb and resource: it cancels an agent turn that is in progress (mid-LLM, mid-tool, mid-stream). It clearly distinguishes itself from the sibling tool set_session_control(suspended), making the tool's scope unmistakable.

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?

It explicitly states when to use this tool: when the agent is in an expensive loop, responding incorrectly, or the consumer asks to stop. It also contrasts with set_session_control(suspended), telling the agent exactly when this tool is the right choice instead of an alternative.

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

chat_with_agentAInspect

Envia uma mensagem a um agente e recebe a resposta completa (síncrono — sem streaming progressivo). O agente usa todas as tools configuradas (api_config, MCP externo).

Resposta inclui: response (texto), session_id (manter para contexto), tools_used (nomes), tool_calls (detalhes com name, duration_ms, success), execution_time_ms, model_used, execution_id (correlação com get_execution_diagnostics). outcome nomeia o desfecho real do turno (COMPLETED, LENGTH, CANCELLED, PAUSED, BUDGET_EXCEEDED, QUOTA_EXCEEDED, SESSION_BUSY, TIMEOUT ou ERROR); success só é true para COMPLETED e LENGTH (resposta cortada pelo teto de saída, mas entregue) — não confie só em success===true sem checar outcome se precisar distinguir bloqueio de sucesso pleno. outcome TIMEOUT com resposta = a chamada ao modelo passou do tempo; vem com timed_out: true e timeout_clock (first_signal = o provedor não começou a responder; idle = parou no meio; call = a chamada sem stream passou do teto). A resposta é a mensagem de falha do turno e o motivo fica na execução (get_execution_diagnostics). Turno que estoura o deadline do runtime retorna erro TURN_TIMEOUT com execution_id, session_id, timed_out: true e timeout_clock: turn — a execução fica registrada e a sessão pode ser retomada. Consumidor sob controle da plataforma (denylist do tenant, engajamento encerrado ou sessão suspensa) devolve { gated: true, gate, gate_action, response } SEM executar o agente — response é a mensagem fixa configurada, não saída do modelo.

IMPORTANTE: use o session_id retornado nas próximas mensagens para manter o contexto da conversa — ou, em integrações, session_from (a sessão é derivada de campos e você não precisa guardar id).

Integrações (só key admin/owner; em editor/member os campos voltam em ignored_fields): context = dados do sistema de origem que o agente LÊ (vão junto da mensagem, nunca no system prompt); bindings = argumentos AUTORITATIVOS das tools (defaults_from_context / ${context.x}; nunca vão ao modelo nem ficam gravados); session_from = nomes de campos de context/bindings que definem a conversa (mesmo hash do webhook session_strategy derive). A resposta traz accepted_fields e ignored_fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoDados do sistema de origem que o agente lê (ex.: userName). Plano, só escalares, até 2000 caracteres. Vai junto da mensagem do usuário, nunca no system prompt. Chave com nome de segredo é redigida. Só key admin/owner.
messageYesMensagem para enviar ao agente
agent_idYesUUID do agente
bindingsNoArgumentos autoritativos das tools (defaults_from_context / ${context.x}), ex.: idSolicitante. Nunca vão ao modelo nem ficam gravados. Só key admin/owner.
metadataNoDados opacos de correlação (ex.: trace_id). Nunca vão ao modelo; gravados (redigidos) em agent_executions.metadata — consultáveis por trace_id. Objeto plano de escalares, até 20 chaves e 4 KB.
session_idNoID da sessão retornado por uma chamada anterior. Envie para manter contexto. Omita na primeira mensagem.
consumer_keyNoIdentidade do consumidor final em nome de quem a mensagem é enviada (ex.: id do usuário no seu sistema, telefone só-dígitos). Escopa memória e controle de engajamento por pessoa. Sem ela, integrações com key admin/owner rodam SEM memória (falha fechada, doc 38 D5). Keys de papel member já identificam a pessoa e NÃO podem falar por outra. Key de papel editor: o campo é IGNORADO. Sob admin/owner a identidade é DECLARADA: reusar o session_id de OUTRA pessoa é recusado com code CONFLICT (omita o session_id para abrir uma conversa nova); uma conversa que ainda não tem identidade é ADOTADA pela primeira declaração e fica travada nela.
session_fromNoNomes de campos de context/bindings que definem a conversa (ex.: ["hashFornecedor"]). A sessão é criada na 1ª vez e reaproveitada — mesmo hash do webhook (session_strategy derive). Não combine com session_id. Só key admin/owner.

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnly=false, openWorld=true, idempotent=false, destructive=false): it enumerates outcome values, explains that success is true only for COMPLETED/LENGTH, details TIMEOUT/TURN_TIMEOUT/timed_out/timeout_clock behavior, describes gated responses that skip agent execution, and documents session adoption/CONFLICT rules. Rich behavioral disclosure that the annotations cannot carry.

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 the first line, which is good, but the body is very long with multiple paragraphs, a capitalized IMPORTANTE block, and dense integration notes. Much of it earns its place given the tool's complexity, yet it could be tightened without loss.

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?

With 8 parameters, nested objects, admin/owner-only fields, and no output schema, the description compensates fully by enumerating the response fields (response, session_id, tools_used, tool_calls, execution_time_ms, model_used, execution_id, outcome) and the gate/error cases. An agent has everything needed to call and interpret it.

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 already 100%, so the baseline is 3, but the description adds genuine meaning: that bindings are authoritative tool arguments never sent to the model or persisted, that context is read-only origin data never placed in the system prompt, that session_from mirrors webhook derive hashing, and the accepted_fields/ignored_fields return contract.

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?

First sentence gives a specific verb (envia mensagem) and resource (agente) plus a decisive scope qualifier: synchronous, no progressive streaming. This immediately distinguishes it from asynchronous/messaging siblings like send_manual_message or cancel_agent_turn.

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

Usage Guidelines4/5

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

Provides clear operational context: use session_id on subsequent calls to keep conversation context, or use session_from in integrations so you don't have to store an id, and warns not to combine the two. It doesn't explicitly contrast with the closest sibling (send_manual_message) or state when-not-to-use, so it stops short of a 5.

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

clone_agentAInspect

Clona um agente existente com seus schemas. O clone é criado em status draft. Triggers podem ser clonados opcionalmente (desabilitados por padrão). Schemas inválidos geram warnings mas não bloqueiam a clonagem.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesUUID do agente a clonar
new_nameNoNome do clone (default: "Cópia de <original>")
include_schemasNoClonar schemas do agente
include_triggersNoClonar triggers (serão criados desabilitados)

TDQS

A4.4/5.0
Behavior5/5

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

The description discloses important side effects not visible in annotations: the clone is always created in draft status, triggers are cloned disabled by default, and invalid schemas only produce warnings without blocking. This is exactly the behavioral context an agent needs beyond the structured annotation hints.

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

Conciseness5/5

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

Three short, information-dense sentences with no filler. The main action and post-condition are front-loaded, and each subsequent sentence adds meaningful detail without repeating schema content.

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

Completeness4/5

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

The description covers the essential post-conditions, optional trigger cloning, and non-blocking schema warnings. With no output schema, it does not describe the return value, but for a cloning operation the stated behavior is largely sufficient. A brief note on what the response contains would make it fully complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents agent_id, new_name, include_schemas, and include_triggers with defaults. The description adds some behavioral nuance around invalid schemas and trigger state, but it does not substantially expand on the parameter semantics already present in the schema.

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?

The description begins with a specific verb and resource: 'Clona um agente existente' and immediately tells the agent the resulting state ('criado em status draft'). This clearly distinguishes clone_agent from create_agent and other agent-management siblings.

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

Usage Guidelines4/5

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

The description gives clear context for when the tool is appropriate: duplicating an existing agent along with its schemas. It also clarifies optional trigger cloning. It does not explicitly name alternatives or exclusions, but the use case is obvious enough to guide selection.

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

compare_versionsA
Read-onlyIdempotent
Inspect

Compara duas versões de um recurso, mostrando diff campo a campo entre elas.

ParametersJSON Schema
NameRequiredDescriptionDefault
to_versionYesVersão de destino (mais recente)
resource_idYesUUID do recurso
from_versionYesVersão de origem (mais antiga)
resource_typeYesTipo do recurso

TDQS

A3.8/5.0
Behavior3/5

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

The annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the field-by-field diff behavior, which is consistent with annotations, but it does not disclose behavior for invalid versions or how the diff is structured.

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

Conciseness5/5

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

A single sentence packs the action, resource, and result type with no filler. It is appropriately front-loaded and easy to parse.

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

Completeness4/5

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

For a read-only comparison tool with fully documented parameters and safety annotations, the description covers the core behavior and return style. It does not specify output structure or invalid-version handling, but these are not heavily needed given the low complexity and the presence of annotations.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter already has clear meaning: resource_type is an enum, resource_id is a UUID, and version fields specify older/newer. The description adds no parameter-level detail beyond this, so the baseline of 3 applies.

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?

The description states a clear verb ('Compara') and resource ('duas versões de um recurso'), and specifies the output ('diff campo a campo'). This distinguishes it from siblings like get_version (single version retrieval) and list_versions (all versions listing).

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

Usage Guidelines3/5

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

The name and description imply use when comparing two versions, but there is no explicit statement of when to choose this tool over get_version or list_versions. No alternatives, exclusions, or preconditions are mentioned.

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

create_agentAInspect

Cria um novo agente. Retorna o agente criado com seu UUID.

ParametersJSON Schema
NameRequiredDescriptionDefault
bioNoDescrição/biografia do agente
nameYesNome interno do agente
tagsNoTags para categorização
typeNoTipo do agente (orchestrator = invoca outros agentes via invoke_agent)assistant
metadataNoMetadados adicionais em JSON livre. Ex: { "department": "vendas", "priority": "high" }
llm_configNoConfiguração do LLM. model: "provider.modelo" (ex: "openai.gpt-4.1-nano", "anthropic.claude-sonnet-4-6") ou "auto". temperature: 0-2. fallback_chain: cadeia de modelos ordenada.
visibilityNoVisibilidade do agenteprivate
commercial_nameNoNome comercial (exibido ao usuário final)

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already signal that this is not read-only (readOnlyHint=false), so the mutation nature is covered. The description adds one behavioral detail beyond annotations: it returns the created agent object with its UUID. However, it does not disclose side effects, required permissions, failure modes, or idempotency expectations beyond what annotations imply.

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

Conciseness5/5

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

The description is two short, front-loaded sentences with zero redundant wording. It states the action first and the return contract second, making it easy for an agent to parse quickly.

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

Completeness4/5

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

Given the rich schema descriptions and the annotation set, the description provides the essential missing piece: the return contract (created agent with UUID). It does not explicitly cover when to prefer this over cloning or publishing, and there is no output schema, but the tool is a straightforward create operation and the current description plus schema is largely sufficient for invocation.

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

Parameters3/5

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

The input schema has 100% parameter description coverage, including examples for llm_config and model patterns, so the baseline is 3. The description adds no parameter-level information, but the schema already carries the full semantic burden for all 8 parameters.

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?

The description uses a specific verb and resource: 'Cria um novo agente' (creates a new agent). It also adds the return value behavior ('Retorna o agente criado com seu UUID'), which distinguishes it from sibling tools like update_agent, delete_agent, and list_agents. The action is unambiguous.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as clone_agent, publish_agent, or update_agent. There are no stated conditions, prerequisites, or exclusions. The only usage signal is the tool name itself, which is implicit rather than explicit.

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

create_api_keyAInspect

Cria uma nova API Key para o tenant. Retorna a chave completa (visível apenas neste momento).

Prefixes: zhn_live_ (produção), zhn_test_ (teste), zhn_dev_ (desenvolvimento). Diferença é semântica — mesmo comportamento. A chave gerada é exibida apenas uma vez — salve-a imediatamente.

Roles: admin (todas as tools + endpoints REST), editor (leitura + consumer), member (consumer only). "owner" é exclusivo de contas de usuário (tenant_users), não disponível para API Keys. Anti-escalação: não é possível criar key com role superior ao seu.

Se rate_limit_per_minute for omitido, usa o máximo do plano do tenant.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNome da API Key (ex: "Webhook eBarn", "n8n Produção")
roleNoRole RBAC: admin (todas as tools + REST), editor (consumer + builder-read), member (consumer only). Anti-escalação: não pode ser superior ao seu roleadmin
prefixNoPrefixo da chave: zhn_live_ (produção), zhn_test_ (teste), zhn_dev_ (dev)zhn_live_
descriptionNoDescrição do uso da chave
expires_in_daysNoDias até expiração (omitir para sem expiração)
rate_limit_per_minuteNoLimite de requisições por minuto (validado contra plano do tenant)

TDQS

A4.7/5.0
Behavior5/5

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

The description adds substantial behavioral context beyond the annotations: the generated key is displayed only once, prefixes are semantically equivalent, roles have anti-escalation rules, 'owner' is unavailable for API keys, and omitted rate_limit_per_minute defaults to the tenant plan maximum. This is valuable operational information that the sparse annotations do not convey.

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

Conciseness5/5

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

The description is well-structured with front-loaded purpose and security-critical warnings. Every sentence contributes operational knowledge, from the one-time display warning to prefix semantics, role restrictions, and rate-limiting defaults. There is no filler or redundant restating of the input schema.

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 a mutating tool with no output schema, this description covers return behavior, secret handling, role constraints, prefix semantics, and default rate-limit behavior. An agent has enough to invoke the tool correctly and to know what to expect, including the critical 'save immediately' warning. No essential call-time information is missing.

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 description coverage is 100%, so the baseline is 3, but the description adds meaningful semantics: default behavior when rate_limit_per_minute is omitted, anti-escalation constraints on role, role capability details, and the note that 'owner' is not a valid API key role. This goes beyond the schema descriptions without needing to repeat every parameter.

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?

The description opens with 'Cria uma nova API Key para o tenant', which is a specific verb plus resource. It also says the full key is returned and visible only once, immediately making the tool's purpose distinct from sibling tools like list_api_keys, get_api_key, update_api_key, and delete_api_key.

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

Usage Guidelines4/5

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

The phrase 'Cria uma nova API Key' clearly signals when to use this tool, and sibling names make the alternatives for listing, retrieving, updating, and deleting unambiguous. It does not explicitly say 'use update_api_key to modify' or 'use list_api_keys to view', but the context is clear and no exclusions are needed.

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

create_approval_policyAInspect

Cria uma política de aprovação (quem aprova ações de tools sob HITL). stages[].approvers aceita {type:"user", id:""} ou {type:"role", role:"admin"}. Para ativar em um agente: vincule na CSP via behavior.approval_policy_id + behavior.require_approval_for. Contrato formal: resource zihin://schemas/approval_policy (envie só name/description/stages — tenant_id e created_by são injetados pelo servidor).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNome da política
stagesYesEstágios de aprovação (v1: 1 estágio, min_approvals=1)
descriptionNoDescrição

TDQS

A4.2/5.0
Behavior4/5

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

Beyond the all-false annotations, the description discloses that the server injects tenant_id and created_by, and clarifies that creation alone does not activate the policy—binding to an agent's CSP is required. This is meaningful behavioral context for a write operation.

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

Conciseness5/5

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

Three dense sentences front-load the purpose, then give the approver shapes, activation path, and contract constraints without repetition. Every sentence adds needed information.

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

Completeness4/5

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

For a creation tool with no output schema, the description covers the call contract, parameter restrictions, and the post-creation activation requirement. It does not describe the response shape or error cases, but those are not essential for a correct first invocation.

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 the baseline is 3; the description adds examples for approvers ({type:'user', id:'<uuid>'} vs {type:'role', role:'admin'}) and restricts the payload to name/description/stages. This helps an agent construct valid input beyond the schema's enum/type descriptions.

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?

The description opens with 'Cria uma política de aprovação', giving a specific verb and resource, and clarifies the domain (who approves tool actions under HITL). It is immediately distinguishable from sibling tools like list_approval_policies, get_approval_policy, and update_approval_policy.

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

Usage Guidelines3/5

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

The primary use case (creating an approval policy) is clear, and the description adds an important follow-up step: the policy only takes effect when bound via CSP behavior.approval_policy_id + behavior.require_approval_for. However, it does not explicitly contrast this with update_approval_policy or state when not to use this tool, so alternative selection guidance is only implicit.

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

create_cspAInspect

Cria uma nova política de segurança contextual (CSP).

Escopos: tenant (global), team, agent, user — herança automática de cima para baixo. Tipos: schedule (horários), behavior (comportamento), data (dados), origin (origens), custom.

⚠️ Campo fora do contrato é ACEITO em silêncio (o schema permite propriedades extras) e fica INERTE. Não invente nome de campo: leia zihin://schemas/csp_config e use exatamente os de $defs.{tipo}Rules.

Exemplos de rules por tipo (todos os campos abaixo existem no contrato E são aplicados):

  • schedule: { allowed_hours: { start: "08:00", end: "18:00" }, allowed_days: ["mon","tue","wed","thu","fri"], blocked_dates: ["2026-12-25"], timezone: "America/Sao_Paulo" }

  • behavior: { max_tokens_per_request: 4096, max_iterations: 10, max_tool_calls: 20, must_not_tools: ["web_search","fetch_url"] }

  • data: { sensitive_fields: ["cpf","email"], never_expose: ["password_hash"], restricted_entities: ["folha_pagamento"], restriction_message: "Não posso consultar esse dado." }

  • custom: qualquer shape — é passado ao prompt como bloco de política sem interpretação do runtime.

Controle de superfície de tools (behavior):

  • must_not_tools: nomes de tools que o agente NUNCA executa, mesmo carregadas. Filtrado antes do turno no runtime (inclusive no resume de HITL). É o único jeito de tirar uma tool nativa do agente sem desligar o recurso no tenant.

⚠️ policy_type "origin" NÃO é aplicado em runtime: nenhum entrypoint propaga o IP/origem do cliente até o loop, e countries/vpn/tor exigem provedor de geo que a plataforma não integra. A CSP é aceita e armazenada, mas não bloqueia nada — não use como controle de segurança.

Contrato formal: resource zihin://schemas/csp_config (envie só name/policy_type/scope/rules/... — tenant_id é injetado pelo servidor).

Aprovação por escopo (OE-2a, só chat nativo) — campos de behavior:

  • require_approval_for: array de string (nome de tool) ou objetos { tool_name } | { mcp_server_id } | { source: "mcp"|"api"|"db" } — tools casadas exigem aprovação HITL antes de executar

  • approval_policy_id: UUID de política criada via create_approval_policy — define QUEM aprova (sem ela, aprova o próprio solicitante) Ex: behavior: { require_approval_for: ["create_deal", { source: "db" }], approval_policy_id: "" }

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNome da política
rulesYesRegras da política (estrutura varia por tipo — veja descrição acima)
scopeYesEscopo de aplicação
priorityNoPrioridade (maior = mais importante, default: 0)
exceptionsNoExceções às regras (mesma estrutura de rules, sobrescreve campos específicos)
descriptionNoDescrição da política
policy_typeYesTipo da política
scope_target_idNoID do alvo (obrigatório para escopos team, agent, user)

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only cover the safety profile (readOnly=false, destructive=false, idempotent=false), and the description adds substantial behavioral context beyond that: unknown fields are silently accepted and left inert, tenant_id is server-injected, origin rules are stored but never enforced, and must_not_tools is filtered pre-turn including HITL resume. This is exactly the extra operational knowledge an agent needs.

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

Conciseness4/5

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

Front-loaded with the core purpose, then organized under clear headings (Escopos, Tipos, per-type examples, surface control, warnings, approval). It is long, and the two repeated ⚠️ warnings plus overlapping origin/must_not_tools notes are somewhat verbose, but nearly every block carries non-redundant information.

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 a nested-object, extra-properties-allowed tool with no output schema, the description supplies the contract reference, per-type rule examples, scope/heritage semantics, server-injected fields, and runtime-vs-stored caveats. An agent has everything needed to call it correctly without guessing field names.

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

Parameters5/5

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

Even with 100% schema coverage, the description adds real meaning: concrete per-type rule shapes for schedule/behavior/data/custom, the pointer to zihin://schemas/csp_config and $defs.{tipo}Rules for authoritative field names, and the note that tenant_id is injected rather than passed. This goes well beyond the schema's generic descriptions.

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?

States a specific verb+resource ("Cria uma nova política de segurança contextual (CSP)") and immediately enumerates the scopes and policy types it supports. An agent can distinguish this from update_csp/get_csp/delete_csp/toggle_csp without opening any schema.

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?

Explicitly routes usage: enumerates when each policy_type applies (schedule/behavior/data/custom), and gives an explicit when-NOT-to-use warning that policy_type 'origin' is accepted but not enforced at runtime ("não use como controle de segurança"). It also points to the contract resource and the create_approval_policy sibling for approval policy IDs.

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

create_mcp_serverAInspect

Registra um novo MCP server para um agente. O agente poderá usar as tools expostas pelo server.

Transports: 'http' (Streamable HTTP; era do protocolo negociada automaticamente), 'stdio' (local, apenas dev). O 'sse' legado foi descontinuado (migração MCP 2026-07-28).

Combinações auth_method + config:

  • none: config vazio {} (sem autenticação)

  • bearer: { vault_secret_id: "NOME_DO_SECRET" } — o secret contém o token Bearer

  • api_key: { vault_secret_id: "NOME_DO_SECRET", api_key_header: "X-Api-Key" } — header customizável

  • tunnel: config vazio {} — token da plataforma resolvido via env var INTERNAL_TUNNEL_TOKEN (não vault). Usar para MCP servers via Zihin Tunnel

  • oauth: { vault_secret_id: "OAUTH_CREDS", oauth_token_url: "https://..." } — OAuth2 client credentials

Campos opcionais em config: timeout (ms, 1000-120000 — só CONEXÃO + listagem de tools), call_timeout_ms (ms, 1000-120000 — timeout por CHAMADA de tool deste server; omitido = 30s global; alimenta também o teto do executor — doc loop-review/34 F1; retry de timeout é opt-in, não default), headers (object com headers extras), defaults_from_context (object com valores fixos injetados nas tools). Contrato: zihin://schemas/mcp_resource_config.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNome do MCP server
configNoConfiguração adicional (vault_secret_id, headers, timeout de conexão, call_timeout_ms por chamada de tool)
agent_idYesUUID do agente
endpointYesURL do endpoint ou comando stdio
transportNoTipo de transportehttp
auth_methodNoMétodo de autenticaçãonone
descriptionNoDescrição do server

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare this is a non-readonly, non-idempotent create. The description goes well beyond that: it specifies per-call vs connection timeout semantics, that timeout retry is opt-in, the default 30s call timeout, and that tunnel tokens are resolved via env var rather than vault. No annotation contradiction.

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

Conciseness4/5

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

Front-loaded purpose followed by a well-organized transport line and an auth_method/ config mapping list. Dense but every section earns its place; the parenthetical provenance notes ('doc loop-review/34 F1') add slight noise.

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

Completeness4/5

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

Covers transports, all five auth methods with config shapes, and key optional fields for a 7-param creation tool with no output schema. Missing only a note about required error cases (e.g., duplicate names) or the return value, which is minor.

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 real meaning beyond the schema: the exact config shapes per auth_method (bearer vs api_key vs oauth with required keys), the allowed timeout ranges, and the contract reference 'zihin://schemas/mcp_resource_config'.

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?

States a specific verb+resource (register a new MCP server for an agent) and adds the consequence ('the agent can then use the tools exposed by the server'). Distinguishes clearly from siblings like update_mcp_server and test_mcp_server.

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

Usage Guidelines4/5

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

Provides rich guidance on transport selection (http vs stdio, sse deprecated) and when to use each auth_method (tunnel for Zihin Tunnel, oauth for client credentials). Lacks explicit when-not-to-use framing or routing to update_mcp_server for existing servers, but context is strong.

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

create_schemaAInspect

Cria um novo schema para um agente. O schema_data varia conforme o tipo:

  • persona_config: { editor_schema: { persona: { role, objective, tone, language, expertise, constraints, personality_traits, custom_guidelines } } }

  • api_config: { tool_definition, editor_schema } — ATENÇÃO: endpoint.name DEVE ser igual a tool_definition.name. editor_schema.api.timeout_ms (1000-120000, default 30000) é a fonte única do quanto esperar: alimenta o AbortSignal do fetch e o teto do executor (doc loop-review/34 F1).

  • workflow_config: { steps, transitions, conditions }

  • skill_config: { skill: { name, instructions, priority? } } — instruções comportamentais transversais

  • mcp_tool_config / mcp_resource_config: vínculo de tool/resource de MCP server (normalmente gerados pelo Builder) Triggers e CSPs NÃO são schemas: use create_trigger e create_csp.

WORKFLOW RECOMENDADO (evita erros de contrato): leia o resource zihin://schemas/{schema_type} (JSON Schema formal — o mesmo que o servidor valida), monte o schema_data, valide com validate_schema_data (dry-run), então crie.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoSem efeito (legado): schema não tem nome próprio. O nome que vale fica dentro de schema_data (ex.: tool_definition.name, skill.name).
agent_idYesUUID do agente
descriptionNoDescrição do schema
schema_dataYesDados do schema. Estrutura por tipo: PERSONA_CONFIG: { editor_schema: { persona: { role: string (obrigatório, minLength 3), objective: string (obrigatório, minLength 10), tone?: string, language?: string, expertise?: string[], constraints?: string[], personality_traits?: string[], custom_guidelines?: object, response_style?: { format?: string, rules?: string[], max_response_length?: number } } } } API_CONFIG: { tool_definition: { name: string (snake_case), description: string (min 20 chars), input_schema: { type: "object", required: string[], properties: { campo: { type, description } } } }, editor_schema: { api: { base_url: string (URL), endpoints: [{ name: string (DEVE ser igual a tool_definition.name), method: "GET"|"POST"|"PUT"|"DELETE", path: string }], auth?: { prefix: "Bearer"|"Basic", secret_ref: string } } } } REGRAS CRÍTICAS para API_CONFIG: 1. endpoint.name DEVE ser IGUAL a tool_definition.name (senão a tool falha no roteamento interno) 2. Path parameters usam formato ${variavel} (com cifrão). Ex: /resources/${resource_id}/items 3. Auth: usar "prefix" (não "type") no objeto auth. Ex: { "prefix": "Bearer", "secret_ref": "MY_TOKEN" }. Para Basic Auth, armazenar o secret já em base64 4. Para input_schema com objetos aninhados (ex: body complexo com sub-objetos), definir cada campo como type "object" com suas próprias properties CAMPOS DE TRANSFORMAÇÃO (opcionais em cada endpoint): - default_body: { "from": "noreply@x.com" } — valores fixos mergeados no body (LLM pode sobrescrever, exceto locked_fields) - locked_fields: ["from"] — campos do default_body que o LLM NÃO pode sobrescrever (enforcement server-side) - field_mapping: { "body": "html" } — renomeia campos do body antes de enviar (body vira html) - array_fields: ["to", "cc"] — garante que esses campos sejam sempre arrays - body_format: "array" — wrappa o body inteiro em array [body] (default: "object") - defaults_from_context: { "userId": "idUsuario" } — auto-inject de valores do webhookContext quando LLM não fornece WORKFLOW_CONFIG: { steps: [{ id, name, action }], transitions: [{ from, to, condition }], conditions?: array } SKILL_CONFIG: { skill: { name: string (minLength 3), instructions: string (minLength 50, markdown com regras comportamentais), priority?: integer (0-1000, default 0, maior = aparece primeiro no prompt) } } Contrato formal de cada tipo: resource zihin://schemas/{schema_type}. CSPs não são schemas — campos multi-agent (max_agent_depth, allowed_invoke_agents, child_timeout_ms) vivem em create_csp com policy_type=behavior.
schema_typeYesTipo do schema

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare non-readonly, non-idempotent, non-destructive, closed-world. The description adds real behavioral context beyond that: the cross-field enforcement rule (endpoint.name must equal tool_definition.name or the tool fails routing), that the server validates against a formal JSON Schema resource, and server-side enforcement of locked_fields. It does not discuss reversibility or auth requirements for the call itself, so it falls short of a 5.

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?

Front-loaded with purpose and type breakdown, which is good, but the text is very long and contains redundancy (the zihin://schemas/{schema_type} contract is stated twice) and internal jargon ('doc loop-review/34 F1') that gives an agent no usable signal. Much of the content earns its place given tool complexity, but the noise costs it.

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 a complex, nested-object, multi-type creation tool with no output schema, the description covers every variant, the critical API_CONFIG contract rules, transformation options, and a validation-first workflow. An agent has everything needed to construct a valid call without consulting external docs.

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 description coverage is 100%, so the baseline is 3. The description adds meaning the schema does not: it warns that the top-level 'name' param is legacy with no effect, and documents the internal structure semantics of schema_data per type (required minLengths, transformation fields, defaults_from_context behavior). This is genuine added value over the schema.

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?

States a specific verb+resource ('Cria um novo schema para um agente') and enumerates the six schema_type values the tool accepts. It also explicitly distinguishes itself from siblings by declaring 'Triggers e CSPs NÃO são schemas: use create_trigger e create_csp,' so an agent can route correctly without opening other schemas.

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?

Gives an explicit when-to-use workflow ('leia o resource zihin://schemas/{schema_type}, monte o schema_data, valide com validate_schema_data (dry-run), então crie') and names the sibling tools that handle non-schema cases (create_trigger, create_csp). It even points to create_csp for multi-agent fields, leaving little to inference.

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

create_secretAInspect

Cria um novo secret criptografado para o tenant. O valor é criptografado com AES-256-GCM e armazenado no vault. IMPORTANTE: O valor plaintext não será retornado após criação — salve-o antes.

Após criar, use o "name" como:

  • secret_ref em api_config auth (ex: "ZIGMA_API_KEY")

  • vault_secret_id em connection_config (ex: "DB_PASSWORD_PROD")

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNome do secret (ex: "ZIGMA_API_KEY", "DB_PASSWORD_PROD"). Deve ser único por tenant.
valueYesValor plaintext a ser criptografado (ex: a API key, senha do banco)
categoryNoCategoria do secretapi
usage_hintNoDica de uso para desenvolvedores. Valores recomendados: "bearer_token", "api_key", "password", "connection_string", "oauth_client". Puramente informativo — não afeta comportamento.
descriptionNoDescrição do uso do secret

TDQS

A4.7/5.0
Behavior5/5

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

Discloses important behavior beyond annotations: encryption via AES-256-GCM, storage in the vault, and especially that the plaintext value will not be returned after creation and must be saved beforehand. This is critical operational context that readOnlyHint, idempotentHint, and related annotations do not provide.

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

Conciseness5/5

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

Three short, focused blocks: the action, a critical warning, and downstream usage guidance. Every sentence earns its place, and the most decision-relevant facts are front-loaded.

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 a creation tool with full schema coverage and no output schema, the description supplies sufficient context: what is created, how it is protected, what the agent must retain, and how to use the result. The warning about plaintext not being returned is especially valuable given the absence of an output schema.

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?

The input schema already provides 100% parameter coverage with descriptions and examples. The description adds genuine value by explaining that the 'name' parameter becomes secret_ref in api_config auth or vault_secret_id in connection_config, which is not stated in the schema. It does not add detail for category or usage_hint, but their schema descriptions are already sufficient.

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?

States 'Cria um novo secret criptografado para o tenant' — a specific verb (create), resource (secret), and scope (tenant). The 'novo' distinguishes it from update/delete/list secret siblings, making the creation operation unambiguous.

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

Usage Guidelines4/5

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

'Cria um novo secret' frames when to use the tool: when a new secret is needed. The downstream note 'use o name como secret_ref em api_config auth...' reinforces the practical use case. It does not explicitly name alternatives like update_secret or delete_secret, but the create/update/delete sibling cluster makes the distinction clear.

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

create_triggerAInspect

Cria um novo trigger para um agente. Contrato autoritativo: resource zihin://schemas/trigger_config (o mesmo JSON Schema que o servidor valida; envie apenas agent_id/name/trigger_type/trigger_config — tenant_id e ids são injetados pelo servidor). Use SOMENTE os enums abaixo — não invente valores como "public" para sender_access.mode. A configuração (trigger_config) depende do tipo:

  • webhook: { query_extraction: { field: "chatInput" }, response_adapter: { format: "ebarn"|"slack"|"teams"|"twiml"|"raw" }, context_mapping: {}, session_strategy: { mode: "derive"|"ephemeral", fields?: [] }, sender_access?: { mode: "any"|"members"|"whitelist", identity_field?, match_column?, whitelist? }, execution?: { mode: "sync"|"async", ack_response?: { body, content_type }, callback?: { url, method, content_type, auth: { type, secret_ref }, body_template, response_transform }, message_buffer?: { enabled, window_ms, max_messages, concat_separator }, split_config?: { enabled, max_chunk_size, max_chunks, chunk_strategy: "paragraph"|"sentence"|"length", numbering, inter_chunk_delay_ms } } }

  • email: { allowed_senders: [], subject_filter: "" }

  • schedule: { cron: "0 9 * * *", timezone: "America/Sao_Paulo", query_template: "mensagem fixa", enabled_days?: ["monday","friday"], session_strategy?: { mode: "new" } (sessão nova a cada execução; é o único modo aceito para schedule), output?: { channel: "silent"|"webhook"|"callback"|"user" (user = SPEC D: entrega na sessão do chat nativo do usuário-alvo + push; exige target: { field: "user_id"|"consumer_key", value } e aceita push: { title, body }), webhook_url?: "https://..." (webhook), callback?: { url, method?, content_type?, auth?: { type, secret_ref }, body_template?, response_transform?: { strip_markdown, max_length } } (callback) } }

response_adapter.format determina defaults automáticos de transform: twiml → strip_markdown=true, max_length=4096. Override via execution.callback.response_transform. sender_access controla quem pode acionar o webhook: "any" (default), "members" (tenant_users), "whitelist" (lista explícita). message_buffer agrupa mensagens rápidas (popcorn) em uma janela de debounce via Redis antes de executar o agente. split_config divide respostas longas em múltiplos chunks para canais com limite de tamanho (WhatsApp, SMS).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNome do trigger
agent_idYesUUID do agente
api_key_idNoUUID da API Key para execução autenticada
descriptionNoDescrição do trigger
trigger_typeYesTipo de trigger
trigger_configNoConfiguração do trigger. Estrutura por tipo: WEBHOOK: { query_extraction: { mode: "field"|"full_body", field?: string (default: "message") }, response_adapter: { format: "ebarn"|"slack"|"teams"|"twiml"|"raw", content_type?: string, max_length?: number }, context_mapping?: { campo: "$.path.no.body" }, session_strategy?: { mode: "derive"|"ephemeral", fields?: string[] }, sender_access?: { mode: "any"|"members"|"whitelist", identity_field?: string, match_column?: string, whitelist?: string[] }, execution?: { mode: "sync"|"async", ack_response?: { body: string|object, content_type: string }, callback?: { url: string, method: "POST"|"PUT"|"PATCH", content_type: string, auth: { type: "basic"|"bearer"|"api_key"|"none", secret_ref: string }, headers?: object, body_template: object|string, response_transform?: { strip_markdown: boolean, max_length: number } }, message_buffer?: { enabled: boolean, window_ms?: number (100-60000, default 5000), max_messages?: number (1-100, default 10), concat_separator?: string (default "\n") }, split_config?: { enabled: boolean, max_chunk_size?: number (100-50000, default 1500), max_chunks?: number (1-50, default 10), chunk_strategy?: "paragraph"|"sentence"|"length" (default "paragraph"), numbering?: boolean (default true), inter_chunk_delay_ms?: number (0-10000, default 500) } } } SCHEDULE: { cron: string (ex: "0 9 * * *"), timezone?: string (default: "America/Sao_Paulo"), query_template: string (tarefa para o agente), enabled_days?: string[] (ex: ["monday","friday"]), session_strategy?: { mode: "new" } (sessão nova a cada execução; é o único modo aceito para schedule), output?: { channel: "silent"|"webhook"|"callback"|"user" (default: "silent"; user = SPEC D: entrega na sessão do chat nativo + push, exige target: { field: "user_id"|"consumer_key", value }), webhook_url?: string (se channel=webhook), callback?: { url, method?, content_type?, auth?: { type, secret_ref }, body_template?, response_transform?: { strip_markdown?, max_length? } } (se channel=callback) } } — memory_config é REJEITADO pelo servidor (doc loop-review/38, onda 3): o resultado do schedule é entregue como MENSAGEM, use output.channel="user"|"callback"|"webhook" EMAIL: { allowed_senders: string[], subject_filter?: string }

TDQS

A4/5.0
Behavior5/5

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

Beyond the annotations (readOnly=false, destructive=false, idempotent=false), the description discloses genuinely behavioral facts: server-side injection of tenant_id and ids, the authoritative validation contract at zihin://schemas/trigger_config, the default transforms derived from response_adapter.format, and that memory_config is rejected by the server for schedule triggers. This is exactly the extra context the annotations cannot carry.

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?

The purpose and validation contract are front-loaded, but the body is very long and largely duplicates the trigger_config JSON Schema already present in the input schema, including enum lists and defaults. It is dense and mostly single-paragraph, so structure could be improved and a good deal of the config recitation is redundant.

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 a complex, three-variant, nested-config creation tool with no output schema, the description covers type-dependent structures, enum restrictions, server-side injections, rejected fields, and default transformations. An agent has enough to call it correctly without further inference.

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 the baseline is 3, but the description adds semantics the schema does not: sender_access controls who can invoke the webhook ('any'/'members'/'whitelist'), message_buffer groups rapid messages via Redis debounce, and split_config chunks long responses for size-limited channels. It meaningfully enriches several nested parameters rather than merely restating them.

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

Purpose4/5

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

The opening sentence 'Cria um novo trigger para um agente' states a specific verb and resource, and the rest of the text makes the creation semantics unambiguous. However, it never explicitly distinguishes itself from siblings like update_trigger, get_trigger, or test_trigger, so it falls short of a 5.

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

Usage Guidelines3/5

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

The description imposes real invocation constraints ('Use SOMENTE os enums abaixo', don't invent values, send only agent_id/name/trigger_type/trigger_config since tenant_id and ids are server-injected), which is useful guidance. It gives no explicit criteria for when to choose create_trigger over update_trigger or test_trigger, so it remains implied rather than explicit.

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

delete_agentA
Destructive
Inspect

Arquiva um agente (soft delete). O agente pode ser restaurado depois.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesUUID do agente a arquivar

TDQS

A4/5.0
Behavior4/5

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

Annotations already signal mutation and destructiveness, and the description adds the valuable nuance that the delete is soft and reversible ('soft delete', 'pode ser restaurado depois'). It does not detail effects on related resources or whether deletion is idempotent, but the core behavior is disclosed beyond the annotated flags.

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

Conciseness5/5

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

Two short sentences carry the operation, its soft-delete nature, and reversibility with no filler. Every sentence adds information, and the key action is front-loaded.

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

Completeness4/5

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

For a one-parameter, schema-covered operation with no output schema, the description covers the essential safety-relevant detail: it is reversible. It could mention what happens to the archived agent's active sessions or visibility, but nothing critical is missing for a simple soft-delete call.

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

Parameters3/5

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

The sole parameter is fully documented in the schema ('UUID do agente a arquivar'), so the description does not need to provide parameter meaning. The description adds no extra semantic detail about the parameter beyond the schema, matching the baseline for high schema coverage.

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?

The description uses a specific verb ('Arquiva') and resource ('um agente'), and immediately clarifies that this is a soft delete, distinguishing it from a destructive removal. The added note that the agent can be restored later sharpens the meaning of the operation.

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

Usage Guidelines3/5

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

The restorability note implies this tool is the choice when an agent must be removed but kept recoverable, which is a usable usage cue. However, the description does not name alternative tools or state when not to use it, leaving the when-to-use guidance mostly implicit.

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

delete_agent_memoryA
Destructive
Inspect

Remove (soft delete) uma memória específica de um agente. Requer agent_id, memory_key e user_key. Chaves com prefixo "_" são controle da plataforma e não podem ser removidas por aqui.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoEscopo da memória (default agent_user). A mesma chave pode existir em escopos diferentes.
agent_idYesUUID do agente
user_keyYesIdentificador do usuário final dono da memória
memory_keyYesChave da memória a ser removida

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds genuinely new behavioral context: it is a SOFT delete (memory recoverable, not permanently purged) and platform-controlled keys are protected. These details go beyond the structured annotations.

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

Conciseness4/5

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

Compact and front-loaded, leading with the action and soft-delete nature, then the required inputs, then the constraint. Every sentence carries information, though the required-parameter sentence is slightly redundant with the schema.

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

Completeness4/5

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

For a destructive delete with annotations already covering the safety profile and no output schema, the description supplies the key extras (soft delete, protected keys). It omits any mention of the scope parameter's effect, but that is documented in the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters including the scope enum. The description only restates the three required parameter names, adding no syntax or semantic value beyond the schema; baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Remove (soft delete) uma memória específica de um agente'), which is precise and unambiguous. It does not explicitly differentiate itself from the sibling list_agent_memory, so it falls short of a 5.

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

Usage Guidelines3/5

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

Provides one useful constraint ('Chaves com prefixo "_" são controle da plataforma e não podem ser removidas por aqui'), which tells the agent when the call will fail. However, there is no guidance on when to use this versus alternatives like list_agent_memory, nor prerequisites about scope selection.

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

delete_api_keyA
Destructive
Inspect

Revoga uma API Key permanentemente. Triggers e webhooks que usam esta chave deixarão de funcionar.

ParametersJSON Schema
NameRequiredDescriptionDefault
key_idYesUUID da API Key a revogar

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already provide destructiveHint=true, readOnlyHint=false, and idempotentHint=false. The description adds value beyond these by disclosing that revocation is permanent and that dependent triggers and webhooks will stop functioning. This is useful behavioral context not present in the annotations.

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

Conciseness5/5

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

The description is two short, front-loaded sentences. The first states the core action and permanence; the second adds the most important side effect. No filler or redundancy.

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

Completeness4/5

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

For a simple single-parameter destructive tool with annotations already covering the safety profile, the description is largely complete: it states permanence, the side effect on triggers/webhooks, and the schema covers the parameter. It lacks an explicit pointer to non-destructive alternatives or reversibility, but these are minor gaps given the tool's simplicity.

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

Parameters3/5

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

Schema description coverage is 100% and the sole parameter key_id has a full description in the schema ('UUID da API Key a revogar'). The tool description adds no additional parameter-level meaning, so the baseline 3 applies.

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?

The description states a specific verb ('Revoga' = revokes), a clear resource ('uma API Key'), and adds the modifier 'permanentemente' to distinguish permanent revocation from other operations. This clearly differentiates it from sibling tools like update_api_key, which modify rather than permanently revoke.

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

Usage Guidelines4/5

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

The description makes the usage context clear: use this when you want to permanently revoke an API key, and it warns about the consequence that triggers and webhooks using the key will stop working. It does not explicitly name an alternative like update_api_key for non-destructive changes, so it stops short of a full when/when-not comparison.

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

delete_cspA
Destructive
Inspect

Remove uma política de segurança permanentemente.

ParametersJSON Schema
NameRequiredDescriptionDefault
csp_idYesUUID da CSP a remover

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the destructive nature is known. The description adds the 'permanentemente' qualifier, signaling irreversibility, but does not mention cascading effects, required permissions, or failure behavior if the CSP is in use.

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

Conciseness5/5

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

The description is one short, direct sentence with no filler or repeated schema information. The key message—permanent removal of a security policy—is front-loaded and easy to parse.

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

Completeness4/5

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

For a one-parameter delete operation with destructiveHint and idempotentHint annotations, the description sufficiently states the action and permanence for invocation. It omits post-deletion effects and return value, but no output schema exists and the operation is simple.

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

Parameters3/5

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

Schema coverage is 100%; the single required csp_id parameter has a UUID format and a description ('UUID da CSP a remover'). The tool description adds no parameter-level detail, but the schema fully documents the parameter, so the baseline of 3 applies.

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?

The description uses a specific verb ('Remove') and resource ('uma política de segurança') and adds 'permanentemente', making it clear this is a permanent deletion tool. This distinguishes it from sibling tools like create_csp, update_csp, toggle_csp, and list_csps even without naming them.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not contrast permanent deletion with toggle_csp for temporary disabling or update_csp for modification, leaving the agent to infer usage context.

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

delete_mcp_serverA
Destructive
Inspect

Remove um MCP server de um agente. As tools do server deixam de estar disponíveis.

ParametersJSON Schema
NameRequiredDescriptionDefault
mcp_server_idYesUUID do MCP server a remover

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true readOnlyHint=false. The description adds a concrete behavioral consequence—'As tools do server deixam de estar disponíveis'—which is useful for an agent to understand the operational impact beyond the generic destructive flag. It does not contradict the annotations.

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

Conciseness5/5

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

The description is two short sentences with no filler. The main action is stated first, and the consequence is given immediately after, making it easy for an agent to parse quickly.

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

Completeness4/5

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

This is a straightforward single-parameter deletion tool. The description covers the core action and the immediate outcome, while the schema and destructiveHint cover the parameter and risk. Missing details such as irreversibility or authorization requirements are not explicitly stated, but given the low complexity and annotation coverage, the description is sufficiently complete.

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

Parameters3/5

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

Schema description coverage is 100%, and the parameter description ('UUID do MCP server a remover') already fully documents the only parameter. The tool description adds no additional meaning beyond what the schema already provides, so baseline 3 is appropriate.

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?

The description states a specific verb ('Remove') and a specific resource ('um MCP server de um agente'), clearly distinguishing this as the deletion operation among siblings like create_mcp_server, update_mcp_server, and test_mcp_server. It also adds the meaningful consequence that the server's tools become unavailable.

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

Usage Guidelines3/5

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

The description implies usage: use this when you want to remove an MCP server from an agent, with the effect that its tools stop being available. However, it does not explicitly contrast it with alternatives such as update_mcp_server or invalidate_mcp_cache, nor does it state when not to use it. The guidance is implied rather than explicit.

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

delete_schemaA
Destructive
Inspect

Desativa um schema (soft delete). O schema fica inativo mas pode ser reativado.

ParametersJSON Schema
NameRequiredDescriptionDefault
schema_idYesUUID do schema a desativar

TDQS

A3.6/5.0
Behavior4/5

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

It discloses that this is a soft delete, that the schema becomes inactive, and that it can be reactivated—useful context beyond the destructiveHint annotation. It does not mention side effects on dependent resources or failure behavior, but annotations already cover the destructive nature, so the added reactivation detail is valuable.

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

Conciseness5/5

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

Two short sentences with no filler. The primary action is front-loaded, and the soft-delete qualification immediately follows, making intent clear without wasted words.

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

Completeness4/5

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

For a single-parameter tool with a high-coverage schema and relevant annotations, this description is largely complete. It covers the key distinction from hard delete and the reactivation possibility, though it leaves minor gaps around what 'inactive' means operationally and how reactivation would be performed.

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

Parameters3/5

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

The only parameter, schema_id, is fully documented in the schema as 'UUID do schema a desativar' with 100% coverage. The description adds no further semantic detail about the parameter, so the schema carries the load and the baseline of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool deactivates a schema via soft delete, which prevents misinterpretation of the 'delete' name as a hard delete. It does not explicitly differentiate from the sibling 'toggle_schema', which may also affect schema active state, leaving some ambiguity about which operation is intended.

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

Usage Guidelines2/5

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

The description explains the effect but provides no guidance on when to use delete_schema versus alternatives such as toggle_schema or update_schema. There is no statement about when to prefer this tool or what scenarios call for the soft-delete behavior.

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

delete_secretA
Destructive
Inspect

Remove um secret permanentemente. ATENÇÃO: api_config que referenciam este secret deixarão de funcionar.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNome do secret a remover

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds real value beyond them by disclosing the downstream consequence: api_configs referencing this secret will stop working. "Permanentemente" reinforces non-recoverability. It still omits that a non-existent name will error (idempotentHint=false) and whether auth/confirmation is required.

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

Conciseness5/5

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

Two short sentences, zero filler, and the destructive consequence is front-loaded right after the action statement so the warning cannot be missed.

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

Completeness4/5

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

For a one-parameter destructive tool with no output schema and annotations covering the safety profile, the description supplies the one thing annotations cannot: the blast radius on referencing api_configs. Only the idempotency/error behavior of re-deleting is left unstated.

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

Parameters3/5

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

There is a single parameter with 100% schema description coverage ("Nome do secret a remover"), so the schema fully documents it. The description adds no syntax, format, or lookup guidance beyond that, which is the expected baseline when the schema does the work.

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

Purpose4/5

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

The verb+resource is explicit and specific ("Remove um secret permanentemente"), and "permanentemente" distinguishes it from the sibling update_secret. However, it never names update_secret or list_secrets as alternatives, so an agent must infer the routing from the verb alone.

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

Usage Guidelines3/5

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

Usage is only implied: deleting versus updating a secret is inferable from the verb, but there is no statement of when deletion is appropriate, no prerequisites, and no pointer to update_secret for reversible changes. Minimum viable guidance.

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

delete_triggerA
Destructive
Inspect

Remove um trigger permanentemente. Esta ação não pode ser desfeita.

ParametersJSON Schema
NameRequiredDescriptionDefault
trigger_idYesUUID do trigger a remover

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already mark the tool as destructive (destructiveHint: true). The description adds valuable context beyond that by explicitly stating the action cannot be undone, reinforcing the irreversibility for the agent. It does not address side effects or permissions, but for a single-parameter destructive action this is adequate.

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

Conciseness5/5

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

Two short sentences with no filler. The key warning about permanence is front-loaded and immediately reinforces the destructive nature of the operation.

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

Completeness4/5

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

For a simple delete operation with one documented parameter and destructive annotations, the description is largely complete. It could mention the response/return behavior or cascading effects, but the provided information is sufficient for an agent to invoke the tool safely.

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

Parameters3/5

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

The schema has 100% description coverage for the only parameter (trigger_id with a clear UUID description), so the description does not need to add parameter details. The tool description itself does not explain the parameter, but the schema already fully carries that responsibility.

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

Purpose4/5

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

The description clearly states the action ('Remove um trigger') and emphasizes permanence ('permanentemente', 'não pode ser desfeita'), making it distinct from update/toggle operations. It does not explicitly name sibling tools, but the resource and permanent-deletion semantics are unambiguous.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as toggle_trigger for temporary deactivation. The irreversible nature is noted, but there is no explicit when-to-use or when-not-to-use framing.

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

get_agentB
Read-onlyIdempotent
Inspect

Retorna detalhes completos de um agente, incluindo schemas, triggers e configurações.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesUUID do agente

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds return-content context (schemas, triggers, configurations), but does not disclose operational behaviors such as error handling, permission requirements, or response structure beyond that.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. It immediately conveys the action and the key content categories, and every word contributes to understanding what the tool returns.

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

Completeness4/5

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

For a simple one-parameter read-only fetch, the description is mostly complete: it names the resource, the parameter is fully documented in the schema, and annotations cover safety. The main gap is the unresolved ambiguity with 'get_agent_full', which prevents full confidence in tool selection.

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

Parameters3/5

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

Schema coverage is 100%, and the single parameter 'agent_id' is already described as 'UUID do agente' in the input schema. The tool description adds no additional meaning, format details, or usage nuance for the parameter, so the baseline score applies.

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

Purpose4/5

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

The description states a clear verb ('Retorna') and resource ('detalhes completos de um agente'), and specifies what is included: schemas, triggers, and configurations. However, it does not differentiate this endpoint from the sibling 'get_agent_full', which appears to have an overlapping purpose.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as 'list_agents' or 'get_agent_full'. The description implies it is for fetching details of a single agent, but it does not state exclusions, preconditions, or when a sibling would be more appropriate.

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

get_agent_budgetA
Read-onlyIdempotent
Inspect

Retorna o orçamento (teto de gasto em USD) e o saldo do ciclo atual de um agente. O budget conta TODAS as chamadas LLM do agente, incluindo BYOK. unlimited=true significa sem teto configurado.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesUUID do agente

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds meaningful behavioral context: it counts ALL LLM calls including BYOK, and defines what unlimited=true means. These details go beyond annotations and clarify the semantics of the returned data.

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

Conciseness5/5

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

Two sentences with zero wasted words. The main return values are front-loaded, and the technical detail about BYOK and unlimited is placed after the core message. Every sentence earns its place.

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

Completeness4/5

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

For a getter with one parameter and no output schema, the description adequately states what is returned (budget and balance) and defines key terms (unlimited). It doesn't detail the exact JSON response structure, but with no output schema provided, this level of detail is acceptable. The behavioral context about BYOK rounding it out.

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

Parameters3/5

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

Schema coverage is 100% (agent_id is described as 'UUID do agente'). The description adds no new parameter semantics beyond what the schema provides. Baseline 3 applies because the schema fully documents the only parameter.

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

Purpose4/5

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

The description clearly states the specific verb 'Retorna' (returns) and the resource: the budget (spending cap in USD) and balance of the current cycle for a single agent. It indicates a read operation and implies it's for one agent via 'de um agente', but does not explicitly contrast with list_agent_budgets, which likely handles multiple agents.

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

Usage Guidelines3/5

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

The description implies usage for a single agent's budget but provides no explicit guidance on when to use this tool versus list_agent_budgets or other alternatives. It doesn't mention exclusions or scenarios. The context is clear but not directive, so a 3 is appropriate.

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

get_agent_fullA
Read-onlyIdempotent
Inspect

Retorna visão completa do agente: dados, schemas ativos, triggers, CSPs vinculadas e configuração de publicação.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesUUID do agente

TDQS

A3.8/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful context about what the returned data includes, but it does not disclose response-size limits, authorization expectations, or behavior when some sections are empty or unavailable.

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

Conciseness5/5

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

The description is a single compact sentence that immediately states the tool's purpose and enumerates the included components. There is no filler, repetition, or unnecessary context.

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

Completeness4/5

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

For a read-only aggregate endpoint with one required parameter, the description covers the main expected return categories: data, schemas, triggers, CSPs, and publishing configuration. It stops short of full completeness because there is no output schema and no hint of response structure, such as nesting or whether some sections may be omitted.

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

Parameters3/5

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

The schema has 100% description coverage and fully documents agent_id as 'UUID do agente'. The description does not add anything beyond the schema for the single parameter, which is acceptable given the complete schema coverage.

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?

The description states a specific verb ('Retorna') and resource ('visão completa do agente'), and enumerates the exact contents: data, active schemas, triggers, linked CSPs, and publishing configuration. This differentiates it from more specific siblings like get_agent or list_triggers by establishing it as the aggregate 'full' view.

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

Usage Guidelines3/5

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

The phrase 'visão completa' implies this tool is appropriate when the entire agent state is needed, which gives some contextual guidance. However, it does not explicitly mention when not to use it or name alternatives such as get_agent for basic agent data, so the differentiation from sibling tools is mostly left to inference.

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

get_agent_lineageA
Read-onlyIdempotent
Inspect

Retorna pares orquestrador→subagente que INVOCARAM de fato (via invoke_agent), com contagem de invocações e último uso. Complementa allowed_invoke_agents (que é "pode invocar").

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds meaningful behavioral detail: it filters to real invocations only, includes counts and last-use timestamps, and clarifies the semantic relationship to allowed_invoke_agents.

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

Conciseness5/5

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

Two concise sentences fully convey the tool's purpose and differentiating context. The core action and result are front-loaded, and every sentence earns its place without unnecessary elaboration.

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

Completeness4/5

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

For a zero-parameter read-only tool, the description provides sufficient operational context: what is returned, the invocation filter, the counts, and the last-use timestamp. There is no output schema, but the described shape is simple enough. It could be slightly richer by mentioning ordering or scope, but the essentials are present.

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?

The tool has zero parameters and the schema is empty, so the baseline is 4. The description adds no parameter details because none are needed; nothing about parameters is left unexplained.

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?

The description states a specific verb and resource ('Retorna pares orquestrador→subagente'), defining that it returns actual invocations via invoke_agent, with invocation count and last use. It explicitly differentiates itself from allowed_invoke_agents, so an agent can distinguish its purpose clearly.

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

Usage Guidelines4/5

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

The description clearly indicates this tool is for actual invocations, complementing allowed_invoke_agents (which expresses potential permission). This gives context on when to use it versus the conceptual alternative, though it does not explicitly name sibling tools or provide when-not-to-use conditions.

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

get_agent_metricsA
Read-onlyIdempotent
Inspect

Retorna métricas agregadas de um agente: chamadas LLM (calls, errors, success_rate, tokens, custo, latência p50/p95 — agregação em SQL, sem cap de linhas), uso de tools (amostra das últimas 2000 chamadas, com flag sample_truncated) e sessões. Útil para monitorar performance e custos de um agente em produção. Para saúde de infra do tenant (erros sem agente), use get_tenant_health.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoPeríodo de análise: 1d (último dia), 7d (última semana), 30d (último mês)7d
agent_idYesUUID do agente

TDQS

A4.4/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral details beyond those: SQL aggregation without row cap, tool-call metrics computed from a sample of the last 2000 calls with a sample_truncated flag, and specific latency percentiles. This goes beyond what annotations alone provide.

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

Conciseness5/5

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

Two sentences deliver dense, useful information with no filler. The first sentence front-loads what the tool returns, and the second provides use case and routing to an alternative. Every part earns its place.

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

Completeness4/5

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

With no output schema, the description carries the responsibility of explaining the return content, and it names the key metrics (calls, errors, success_rate, tokens, custo, latency p50/p95, sample_truncated, sessions). Minor details about the exact shape of the sessions portion are omitted, but the tool is callable and its results are sufficiently scoped.

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

Parameters3/5

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

Schema description coverage is 100%, and both parameters already have clear descriptions: agent_id is a UUID and period has an enum with date ranges and defaults. The description does not add new parameter-level semantics, so a baseline of 3 is appropriate.

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?

The description uses a specific verb ('Retorna') and resource ('métricas agregadas de um agente'), then lists the concrete metric families: LLM calls, tool usage, and sessions. It also explicitly distinguishes itself from get_tenant_health, so an agent can tell this tool apart from a closely related sibling.

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?

It states the intended use case: 'monitorar performance e custos de um agente em produção.' It also gives an explicit exclusion with an alternative: for tenant infra health, use get_tenant_health. This gives clear when-to-use versus when-not-to-use guidance.

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

get_api_keyA
Read-onlyIdempotent
Inspect

Retorna detalhes completos de uma API Key específica: nome, status, role, rate limits, estatísticas de uso e tenant associado.

ParametersJSON Schema
NameRequiredDescriptionDefault
key_idYesUUID da API Key

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that it returns full details including usage statistics, but does not disclose behavioral aspects like authentication requirements, error behavior for unknown key_id, or whether the raw key secret is returned.

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

Conciseness5/5

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

A single, front-loaded sentence that states the action and enumerates the return fields without any filler. Every part of the sentence contributes useful information.

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 a one-parameter, read-only operation, the description compensates for the missing output schema by listing the returned fields (name, status, role, rate limits, usage stats, tenant). The annotations cover the side-effect profile, so an agent has enough to invoke this tool correctly.

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

Parameters3/5

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

The input schema already documents key_id as 'UUID da API Key' with 100% coverage. The description adds no additional meaning about the parameter, so the baseline of 3 applies.

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?

The description uses a specific verb ('Retorna') and resource ('uma API Key específica'), and lists the exact fields returned (nome, status, role, rate limits, estatísticas de uso, tenant associado). This clearly distinguishes it from list_api_keys by emphasizing specificity.

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

Usage Guidelines4/5

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

The word 'específica' implies this tool is for fetching one key by ID, contrasting with listing, creating, updating, or deleting API keys among siblings. However, it does not explicitly state alternatives or when-not-to-use, so it is clear but lacks explicit exclusions.

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

get_approval_policyA
Read-onlyIdempotent
Inspect

Retorna uma política de aprovação por ID (nome, stages com aprovadores, is_active).

ParametersJSON Schema
NameRequiredDescriptionDefault
policy_idYesUUID da política

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds the specific return fields, which is useful behavioral context, but it does not disclose error handling, not-found behavior, or whether an inactive policy is still returned. For a simple read operation, this is adequate but not exceptional.

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

Conciseness5/5

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

A single concise sentence that leads with the verb and resource, then immediately states the scope and return fields. Every word contributes information; there is no filler or repetition of schema details.

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

Completeness4/5

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

For a single-parameter read tool with no output schema, the description covers the key elements: what it returns (fields) and how it identifies the resource (by ID). It omits edge cases like non-existent policies or inactive records, but these are minor for such a simple operation, and annotations already confirm the read-only nature.

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

Parameters3/5

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

Schema description coverage is 100% and the single parameter policy_id is well documented as 'UUID da política'. The description's 'por ID' aligns with the parameter meaning but adds no new semantics beyond what the schema already provides. Baseline 3 is appropriate.

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?

The description names a specific verb ('Retorna' = returns), a specific resource (approval policy), and a distinct scope (by ID). It also lists the returned fields (name, stages with approvers, is_active), making it easy to distinguish from list_approval_policies, create_approval_policy, and update_approval_policy even without naming them.

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

Usage Guidelines3/5

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

The phrase 'por ID' implies the tool should be used when a specific policy_id is known, contrasting implicitly with list_approval_policies. However, the description does not explicitly state when to use this tool vs alternatives, nor does it provide any exclusions or conditions. The usage guidance is implied rather than stated.

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

get_consumer_profileA
Read-onlyIdempotent
Inspect

Retorna o perfil agregado de um consumidor (cross-session, cross-agent). Inclui display_name, canais usados, # de sessões, # de turns, lista de agentes que já interagiram, flags de produto e timestamps.

ParametersJSON Schema
NameRequiredDescriptionDefault
consumer_keyYesIdentificador do consumer (WaId/idUsuario/email normalizado). Mesmo valor de agent_sessions.consumer_key.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is established. The description adds meaningful behavioral context by specifying that results are aggregated across sessions and agents and by listing the included data fields, going beyond the annotations.

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

Conciseness5/5

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

The description is a single, focused sentence that front-loads the purpose and then lists the return fields compactly. Every part adds information, with no filler or repetition of the tool name or annotations.

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

Completeness4/5

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

For a low-complexity, single-parameter read-only tool, the description provides a solid summary of the return payload since there is no output schema. The only minor gap is the lack of detail on field types or formats, but the enumerated fields are sufficient for an agent to understand what the tool returns.

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

Parameters3/5

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

The single parameter consumer_key is fully described in the schema, including normalization expectations and its equivalence to agent_sessions.consumer_key. With 100% schema description coverage, the tool description does not need to add parameter details, so the baseline of 3 applies.

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

Purpose4/5

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

The description uses a specific verb and resource ('Retorna o perfil agregado de um consumidor') and enumerates the returned fields, making the tool's function clear. It conveys a distinct scope ('cross-session, cross-agent') that separates it from session-specific siblings like get_session_history, but it does not explicitly name or contrast any sibling.

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

Usage Guidelines3/5

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

The description implies when to use the tool: when an aggregated, cross-session, cross-agent profile of a single consumer is needed. It provides no explicit guidance on when not to use it or which alternative to choose (e.g., list_consumers, list_consumer_sessions, get_session_history).

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

get_cspA
Read-onlyIdempotent
Inspect

Retorna detalhes completos de uma política de segurança, incluindo regras e exceções.

ParametersJSON Schema
NameRequiredDescriptionDefault
csp_idYesUUID da CSP

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already establish readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is known. The description adds that results include rules and exceptions, which is useful given the lack of an output schema, but it goes no further into behavior such as error cases or response shape.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that states the resource, depth of detail, and included content without any filler. Every part contributes useful information.

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

Completeness4/5

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

For a simple read-only lookup by ID, the description plus annotations are largely sufficient. The absence of an output schema is partially mitigated by mentioning rules and exceptions, though a fuller listing of returned fields would make it more complete.

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

Parameters3/5

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

The single parameter csp_id is fully documented in the input schema with type, format, and a description, so schema coverage is 100%. The tool description adds no additional meaning or usage detail about the parameter beyond what the schema already provides.

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?

The description uses a specific verb ('Retorna') with a clear resource ('detalhes completos de uma política de segurança') and specifies the content scope ('incluindo regras e exceções'). This clearly distinguishes it from list-style siblings like list_csps and get_effective_csps.

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

Usage Guidelines3/5

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

The description implies the tool is used when a single CSP's full details are needed by providing a csp_id. However, it does not explicitly mention when to prefer it over alternatives such as list_csps or get_effective_csps, nor does it state any exclusions.

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

get_effective_cspsA
Read-onlyIdempotent
Inspect

Retorna as políticas efetivas para um contexto específico, considerando herança de escopos. A resolução segue: tenant → team → agent → user (mais específico sobrescreve).

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idNoUUID do time para resolver CSPs no escopo team
user_idNoUUID do usuário para resolver CSPs no escopo user
agent_idNoUUID do agente para resolver CSPs no escopo agent

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds meaningful behavioral context by specifying the resolution order tenant → team → agent → user and the override rule, which is not present in the schema or annotations.

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

Conciseness5/5

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

Two concise, front-loaded sentences carry all essential information. There is no repetition of schema details or annotation content.

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

Completeness4/5

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

The description plus schema gives an agent enough to select and invoke the tool: purpose, scopes, and resolution behavior are clear. It does not explain the output shape or whether parameters can be combined, but this is a read-only resolution tool and these gaps are minor.

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

Parameters3/5

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

Schema description coverage is 100%, and each parameter is already described with its scope ('UUID do time para resolver CSPs no escopo team', etc.). The description adds the inheritance ordering but no additional per-parameter semantic detail.

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?

The description uses a specific verb ('Retorna') and names the exact resource ('políticas efetivas') for a specific context. The mention of scope inheritance and hierarchy clearly differentiates it from sibling tools like get_csp or list_csps.

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

Usage Guidelines4/5

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

It clearly states when this tool is appropriate: when a caller needs resolved/effective policies after applying scope inheritance. It does not explicitly name alternatives or exclusions, but the context is unmistakable.

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

get_execution_diagnosticsA
Read-onlyIdempotent
Inspect

Retorna trace de diagnóstico completo de uma execução: timeline cronológica de LLM calls e tool calls, com tokens, latência, modelo usado e finish_reason. Cada llm_call traz cached (tokens LIDOS do cache, com desconto) e cache_creation (tokens ESCRITOS no cache, cobrados a ~1,25× a entrada); summary.cache_creation_tokens soma a escrita do turno — sem esse campo o cost_usd parece não fechar com a tabela de preços (era a #344). execution.metadata traz a correlação que o caller do /stream mandou (trace_id, correlation_id…), ou null. Use o execution_id (campo id do agent_executions) ou root_execution_id retornado pelo chat_with_agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
execution_idYesUUID da execução (id do agent_executions ou root_execution_id)

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds real value on top: the semantics of cached vs cache_creation tokens, the 1.25x write-cost, why summary.cache_creation_tokens matters for cost_usd reconciliation, and that execution.metadata is null when the caller sent no correlation data. This is unusually rich disclosure for a read tool, though it does not cover pagination or result-size limits.

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

Conciseness4/5

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

Front-loads the purpose in the first sentence, then layers detail in a logical order (timeline contents, cache fields, cost caveat, metadata, id sourcing). It is dense and a touch long, and the internal ticket reference '(era a #344)' is noise an agent cannot act on.

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?

There is no output schema, so the description must carry the return-shape burden and it does: it names the timeline, per-call fields, cache token fields, summary aggregation, and metadata correlation. An agent has enough to call it and interpret the result without guessing.

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

Parameters3/5

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

Schema coverage is 100% and the single parameter is fully documented in the schema, including that it accepts an agent_executions id or a root_execution_id. The description repeats that same guidance rather than adding new syntax or format detail, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb+resource and enumerates exactly what the trace contains (chronological timeline of LLM and tool calls with tokens, latency, model, finish_reason). It is clear what the tool returns, but it never distinguishes itself from the similarly named sibling get_execution_trace, which an agent would reasonably confuse it with.

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

Usage Guidelines4/5

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

Gives concrete entry context: use the execution_id from agent_executions.id or the root_execution_id returned by chat_with_agent. That is a clear 'when to use' signal. It stops short of any exclusions or pointing to get_execution_trace as the alternative, so it is not a full 5.

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

get_execution_traceA
Read-onlyIdempotent
Inspect

Trace hierárquico de uma execução multi-agente a partir do root_execution_id: árvore supervisor→subagentes com fases, tool calls e custo por nó. Use get_session_agent_tree quando tiver o session_id em vez do execution_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
root_execution_idYesUUID da execução raiz (root_execution_id)

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already provide the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the description only needs to add behavioral context beyond that. It adds the output structure (supervisor→subagents tree with phases, tool calls, cost per node), which is valuable. Minor gaps like invalid-id behavior are not disclosed, but the read-only and idempotent nature is well covered by annotations.

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

Conciseness5/5

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

Two sentences with no redundancy. The main purpose and output are front-loaded in the first sentence, and the routing guidance in the second adds direct value without padding.

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 a single-parameter read-only tool, the description explains what it does, what input it expects, what it returns, and which sibling to use in the alternative case. The annotations cover safety and idempotency. Nothing essential is missing for the agent to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, meaning the schema already fully documents root_execution_id as 'UUID da execução raiz'. The description reinforces its role in building the trace but adds no new parameter-specific details. Baseline 3 is appropriate since the schema carries the semantic weight.

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?

The description uses a specific verb ('Trace') and resource ('execução multi-agente'), and specifies exactly what it produces: a hierarchical supervisor→subagents tree with phases, tool calls, and cost per node. It also distinguishes itself from the sibling get_session_agent_tree by explicitly stating when that tool should be used instead.

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?

The description gives clear when-to-use guidance (when you have root_execution_id) and explicit when-not-to-use guidance ('Use get_session_agent_tree quando tiver o session_id em vez do execution_id'). This routes the agent to the correct sibling without relying on inference.

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

get_mcp_serverB
Read-onlyIdempotent
Inspect

Retorna detalhes completos de um MCP server, incluindo configuração e capabilities.

ParametersJSON Schema
NameRequiredDescriptionDefault
mcp_server_idYesUUID do MCP server

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe, non-mutating operation. The description adds only marginal context by stating what the response covers (configuration and capabilities), but says nothing about error behavior for unknown IDs or response shape. Given that annotations carry the safety profile, a 3 is appropriate.

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

Conciseness5/5

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

A single, front-loaded sentence with zero filler. It states the action and the scope of the returned data compactly. Nothing could be trimmed without losing meaning, and it is correctly sized for a one-parameter read tool.

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

Completeness4/5

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

For a low-complexity, single-parameter read with strong annotation coverage (readOnly, idempotent, non-destructive), the description is nearly complete: it identifies the target, the parameter, and the scope of returned details. The absence of a return-format description is a minor gap given there is no output schema, but it does not obstruct correct invocation.

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

Parameters3/5

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

Schema description coverage is 100% — the schema already documents mcp_server_id as 'UUID do MCP server' with a uuid format. The description adds nothing about the parameter beyond the schema, so the baseline 3 applies. Since the single parameter is fully documented in the schema, no compensation is needed.

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

Purpose4/5

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

The description states a specific verb ('Retorna' – returns) and resource (complete details of an MCP server), naming the returned content (configuration and capabilities). It is clearly distinguished from CRUD siblings like create/update/delete_mcp_server and from test_mcp_server. It does not explicitly differentiate from list_mcp_servers, but the get-vs-list distinction is easily inferred.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as list_mcp_servers (for enumeration) or test_mcp_server (for connectivity checks). The description implies usage only by restating the function; there are no exclusions, prerequisites, or selection criteria to help an agent choose correctly among the many mcp_server siblings.

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

get_scheduler_statusA
Read-onlyIdempotent
Inspect

Retorna o status atual do serviço de agendamento (SchedulerService). Mostra jobs ativos, próximas execuções e estatísticas.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful context by specifying what status information is returned and that it reflects the current state, which is valuable because there is no output schema. No contradiction with annotations.

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

Conciseness5/5

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

Two brief sentences lead with the core action and resource, then detail the key output categories. Every word earns its place; no fluff or redundant restatement of the title.

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

Completeness4/5

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

For a no-parameter, read-only status tool without an output schema, the description adequately conveys the return scope. It could be more precise about the exact shape of jobs/statistics, but it gives enough for an agent to invoke it and interpret the general response.

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?

The tool has zero parameters and the schema adds no burden, so the baseline of 4 applies. The description does not need to explain parameters and does not omit anything relevant.

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?

The description uses a specific verb ('Retorna') and identifies the resource ('SchedulerService') and the exact kind of information provided (active jobs, upcoming executions, statistics). It clearly distinguishes this as a status/observation tool among the large set of scheduler, trigger, and health-related siblings.

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

Usage Guidelines3/5

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

The description implies the tool is for checking scheduler health and activity, but it does not explicitly state when to use it over alternatives like get_tenant_health, list_triggers, or list_trigger_executions. There is no when/when-not guidance, but the intended context is reasonably clear from the content.

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

get_schemaB
Read-onlyIdempotent
Inspect

Retorna detalhes completos de um schema, incluindo schema_data.

ParametersJSON Schema
NameRequiredDescriptionDefault
schema_idYesUUID do schema

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds some value by noting that the response includes schema_data, but it does not disclose other behavioral details such as not-found behavior or required permissions.

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

Conciseness5/5

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

The description is a single focused sentence with no filler. It front-loads the main purpose and mentions the notable response field without redundancy.

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

Completeness4/5

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

For a simple read-only getter with one well-documented UUID parameter and safety annotations, the description is largely sufficient. It lacks explicit context about when to prefer this over list_schemas and does not describe error cases, but the tool is simple enough that this is a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%: the only parameter, schema_id, is already described as 'UUID do schema'. The description adds no additional meaning to the parameter itself, so the baseline of 3 applies.

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

Purpose4/5

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

The description clearly states a specific operation ('Retorna') and resource ('schema'), and explicitly mentions schema_data in the response. It is unambiguous but does not actively distinguish itself from siblings like list_schemas or validate_schema_data.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus list_schemas, create_schema, or validate_schema_data. The intended usage is only implied by the verb and the required schema_id parameter.

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

get_session_agent_treeA
Read-onlyIdempotent
Inspect

Árvore de agentes de uma SESSÃO (linhagem por parent_session_id, #227): supervisor + subagentes de todos os turnos. Funciona em sessões multi-turno onde o trace por execução não fecha a árvore.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYessession_id da sessão âncora (a do supervisor)
execution_idNoOpcional: restringe a árvore a uma execução específica

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds meaningful behavioral context: the tree spans all turns, uses parent_session_id for lineage, and is suited to multi-turn sessions where execution traces are incomplete.

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

Conciseness4/5

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

Two concise sentences front-load the core concept and then explain the relevant usage context. The internal reference '#227' is minor noise, but overall the description is efficient and readable.

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

Completeness4/5

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

For a read-only tree query with one required parameter, the description and schema together provide enough to select and invoke the tool. It does not describe return shape or potential size, but no output schema exists and the key semantics are covered.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both session_id and execution_id. The description reinforces the session-anchor concept but adds no parameter-level detail beyond the schema.

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

Purpose4/5

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

The description clearly identifies a session-scoped agent tree built from parent_session_id lineage, including supervisor and subagents across turns. It partially differentiates from per-execution tracing, but does not explicitly name or distinguish it from sibling tools like get_execution_trace or get_agent_lineage.

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

Usage Guidelines4/5

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

The description gives a clear usage context: multi-turn sessions where an execution-level trace does not fully represent the tree. It implies the contrast with per-execution tracing but does not explicitly name the alternative tool or state when not to use this one.

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

get_session_historyA
Read-onlyIdempotent
Inspect

Retorna o histórico de mensagens de uma conversa. Filtra mensagens técnicas (tool calls) e retorna apenas interações user/assistant.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesID da sessão (retornado por chat_with_agent ou list_agent_sessions)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so no safety contradiction exists. The description adds meaningful behavioral context beyond the annotations: it explicitly states that technical/tool-call messages are filtered out and only user/assistant interactions are returned, which is valuable for an agent deciding whether this tool fits the task.

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

Conciseness5/5

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

The description is only two sentences, each earning its place: the first states the primary function and resource, and the second clarifies the filtering behavior. It is concise, front-loaded, and free of filler or redundant restatements of the tool name.

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 a tool with one well-documented parameter and read-only/idempotent annotations, this description is complete. It specifies the exact resource, the session identifier concept, and the output filtering behavior. There is no output schema, but the description sufficiently explains what the caller will receive, and no critical calling context is missing.

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

Parameters3/5

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

Schema description coverage is 100%, and the session_id parameter is already described in the schema, including where the ID comes from. The description does not add extra parameter meaning, but it does use the phrase 'de uma conversa', which reinforces that session_id identifies a conversation. With full schema coverage, a baseline of 3 is appropriate.

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?

The description uses a specific verb ('Retorna') and resource ('o histórico de mensagens de uma conversa'), making the tool's function immediately clear. It further differentiates the tool by stating it filters tool-call messages and returns only user/assistant interactions, which separates it from raw trace or execution-history tools.

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

Usage Guidelines3/5

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

The description clearly implies this tool is meant for retrieving cleaned, user-facing conversation history for a given session. However, it does not explicitly state when to prefer this over alternatives, nor does it name any alternatives or exclusions, such as when a technical/raw history tool like get_execution_trace would be more appropriate.

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

get_session_trigger_contextA
Read-onlyIdempotent
Inspect

Navegação reversa: a partir de um session_id, retorna o trigger e a execução que originaram a sessão. Retorna has_trigger: false se a sessão não veio de trigger.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYessession_id da sessão

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds the conditional result has_trigger=false for sessions not originating from a trigger, which is useful behavioral detail beyond the annotations and does not contradict them.

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

Conciseness5/5

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

Two short sentences with no filler. The core verb, resource, and conditional return behavior are all front-loaded, and each clause earns its place.

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

Completeness4/5

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

Even without an output schema, the description conveys the main return values: trigger, execution, and has_trigger flag. It does not specify error handling for invalid or missing session_id, but that is a minor gap for a simple read-only lookup.

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?

The schema's session_id description is circular ('session_id da sessão'), so the description adds meaning by explaining that this parameter is the starting point for tracing back to the originating trigger and execution. It doesn't add format or constraints, but for a single string identifier that is acceptable.

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

Purpose4/5

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

Clear verb+resource: it returns the trigger and originating execution for a given session_id, plus a has_trigger flag. It is not explicitly contrasted with sibling tools, but the reverse-navigation wording makes its unique purpose identifiable.

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

Usage Guidelines3/5

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

Usage context is implied ('a partir de um session_id', reverse navigation), so an agent can infer when to call it. It does not name alternatives or state when not to use it, so guidance is contextual rather than explicit.

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

get_snapshotA
Read-onlyIdempotent
Inspect

Retorna detalhes completos de um snapshot de publicação, incluindo estado do agente, schemas, triggers e MCP servers.

ParametersJSON Schema
NameRequiredDescriptionDefault
snapshot_idYesUUID do snapshot

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the core safety profile is covered. The description adds no behavioral nuance beyond the listed return content; it does not mention pagination, size, permissions, or error behavior, but it also does not contradict the annotations.

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

Conciseness5/5

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

The description is a single, compact sentence that front-loads the operation and resource, then lists the relevant content areas. There is no filler or redundancy.

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

Completeness4/5

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

For a one-parameter read-only retrieval tool without an output schema, the description gives a useful overview of the return content (agent state, schemas, triggers, MCP servers). It is complete enough for correct selection and invocation, though it does not fully specify the response structure or edge-case behavior.

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

Parameters3/5

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

Schema coverage is 100% and the single parameter snapshot_id already has a clear UUID description. The description adds that the snapshot is a 'publication snapshot', which gives useful context, but otherwise does not add meaning beyond what the schema already provides. Baseline 3 is appropriate.

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?

The description states a specific action ('Retorna') and a clear resource ('detalhes completos de um snapshot de publicação') and enumerates meaningful content categories (agent state, schemas, triggers, MCP servers). This distinguishes it from list-style siblings like list_snapshots and from mutation tools like rollback_snapshot.

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

Usage Guidelines3/5

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

The description implies this tool should be used when a complete snapshot's details are needed, and the verb 'Retorna' suggests a read/retrieval operation. However, it does not explicitly state when to prefer this over alternatives such as list_snapshots or get_version, nor does it provide any 'not for X' guidance.

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

get_tenant_healthA
Read-onlyIdempotent
Inspect

Saúde de infra no nível do tenant: erros NÃO atribuíveis a um agente específico (rate limit, auth de provider, infra), agrupados por código canônico. Complementa get_agent_metrics (que é por agente).

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNoFim da janela (ISO 8601). Default: sem filtro.
start_dateNoInício da janela (ISO 8601). Default: sem filtro.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful context about what is returned (infra errors, grouped by canonical code) and what is excluded (agent-specific errors). No contradiction. Could mention output shape more explicitly, but this is adequate.

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

Conciseness5/5

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

Two short sentences with no filler. The core scope is front-loaded, examples are parenthesized, and the sibling comparison is at the end. Every word earns its place.

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 a simple read-only tool with two optional parameters, the schema covers parameter semantics, annotations cover safety, and the description covers data scope and grouping. The relationship to get_agent_metrics completes the context. Nothing critical is missing.

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

Parameters3/5

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

Schema coverage is 100%: both start_date and end_date have descriptions in the schema. The tool description adds no parameter-specific semantics beyond the schema, so the baseline of 3 applies.

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?

The description states a clear domain and scope: tenant-level infrastructure health, showing errors not attributable to a specific agent (rate limit, provider auth, infra), grouped by canonical code. It explicitly differentiates from get_agent_metrics, which is per-agent, so an agent can distinguish this tool without opening the schema.

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?

The description names get_agent_metrics as the complementary sibling and gives a decision rule: use this tool for errors not attributable to a specific agent, as opposed to per-agent metrics. This is explicit when-to-use guidance with an alternative.

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

get_triggerA
Read-onlyIdempotent
Inspect

Retorna detalhes completos de um trigger, incluindo configuração e estatísticas.

ParametersJSON Schema
NameRequiredDescriptionDefault
trigger_idYesUUID do trigger

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already disclose readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds some value by specifying the returned content (configuration and statistics), but it does not describe error behavior, permissions, or other behavioral details.

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

Conciseness5/5

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

The description is a single, focused sentence that conveys the action, resource, and the scope of returned data without unnecessary words.

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

Completeness4/5

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

For a simple single-parameter read tool with strong annotations, the description is adequate: it states what the tool returns and that it covers configuration and statistics. It could be slightly more complete by explicitly mentioning that it fetches one trigger by ID, but the schema supplies that detail.

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

Parameters3/5

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

Schema description coverage is 100%: the only parameter, trigger_id, is already documented as a UUID. The description does not add additional meaning to the parameter, so the baseline score of 3 applies.

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

Purpose4/5

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

The description states a specific verb ('Retorna') and resource ('um trigger'), and adds that it returns complete details including configuration and statistics. This is clear, though it does not explicitly distinguish itself from sibling tools like list_triggers or get_trigger_execution.

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

Usage Guidelines3/5

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

The description implies the tool is used when complete details of a single trigger are needed, and the required trigger_id clarifies the by-ID usage. However, there is no explicit guidance about when to use this tool instead of alternatives such as list_triggers or test_trigger.

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

get_trigger_executionB
Read-onlyIdempotent
Inspect

Retorna detalhes enriquecidos de uma execução: session correlacionada, chamadas LLM, tool calls e métricas agregadas.

ParametersJSON Schema
NameRequiredDescriptionDefault
execution_idYesUUID da execução

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds some behavioral context about the kind of data returned, but it does not disclose potential costs, errors, or limitations of retrieving 'enriched details'.

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

Conciseness5/5

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

The description is a single, well-structured sentence with no filler or redundancy. It front-loads the main purpose and then compactly lists the enriched content categories, so every word earns its place.

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

Completeness4/5

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

For a read-only tool with one required parameter and safety annotations, the description is largely sufficient: it names the resource and the categories of returned data. Since there is no output schema, slightly more detail about the return shape or format could improve completeness, but the current description is adequate for invocation.

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

Parameters3/5

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

Schema description coverage is 100%, and the single parameter execution_id is already documented as 'UUID da execução'. The description does not add meaningful semantics beyond what the schema provides, so the baseline of 3 applies.

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

Purpose4/5

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

The description uses a specific verb ('Retorna') and a clear resource ('detalhes enriquecidos de uma execução'), and it enumerates what the details include: correlated session, LLM calls, tool calls, and aggregated metrics. It does not explicitly differentiate from siblings such as list_trigger_executions or get_execution_trace, but the purpose itself is clear.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus close siblings like list_trigger_executions, get_execution_trace, or get_execution_diagnostics. There are no exclusions, prerequisites, or alternative conditions mentioned, so the agent must infer usage from the tool name alone.

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

get_versionA
Read-onlyIdempotent
Inspect

Retorna detalhes de uma versão específica de um recurso, incluindo dados before/after e campos alterados.

ParametersJSON Schema
NameRequiredDescriptionDefault
versionYesNúmero da versão
resource_idYesUUID do recurso
resource_typeYesTipo do recurso

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already convey read-only, idempotent, and non-destructive behavior. The description adds value by revealing what the response contains—before/after data and changed fields—which is useful context beyond the annotations. No contradiction exists.

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

Conciseness5/5

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

A single, dense sentence that front-loads the action and resource, then adds the key output details. No wasted words or restatement of the title.

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

Completeness4/5

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

This is a simple read-only getter with fully documented required parameters. The description partially compensates for the absent output schema by naming the main response contents, though it does not describe possible error behavior or the overall response envelope. Still, it is adequate for invocation.

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

Parameters3/5

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

All three parameters have schema descriptions covering 100% of the parameter space, so the baseline is 3. The description does not add parameter-level detail, but none is needed given the schema coverage.

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?

The description uses a specific verb ('Retorna') and a clear resource ('versão específica de um recurso'), and it states the distinguishing output ('dados before/after e campos alterados'). This separates get_version from list_versions and compare_versions without needing to inspect the schema.

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

Usage Guidelines4/5

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

The phrase 'versão específica' clearly indicates this tool is for retrieving one version's details rather than listing or comparing versions. It provides clear context but does not explicitly name alternatives or exclusion conditions, so it stops short of a 5.

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

invalidate_mcp_cacheA
Idempotent
Inspect

Invalida o cache de tools MCP. Use quando:

  • Atualizou tools no MCP server externo e quer que o agente carregue as novas tools imediatamente

  • Um MCP server está com problemas e quer forçar reconexão

  • Quer limpar cache após alterar configuração de auth Funciona mesmo sem MCP Client ativo (reseta metadados no DB para forçar reconexão). Sem parâmetros: invalida todo o cache do tenant. Com mcp_server_id: invalida apenas o server especificado.

ParametersJSON Schema
NameRequiredDescriptionDefault
mcp_server_idNoUUID do MCP server específico (omitir para invalidar todo o cache do tenant)

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true and destructiveHint=false, and the description adds useful mechanism-level behavior: it resets metadata in the DB to force reconnection, and works even without an MCP client active. This goes beyond what the annotations convey. No contradiction with annotations is present.

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

Conciseness5/5

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

The description is compact and front-loaded with the primary action, followed by a scannable bulleted list of use cases and a clear explanation of parameter behavior. Every sentence adds meaningful guidance without redundancy.

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?

Given the tool has only one optional parameter, no output schema, and annotations covering idempotency/safety, the description fully equips an agent to decide when to call it and what will happen. It covers scope, side effects, and prerequisite-free behavior.

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?

The schema covers the sole mcp_server_id parameter 100% with a clear description, and the tool description further enriches semantics by explaining the difference between omitting the parameter (invalidate whole tenant cache) versus providing it (invalidate only that server). This adds real value over the schema alone.

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?

The description states a specific verb and resource: 'Invalida o cache de tools MCP', and explains concrete trigger scenarios. It clearly distinguishes itself from sibling tools like delete_mcp_server or test_connection by focusing on cache/metadata invalidation rather than server management or connection testing.

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

Usage Guidelines4/5

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

The description provides explicit 'Use quando' scenarios for when to invoke this tool, covering tool updates, server issues, and auth configuration changes. It also clarifies that it works without an active MCP client. It does not explicitly mention alternatives or when not to use it, but the usage cases are concrete and actionable.

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

list_agent_budgetsA
Read-onlyIdempotent
Inspect

Lista saldo/teto de gasto (USD) de TODOS os agentes do tenant em batch. Útil para visão de burn-rate consolidada sem N+1.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

The annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint false). The description adds useful behavioral context: batch operation, all-agents scope, and USD currency. However, it does not disclose return format, pagination, or what happens when agents have no budget, so it doesn't go beyond a 3.

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

Conciseness5/5

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

Two short sentences carry the entire definition with no filler. The core purpose and scope are front-loaded, and the 'without N+1' phrase adds practical value without adding bulk.

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

Completeness4/5

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

For a parameterless batch read tool with strong annotations, the description is nearly complete. It states what data is returned (budgets/limits in USD) and for whom (all tenants). The only minor gap is the lack of an explicit response shape or field details, but that is not critical for invoking the tool correctly.

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?

The tool has zero parameters, and the schema already reflects that (100% coverage). With no parameters to describe, the baseline of 4 applies; the description correctly focuses on behavior rather than parameters.

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?

The description names a specific action (list), a specific resource (agent budgets in USD), and an explicit scope (all agents in the tenant, in batch). This clearly differentiates it from sibling get_agent_budget, which is singular, even though that sibling is not named directly.

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

Usage Guidelines4/5

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

It tells the agent when this tool is valuable: for a consolidated burn-rate view without N+1 calls. It doesn't explicitly say 'use get_agent_budget for a single agent,' but the batch/all semantics and 'without N+1' make the intended use case clear.

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

list_agent_historyA
Read-onlyIdempotent
Inspect

Timeline completa de todas as alterações de um agente (schemas, triggers, MCP servers). Filtrável por tipo de recurso.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoLimite de resultados (default: 50)
offsetNoOffset para paginação
agent_idYesUUID do agente
resource_typeNoFiltrar por tipo de recurso

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so there is no contradiction. The description adds modest value by clarifying that the timeline covers schemas, triggers, and MCP servers and is filterable by resource type. It does not explain ordering, pagination behavior, auth requirements, or the shape of returned entries.

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

Conciseness5/5

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

The description is compact, front-loaded with the core action and object, and each clause earns its place. The filterability note is a short, separate sentence that adds useful information without bloat.

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

Completeness3/5

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

The essential call contract is present: required agent_id, optional resource_type filter, and pagination parameters are all covered by schema and description. However, without an output schema, the description does not clarify what a timeline entry contains, and it does not route the agent away from overlapping history/version tools. It is adequate but not complete.

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

Parameters3/5

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

Schema description coverage is 100%, so limit, offset, agent_id, and resource_type are already documented in the schema. The description mainly reinforces the resource_type filter through the parenthetical examples, adding little meaning beyond what the enum already provides.

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

Purpose4/5

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

The description clearly names a specific resource and action: it returns a 'complete timeline' of changes to an agent, listing examples (schemas, triggers, MCP servers). This makes the tool's purpose easy to identify. It does not explicitly distinguish itself from similar siblings like list_versions or list_snapshots, so it stops short of a 5.

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

Usage Guidelines3/5

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

The description implies this tool is for inspecting agent change history and mentions filtering by resource type. It does not state when to prefer this tool over sibling tools such as list_versions, list_snapshots, or get_execution_trace, nor does it provide when-not guidance. Usage context is present but only implicit.

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

list_agent_memoryB
Read-onlyIdempotent
Inspect

Lista memórias persistentes de um agente. Retorna fatos, preferências, instruções e contexto armazenados.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMáximo de memórias por página (default 50)
beforeNoPaginação: `updated_at` do último item da página anterior
agent_idYesUUID do agente
categoryNoFiltrar por categoria de memória
user_keyNoFiltrar por user_key específico (identifica o usuário final)

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds only that memories are persistent and enumerates the stored categories; it says nothing about ordering, cursor semantics, or default page size behavior.

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

Conciseness4/5

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

Two short sentences, front-loaded with the verb and resource. The second sentence restates the category enum already present in the schema, a minor redundancy, but overall there is no wasted text.

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

Completeness3/5

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

With no output schema, the description should carry more of the return contract; it names the categories but omits ordering, cursor-based pagination semantics (before = updated_at of last item), and the 200-item cap. Annotations cover the safety dimension, so the remaining gap is moderate rather than severe.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter (limit, before, agent_id, category, user_key) is already documented in the schema, including the enum and the default of 50. The description adds no extra parameter meaning, making the baseline 3 appropriate.

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

Purpose4/5

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

States a specific verb and resource ('Lista memórias persistentes de um agente') and enumerates the memory categories returned (fatos, preferências, instruções, contexto), which maps directly to the enum. It is clearly distinguishable from delete_agent_memory, but it never explicitly contrasts with sibling list/read tools.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no note about pagination order, and no mention of how this relates to the sibling delete_agent_memory or to per-agent reads. Usage is only inferable from the verb 'Lista'.

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

list_agentsB
Read-onlyIdempotent
Inspect

Lista todos os agentes do tenant. Retorna id, nome, status, tipo e metadados.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFiltrar por tipo (ex: assistant, chatbot)
statusNoFiltrar por status
include_archivedNoIncluir agentes arquivados
include_unpublishedNoIncluir agentes despublicados (publicação inativa no tenant). Use para encontrar um agente que sumiu da lista após unpublish e republicá-lo.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already establish read-only, idempotent, and non-destructive behavior, so the bar is lower. The description adds tenant scope and return-field context, but it does not disclose pagination, default filtering behavior, or how 'todos' interacts with the archived/unpublished flags.

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

Conciseness5/5

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

Two short sentences with no filler. The core purpose is front-loaded, and the return shape is stated efficiently.

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

Completeness4/5

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

For a low-complexity list tool with rich annotations and fully documented parameters, the description is mostly complete. It lacks pagination details and explicit sibling differentiation, but an agent can reasonably select and call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The tool description adds no parameter-level meaning, but the schema already documents each parameter, including the nuanced purpose of include_unpublished.

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

Purpose4/5

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

The description clearly identifies the action ('Lista todos os agentes do tenant') and the resource, and it specifies the output fields. It does not explicitly differentiate from the sibling list_published_agents, though 'todos os agentes' implies a broader scope than published-only.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as list_published_agents. It does not mention exclusions, prerequisites, or preferred scenarios beyond the generic listing purpose.

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

list_agent_sessionsA
Read-onlyIdempotent
Inspect

Lista conversas recentes com um agente. Para usuários finais (role member), retorna apenas as próprias sessões; operadores (admin/editor/owner) veem as do tenant.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoLimite de resultados (default: 20, max: 100)
offsetNoOffset para paginação
agent_idYesUUID do agente
roots_onlyNotrue = só sessões raiz (exclui sessões de subagentes, #227)
consumer_keyNoFiltra pelas sessões de um consumidor específico
control_modeNoFiltra por modo de controle da sessão (Sprint 72)

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds valuable behavioral context beyond annotations: the caller's role determines whether sessions are scoped to the caller or to the entire tenant. No contradiction with annotations.

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

Conciseness5/5

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

Two compact sentences with no wasted words. The core action is front-loaded, and the role-based scoping nuance is placed right after, making the description easy to parse.

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

Completeness4/5

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

For a read-only list operation, the description covers the essential behavior, role scoping, and the required agent_id context is in the schema. The absence of an output schema means return shape is not described, which is a minor gap, but not enough to reduce materially.

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

Parameters3/5

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

Schema description coverage is 100%, so all six parameters are already documented in the schema. The description adds no parameter-specific meaning beyond that, so the baseline score of 3 is appropriate.

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?

The description states a specific verb ('Lista') and resource ('conversas recentes com um agente'), and it distinguishes its scope by role: end users see only their own sessions, while operators see tenant-wide sessions. This makes the operation clear without needing to inspect the schema.

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

Usage Guidelines3/5

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

The description implies when to use the tool—listing recent conversations for a specific agent—and gives useful role-based context. However, it does not explicitly name alternative sibling tools like list_consumer_sessions or state when not to use this tool, so the agent must infer selection from context.

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

list_agent_toolsA
Read-onlyIdempotent
Inspect

Lista todas as ferramentas resolvidas de um agente (api_config + MCP tools + core tools). Mostra o que o agente efetivamente terá disponível em runtime, com nome, descrição e parâmetros.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesUUID do agente

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds genuine value beyond them by explaining that the result is the *resolved/effective* toolset (what the agent 'efetivamente terá disponível em runtime'), which is the key behavioral insight an agent needs. It does not mention permissions or pagination, keeping it short of a 5.

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

Conciseness5/5

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

Two sentences, zero filler, and the core scope (resolved tools of an agent) is front-loaded before the clarifying detail about runtime availability. Every clause earns its place.

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

Completeness4/5

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

For a read-only, single-parameter list tool with annotations covering the safety profile and no output schema, the description explains both what is aggregated and what the output contains (name, description, parameters). Only the exact output format/pagination is unstated, which is minor here.

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

Parameters3/5

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

Schema description coverage is 100% with a single required agent_id (uuid), so the schema fully documents the only input. The description mentions 'parâmetros' only as part of the output shape, not to add input semantics. Baseline 3 is appropriate when the schema does the heavy lifting.

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?

The description names a specific verb ('Lista') and a precise resource ('ferramentas resolvidas de um agente') and clarifies scope by enumerating the three sources it aggregates (api_config + MCP tools + core tools). This clearly separates it from siblings like list_mcp_servers or list_agent_memory, which operate on raw configurations rather than the agent's effective runtime toolset.

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer you call this to inspect what tools an agent will actually have at runtime, but there is no explicit when-to-use guidance and no alternative sibling is named (e.g., list_mcp_servers for the raw server list). Nothing misleading, but nothing routing either.

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

list_api_keysA
Read-onlyIdempotent
Inspect

Lista todas as API Keys do tenant. Retorna id, nome, status, prefix, suffix, rate limit e estatísticas.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value by disclosing the return contents (id, name, status, prefix, suffix, rate limit, statistics), which is especially useful given no output schema. It does not contradict the annotations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence: the verb and scope come first, followed by the return field list. Every phrase adds information, and there is no fluff or repetition.

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

Completeness4/5

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

For a simple, parameterless, read-only listing tool, the description provides the tenant scope and return fields, and annotations cover the behavioral safety profile. A minor gap is the absence of pagination or response shape details, but these are not essential for basic invocation.

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?

The tool has zero parameters, so there is no parameter semantics to document. The description reinforces the no-argument, tenant-wide listing behavior and describes what is returned, which is sufficient for a parameterless tool. Baseline for 0 params is 4.

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?

The description uses a specific verb and resource: 'Lista todas as API Keys do tenant', clearly identifying the listing operation and tenant scope. It also enumerates the returned fields, which helps distinguish it from get_api_key, create_api_key, update_api_key, and delete_api_key.

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

Usage Guidelines3/5

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

The intended use as a tenant-wide listing is implied by 'todas as API Keys do tenant' and the tool name, but there is no explicit guidance about when to prefer this over get_api_key or any mention of pagination/filtering conditions. The usage context is clear but not explicitly contrasted with alternatives.

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

list_approval_policiesA
Read-onlyIdempotent
Inspect

Lista políticas de aprovação do tenant (quem aprova o quê). Políticas são referenciadas por CSPs via behavior.approval_policy_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
active_onlyNotrue = apenas políticas ativas

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already cover safety (readOnlyHint=true, idempotentHint=true, destructiveHint=false), lowering the burden on the description. The description adds useful domain context about how policies are referenced, but it does not disclose runtime behaviors such as pagination, ordering, or whether the default output includes inactive policies (the schema's 'active_only' param implies this but is not in the description).

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

Conciseness5/5

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

Two short sentences with no redundancy. The first sentence states the core operation and scope, and the second provides valuable referential context. The description is front-loaded and every word earns its place.

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

Completeness4/5

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

For a very simple tool with one optional parameter, no output schema, and no nested objects, the description is nearly complete: it covers the resource, tenant scope, and semantic context. It lacks explicit sibling differentiation, but the clarity of 'políticas de aprovação do tenant (quem aprova o quê)' makes its function clear enough to call correctly.

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

Parameters3/5

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

The single parameter 'active_only' is fully described in the input schema (description: 'true = apenas políticas ativas') with a default value, so the description does not need to add param-specific meaning. The schema coverage is 100%, and the description adds no additional parameter guidance beyond what the schema already states, warranting the baseline 3.

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?

The description specifies a clear verb ('Lista'), resource ('políticas de aprovação do tenant'), and scope ('do tenant'), and adds a parenthetical definition ('quem aprova o quê') that disambiguates the resource type. The additional note about CSP references via behavior.approval_policy_id further clarifies the role of these policies, distinguishing it from list_approvals, which presumably lists approval records.

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

Usage Guidelines3/5

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

The description implies when to use the tool (to list tenant-level policy definitions) and even hints at its downstream use by CSPs, but it does not explicitly mention alternatives or when not to use it. There is no routing guidance against siblings like get_approval_policy or list_approvals, leaving the agent to infer selection from the name and resource phrasing.

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

list_approvalsA
Read-onlyIdempotent
Inspect

Lista pendências de aprovação HITL do tenant (ações de tools aguardando aprovação de usuário). admin/owner veem todas; editor vê apenas as próprias solicitações e o que pode aprovar. A decisão (aprovar/rejeitar) acontece no chat do aprovador, não por esta API.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMáximo de itens (default: 100, max: 200)
statusNoFiltro de status (default: awaiting_user)awaiting_user

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint, so the description adds value by explaining role-based visibility and the fact that approve/reject actions are not performed here. This boundary clarifies an important behavioral trait beyond the annotations.

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

Conciseness5/5

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

The description is three sentences with no filler. It front-loads the core function, then adds relevant access-control nuance and a key boundary, all in economical prose.

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

Completeness4/5

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

Combined with rich annotations and full schema coverage, the description covers the key behavioral context: role scoping and the fact that decisions happen elsewhere. It is complete enough for an agent to decide when to call it, though it doesn't mention response shape or pagination, which are minor given there is no output schema and the tool is simple.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters limit and status are already fully documented in the schema. The description adds no additional semantic nuance about parameter usage, which is acceptable at the baseline for full schema coverage.

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?

The description states a specific action ('Lista pendências de aprovação HITL do tenant') with a clear resource (approval pending items for tool actions). It further clarifies scope by role (admin/owner vs editor), making it distinct from policy-related siblings like list_approval_policies.

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

Usage Guidelines4/5

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

It provides clear context on when to use this tool: to list HITL approval pendings. It explicitly excludes decision-making ('decisão acontece no chat do aprovador, não por esta API') and describes role-based visibility. However, it does not explicitly name alternatives or state when not to use it in favor of other tools.

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

list_consumersA
Read-onlyIdempotent
Inspect

Lista paginada de consumidores do tenant atual, ordenada por mais recentes (last_seen_at desc). Útil pra dashboards "consumers ativos" ou ranking.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMáximo de registros (até 100)
offsetNoOffset de paginação
searchNoSubstring case-insensitive em display_name ou consumer_key (até 80 chars, sanitizado)
blockedNotrue = só denylisted, false = só não-denylisted, omit = todos

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context such as tenant scoping, pagination, and ordering by last_seen_at desc, but does not go further into return format or edge cases.

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

Conciseness5/5

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

Two sentences with no filler; the core purpose appears immediately and the use-case sentence is useful rather than redundant. Every sentence earns its place.

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

Completeness4/5

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

For a simple paginated list tool with four optional, fully documented parameters and no output schema, the description gives sufficient context: scope, ordering, and typical use. It could mention the shape of returned consumer objects, but that is not critical for selecting and invoking the tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters. The description does not add extra parameter-level semantics; it only speaks to the overall result set ordering.

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?

The description states a specific verb and resource: 'Lista paginada de consumidores do tenant atual', and adds a concrete ordering ('ordenada por mais recentes (last_seen_at desc)'). It is clearly distinct from siblings like get_consumer_profile (single consumer) and list_consumer_sessions (consumer sessions).

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

Usage Guidelines4/5

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

The description gives clear usage context: 'Útil pra dashboards "consumers ativos" ou ranking'. This tells an agent when the tool is valuable, though it does not explicitly mention alternatives or when not to use it.

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

list_consumer_sessionsA
Read-onlyIdempotent
Inspect

Lista as sessões de um consumidor específico (cross-agent, ordenadas por mais recentes). Complementa get_consumer_profile (que retorna só contadores agregados).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMáximo de registros (até 100)
offsetNoOffset de paginação
consumer_keyYesIdentificador do consumer (mesmo de agent_sessions.consumer_key)

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so safety is covered. The description adds useful behavioral context: cross-agent scope and most-recent ordering. It does not describe what fields the returned sessions contain or pagination behavior, but this is moderate added value given the annotations.

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

Conciseness5/5

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

Two compact sentences with no filler. The first sentence front-loads the core behavior and qualifiers; the second sentence adds the comparison to get_consumer_profile, which is directly useful for tool selection.

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

Completeness4/5

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

For a simple read-only list tool, the description plus schema and annotations are sufficient for correct invocation. The main gap is that with no output schema, the agent gets no hint about the shape of the returned sessions, and there is no explicit differentiation from list_agent_sessions.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters limit, offset, and consumer_key are already fully documented. The description reinforces 'consumidor específico' as the consumer_key role but adds no new parameter-level semantics.

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?

The description clearly states the action ('Lista'), the resource ('sessões de um consumidor específico'), and key qualifiers ('cross-agent, ordenadas por mais recentes'). It also distinguishes itself from get_consumer_profile by contrasting sessions with aggregate counters.

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

Usage Guidelines4/5

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

It explicitly mentions when this tool complements get_consumer_profile, telling the agent that get_consumer_profile only returns aggregate counters while this tool returns actual sessions. However, it does not mention alternative session-list tools like list_agent_sessions or state explicit exclusions.

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

list_cspsA
Read-onlyIdempotent
Inspect

Lista todas as políticas de segurança (CSPs) do tenant. Filtrável por escopo, tipo e status.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoFiltrar por escopo da política
is_activeNoFiltrar por status ativo/inativo
policy_typeNoFiltrar por tipo de política
scope_target_idNoFiltrar por ID do alvo (agent_id, team_id, user_id)

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds only the tenant-wide scope and filterability, which are more about purpose than behavior; no extra details on pagination, ordering, or response shape are provided.

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

Conciseness5/5

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

The description is a single compact sentence that front-loads the action and resource, then states the filtering capability. There is no redundant wording or filler.

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

Completeness4/5

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

For a simple, read-only list tool with all parameters optional and fully described in the schema, the description is sufficient for correct invocation. The only notable gap is the lack of mention of return shape or pagination, but that is minor for this tool.

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

Parameters3/5

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

The input schema covers 100% of the parameters with descriptions, so the baseline of 3 applies. The description broadly mentions filtering by scope, type, and status, which maps to scope, policy_type, and is_active, but does not add meaningful detail beyond the schema.

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

Purpose4/5

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

The description uses a specific verb ('Lista') and resource ('políticas de segurança (CSPs) do tenant'), making it clear this is a listing operation. It is distinguishable from the singular get_csp and the computed get_effective_csps by saying it lists all tenant policies, though it does not explicitly name those siblings.

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

Usage Guidelines3/5

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

The description implies usage: it lists all tenant CSPs with optional filters by scope, type, and status. It does not explicitly mention when to prefer this over alternatives like get_csp or get_effective_csps, so some inference is required.

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

list_mcp_serversA
Read-onlyIdempotent
Inspect

Lista os MCP servers vinculados a um agente. MCP servers conectam o agente a tools externas.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFiltrar por status
agent_idYesUUID do agente

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful domain context about what MCP servers are, but it does not disclose behavioral details such as how results are ordered, whether pagination applies, or how the status filter affects results. It is consistent with annotations and does not contradict them.

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

Conciseness5/5

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

The description is only two sentences long, with the primary purpose front-loaded in the first sentence. The second sentence adds concise, relevant context without padding. Every word earns its place and the structure is easy for an agent to parse quickly.

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

Completeness4/5

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

For a simple read-only list operation with 100% schema coverage and no nested objects, the description is largely complete. It identifies the target resource and agent binding, and annotations cover idempotency and safety. It could optionally mention the shape of the returned list, but the tool name and action make that reasonably inferable.

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

Parameters3/5

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

Schema description coverage is 100%, so both agent_id and status are already documented with clear descriptions and an enum for status. The description does not need to repeat parameter details and adds no extra semantic information beyond the schema. A baseline score of 3 is appropriate because the schema carries the parameter documentation burden.

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?

The description states a specific action ('Lista') and a specific resource ('MCP servers vinculados a um agente'), making it clear that this tool returns the MCP servers associated with a given agent. It is easily distinguished from sibling tools like get_mcp_server (single server) and list_agent_tools (tools, not servers). The added explanation that MCP servers connect agents to external tools reinforces the domain context.

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

Usage Guidelines3/5

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

The description implies the main use case: call it to list the MCP servers linked to an agent. However, it does not explicitly state when not to use it or mention alternatives such as get_mcp_server for retrieving a single server or create_mcp_server for adding one. The usage context is clear but not contrasted with sibling options.

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

list_published_agentsA
Read-onlyIdempotent
Inspect

Lista agentes disponíveis para conversa. Retorna apenas agentes publicados do tenant.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds valuable scoping context ('apenas agentes publicados do tenant') beyond what annotations provide, but does not disclose details such as pagination, ordering, or response structure. This is acceptable for a simple list tool, so a 3 is appropriate.

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

Conciseness5/5

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

The description consists of two short, front-loaded sentences with no filler. The first sentence identifies the action and resource, and the second adds the critical published-only scope. Every word earns its place.

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 a parameterless, read-only list tool with rich annotations, the description provides all necessary invocation context: what is listed, what scope is returned, and the tenant boundary. There is no missing information that would prevent an agent from calling it correctly.

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?

The input schema has zero parameters and schema description coverage is 100%, so the schema imposes no burden. With no parameters, the baseline is 4, and the description correctly adds no unnecessary parameter details.

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?

The description clearly states a specific action ('Lista') on a specific resource ('agentes disponíveis para conversa') and further narrows the scope with 'Retorna apenas agentes publicados do tenant.' This distinguishes it from siblings like list_agents by emphasizing the published-only filter.

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

Usage Guidelines4/5

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

The description provides clear context: use this tool when you need published agents available for conversation, scoped to the tenant. It does not explicitly name an alternative like list_agents for non-published agents, but the 'apenas agentes publicados' phrasing makes the intended use case reasonably clear.

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

list_schemasB
Read-onlyIdempotent
Inspect

Lista todos os schemas (configurações) de um agente. Schemas definem persona, tools (API/DB/MCP), skills e workflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesUUID do agente
schema_typeNoFiltrar por tipo de schema
include_inactiveNoIncluir schemas desativados

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so the safety profile is fully covered structurally. The description adds no behavioral context such as the effect of include_inactive, ordering, or result size, but with annotations carrying that burden a 3 is appropriate.

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

Conciseness4/5

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

Two compact sentences, purpose first. The second sentence is domain education rather than tool mechanics, but it is short and useful for disambiguating 'schema' in this system.

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

Completeness4/5

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

For a simple read-only listing tool with full schema coverage and no output schema, the definition gives enough to call it correctly. Remaining gaps (pagination, default filtering behavior beyond include_inactive) are minor.

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

Parameters3/5

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

Schema description coverage is 100%: agent_id, schema_type (with its enum values), and include_inactive are all documented in the schema. The description adds only conceptual framing of what a schema contains, not parameter-level meaning, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Lista todos os schemas de um agente'), so an agent knows exactly what it retrieves. It does not explicitly contrast itself with siblings like get_schema or list_agent_tools, so it stops short of the top band.

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

Usage Guidelines2/5

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

There is no statement of when to use this versus get_schema, update_schema, or the create/toggle/delete schema tools. Usage is only inferable from the name being a plural listing verb, which is the 'no guidance' band.

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

list_secretsA
Read-onlyIdempotent
Inspect

Lista todos os secrets do tenant (sem expor valores). Retorna nome, categoria, descrição, uso e timestamps. Use o campo "name" como secret_ref em api_config.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: values are never returned, and it enumerates the returned metadata fields (name, category, description, usage, timestamps). It does not mention pagination or ordering, keeping it short of a 5.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action and its key constraint, followed by the return shape and a downstream usage hint. No filler, nothing repeated.

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 a parameterless read-only tool with no output schema, the description supplies exactly what is missing: the scope (all tenant secrets), the non-exposure guarantee, the return fields, and how to consume the result. Nothing an agent needs to call it correctly is absent.

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?

The tool takes zero parameters, so the baseline is 4. The description usefully explains what to do with the returned 'name' field (use it as secret_ref in api_config), which is more than the empty schema conveys.

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?

States a specific verb (list) and resource (all tenant secrets), and immediately scopes it with '(sem expor valores)', which both clarifies the operation and reassures the agent it is a metadata-only read. It is trivially distinguishable from the sibling mutation tools create_secret, update_secret and delete_secret.

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

Usage Guidelines3/5

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

There is no explicit when-to-use vs when-not guidance against siblings, but the final sentence ('Use o campo "name" como secret_ref em api_config') implies the purpose is to discover secret references for later configuration. Usage is implied rather than stated, which fits a 3.

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

list_snapshotsA
Read-onlyIdempotent
Inspect

Lista snapshots de publicação de um agente. Cada snapshot captura o estado completo no momento da publicação.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoLimite de resultados (default: 20)
offsetNoOffset para paginação
agent_idYesUUID do agente

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds useful context beyond annotations by explaining that each snapshot 'captura o estado completo no momento da publicação,' which clarifies that snapshots are full-state captures rather than partial updates. No annotation contradiction exists.

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

Conciseness5/5

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

Two concise sentences deliver the core purpose and an important semantic detail without filler. The key action is front-loaded in the first sentence, making it easy for an agent to scan.

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

Completeness4/5

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

For a simple read-only list operation, the description combined with the schema and annotations is mostly sufficient. It does not specify ordering or whether snapshots are returned newest-first, but the parameters and safety profile are adequately covered.

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

Parameters3/5

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

Schema description coverage is 100%, so limit, offset, and agent_id are already documented in the schema. The description does not add any parameter-specific meaning beyond what the schema provides, so the baseline score of 3 is appropriate.

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?

The description states a specific action and resource: 'Lista snapshots de publicação de um agente' (lists publication snapshots of an agent). It also clarifies the semantic meaning of each snapshot as capturing the complete state at publication time, distinguishing this from generic version/history listing tools.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives like list_versions, get_snapshot, or list_agent_history. The description implies its purpose but does not provide context, prerequisites, or exclusions.

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

list_trigger_executionsA
Read-onlyIdempotent
Inspect

Lista execuções de um trigger com paginação. Retorna histórico de execuções incluindo status, tempos e tokens.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoLimite de resultados (default: 20, max: 100)
offsetNoOffset para paginação
trigger_idYesUUID do trigger

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds context by noting that the tool returns execution history with status, times, and tokens, but it does not disclose ordering, default pagination behavior, or any other behavioral nuance beyond the schema.

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

Conciseness5/5

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

The description is two short sentences with no filler. The main action is front-loaded, and each sentence adds relevant information: first the operation, then the returned fields.

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

Completeness4/5

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

For a straightforward paginated list tool with rich annotations, full schema coverage, and no output schema, the description is nearly complete. It identifies required trigger_id, pagination, and the nature of the returned history, though a bit more detail about the output shape or default ordering could push it higher.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents trigger_id, limit, and offset. The description mentions pagination generically, which matches limit/offset, but it does not add detail beyond what the input schema already provides. Baseline 3 is appropriate.

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?

The description states a specific verb ('Lista'), a resource ('execuções de um trigger'), and the scope (historical executions with status, times, and tokens). It clearly differentiates from siblings like get_trigger_execution by indicating this is a paginated list operation rather than a single-item fetch.

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

Usage Guidelines3/5

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

The description implies the tool is used to retrieve paginated trigger execution history, but it does not explicitly state when to prefer it over related tools such as get_trigger_execution or get_execution_trace. There are no exclusions or alternative routing instructions.

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

list_triggersB
Read-onlyIdempotent
Inspect

Lista todos os triggers do tenant. Triggers disparam execuções de agentes automaticamente.

ParametersJSON Schema
NameRequiredDescriptionDefault
enabledNoFiltrar por status (habilitado/desabilitado)
agent_idNoFiltrar por agente específico
trigger_typeNoFiltrar por tipo de trigger

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is fully covered. The description adds conceptual context (triggers fire agent executions automatically) but nothing operational such as pagination, default ordering, or tenant-scoping behavior beyond 'do tenant'.

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

Conciseness4/5

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

Two short sentences, front-loaded with the action and scope. The second sentence is mildly pedagogical but cheap and helps orient an agent unfamiliar with triggers.

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

Completeness3/5

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

For a simple filtered list with rich annotations and full schema coverage, the description is adequate but omits that filtering is possible and gives no hint about result volume or ordering. No output schema exists, yet the return shape is left unexplained.

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

Parameters3/5

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

Schema description coverage is 100% with all three filters (enabled, agent_id, trigger_type) documented in the schema, so the baseline is 3. The description adds no filter semantics of its own, merely implying a full tenant-wide listing.

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

Purpose4/5

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

States a specific verb and resource ('Lista todos os triggers do tenant') and adds a one-line explanation of what a trigger is. It does not distinguish itself from close siblings such as list_trigger_executions, get_trigger, or test_trigger, so it falls short of a 5.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus list_trigger_executions or get_trigger, and no mention that it can be filtered. The second sentence explains what triggers are rather than when to call this listing tool.

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

list_versionsB
Read-onlyIdempotent
Inspect

Lista o histórico de versões de um recurso (agent, schema, trigger ou mcp_server). Cada versão registra uma alteração com before/after.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoLimite de resultados (default: 20, max: 100)
offsetNoOffset para paginação
resource_idYesUUID do recurso
resource_typeYesTipo do recurso

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already cover readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the description does not need to repeat safety traits. It adds a useful detail that each version records a change with before/after, but does not disclose other behavioral aspects like ordering, pagination behavior (beyond schema fields), or any rate limits. This is adequate given the annotations but not rich.

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

Conciseness5/5

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

The description is two concise sentences with the purpose front-loaded. The first sentence states what the tool does and the second adds a relevant detail about the content of versions. No wasted words.

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

Completeness3/5

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

The tool lists versions with before/after, but with no output schema, the description does not specify the return format (e.g., fields like version number, timestamp, author). Pagination is covered by the schema, but ordering and exact response structure are not described. For a list tool, this is adequate but leaves gaps that could confuse an agent.

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

Parameters3/5

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

The input schema has 100% coverage with descriptions for all parameters (resource_type, resource_id, limit, offset). The description does not add any additional parameter semantics beyond what the schema already provides, so the baseline of 3 applies.

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

Purpose4/5

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

The description clearly states the tool lists version history for specific resource types (agent, schema, trigger, mcp_server), with a specific verb and scope. It does not explicitly name sibling tools like get_version or compare_versions, but the 'list' action distinguishes it implicitly, so it falls just short of a 5.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as get_version for a single version or compare_versions for comparing two versions. There are no explicit when-to-use or when-not-to-use instructions, nor any mention of alternatives.

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

publish_agentA
Idempotent
Inspect

Publica ou despublica um agente para o tenant. Publicar torna o agente disponível para uso.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesAção: publicar ou despublicar
agent_idYesUUID do agente

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate this is a write operation (readOnlyHint=false), non-destructive, and idempotent. The description adds minimal context by stating that publishing makes the agent available for use, but it does not disclose further behavioral details such as effects on existing published state or on active sessions.

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

Conciseness5/5

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

Two short, direct sentences convey the action, resource, scope, and key effect without redundancy. The most important information is front-loaded and every word adds value.

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

Completeness4/5

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

For a simple publish/unpublish operation with two required parameters and helpful annotations, the description is largely sufficient. It could mention what unpublishing does to current availability or any prerequisites, but those gaps are minor given the idempotent and non-destructive hints.

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

Parameters3/5

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

The input schema covers 100% of parameter descriptions, so the schema already explains agent_id and action. The description adds no additional parameter-level meaning, leaving it at the baseline for fully documented schemas.

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

Purpose4/5

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

The description clearly names the action (publish/unpublish), the resource (agent), and the tenant scope, and explains the outcome of publishing. It is unambiguous, though it does not explicitly differentiate from sibling tools such as list_published_agents or update_agent.

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

Usage Guidelines3/5

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

The intended use is implied by the action name and description: use it to publish or unpublish an agent for the tenant. However, there is no explicit guidance about when to prefer this tool over alternatives, nor any mention of exclusions or prerequisites.

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

rollback_snapshotA
Destructive
Inspect

Restaura um agente completo para um snapshot de publicação anterior. Restaura agent, schemas, triggers e MCP servers.

ParametersJSON Schema
NameRequiredDescriptionDefault
snapshot_idYesUUID do snapshot para restaurar

TDQS

A3.5/5.0
Behavior3/5

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

The annotations already flag this as destructive and not read-only, so the bar is lower. The description adds useful context by naming exactly what gets restored (agent, schemas, triggers, MCP servers), but it does not explicitly state that the current configuration will be overwritten or that the rollback may be irreversible.

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

Conciseness5/5

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

Two short, purposeful sentences with no filler. The main action is front-loaded and the component list is concise, making the description easy to scan and act on.

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

Completeness3/5

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

For a destructive operation with a single parameter, the description is minimally sufficient: it identifies the resource, the target state, and the affected components. However, it omits guidance on how to obtain the snapshot_id, what happens to the current agent state, and what response or confirmation to expect, especially since there is no output schema.

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

Parameters3/5

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

Schema coverage is 100%, so the one parameter (snapshot_id) is already documented as a UUID. The description adds only mild semantic context by clarifying that the snapshot is a 'publication snapshot,' which is helpful but does not materially expand beyond the schema.

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

Purpose4/5

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

The description states a clear action ('Restaura... um agente completo') and a specific target ('snapshot de publicação anterior'), and it enumerates the affected components: agent, schemas, triggers, and MCP servers. This makes the tool's purpose evident and largely distinguishes it from sibling version-rollback tools, though it does not explicitly name any sibling.

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

Usage Guidelines3/5

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

The usage is implied: use this tool to restore a full agent to a previous publication snapshot. However, the description does not explicitly contrast it with alternatives like rollback_version or mention exclusions, so an agent must infer when this tool is preferred over its siblings.

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

rollback_versionB
Destructive
Inspect

Restaura um recurso individual para uma versão anterior. O trigger grava automaticamente a nova versão resultante do rollback.

ParametersJSON Schema
NameRequiredDescriptionDefault
resource_idYesUUID do recurso
resource_typeYesTipo do recurso
target_versionYesNúmero da versão para restaurar

TDQS

B3.4/5.0
Behavior4/5

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

The description discloses that a rollback automatically results in a new version being recorded, which adds useful behavior beyond the destructiveHint annotation. It does not contradict annotations. The wording 'O trigger' is confusing, but the key behavioral point—rollback produces a new version—is still conveyed.

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

Conciseness4/5

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

The description is concise and front-loaded with the core purpose. The second sentence provides relevant behavioral context, but the ambiguous use of 'trigger' hurts clarity and prevents a top score.

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

Completeness3/5

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

For a destructive tool with no output schema, the description covers the essential purpose, resource scope, and the notable side effect of creating a new version. However, it does not explain what the response contains, whether the operation is reversible beyond the new version record, or how target_version relates to the current version history, leaving it only minimally complete.

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

Parameters3/5

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

Schema description coverage is 100%, so resource_type, resource_id, and target_version are already documented in the schema. The description adds little parameter-level meaning beyond mapping 'recurso' and 'versão anterior' to those fields, which is adequate but not additive.

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

Purpose4/5

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

The description clearly states a specific action and resource: it restores an individual resource to a previous version. The phrase 'recurso individual' helps distinguish this from snapshot-level rollback, though it does not explicitly name the sibling rollback_snapshot. The second sentence about 'trigger' is somewhat ambiguous and slightly muddles the purpose.

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

Usage Guidelines2/5

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

No when-to-use guidance is provided beyond the inherent definition. The description does not mention alternatives such as rollback_snapshot, list_versions, or compare_versions, nor does it explain when this tool should or should not be selected.

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

send_manual_messageAInspect

Envia uma mensagem manual ao consumer pelo MESMO canal outbound do agente (Twilio/Meta/webhook), sem invocar LLM e sem consumir quota. Útil quando atendimento humano assumiu uma sessão (use combinado com set_session_control mode=manual_handoff). Mensagem é gravada no conversation_history com metadata.author=human (F4) — assim o agente NÃO aprende a imitar esse padrão se reassumir. ENVIO ÚNICO: a mesma mensagem para a mesma sessão dentro de 60s é deduplicada (reenvio da tool call NÃO entrega 2x; a resposta vem com idempotent_replay=true). Para controlar a janela, passe idempotency_key — a mesma chave é aceita pelo REST POST /api/v1/sessions/:id/manual-message (header Idempotency-Key).

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesTexto da mensagem manual a enviar
session_idYessession_id text (ou UUID id) da sessão
idempotency_keyNoChave de idempotência opcional (1–200 chars). Sem ela, a chave é derivada do texto da mensagem com janela de 60s.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations mark it as a non-read-only, non-destructive write to an open-world channel, but the description adds substantial context the annotations cannot: no LLM call, no quota burn, storage of metadata.author=human so the agent won't imitate the pattern, and a 60s dedup window surfaced as idempotent_replay in the response.

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

Conciseness4/5

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

The critical facts (verb, channel, no-LLM/no-quota) are front-loaded, and the idempotency behavior follows logically. It is somewhat dense and revisits the 60s window twice (once as behavior, once as parameter note), so a small amount of redundancy keeps it from a 5.

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 a mutation with no output schema, the description covers everything an agent needs: side effects (conversation_history + author=human), resource cost (none), replay semantics, and how to control the dedup window. Nothing material is left unstated.

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 description coverage is 100%, so all three parameters are already documented; baseline is 3. The description adds the cross-surface detail that idempotency_key is accepted by the REST POST /api/v1/sessions/:id/message endpoint via Idempotency-Key header, giving the parameter meaning beyond the schema.

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?

States a specific verb+resource (send a manual message) plus its channel (the agent's same outbound Twilio/Meta/webhook path) and its two defining constraints: no LLM invocation and no quota consumption. This cleanly separates it from LLM-driven siblings like chat_with_agent and from control-plane tools like set_session_control.

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?

Explicitly says when to use it ('quando atendimento humano assumiu uma sessão') and names the complementary tool and mode ('use combinado com set_session_control mode=manual_handoff'). Both the trigger condition and the workflow pairing are given, leaving nothing to inference.

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

set_agent_budgetA
Idempotent
Inspect

Define ou remove o teto de gasto (USD) de um agente. limit_usd=null remove o teto (ilimitado). É também o laço de recuperação: elevar o teto faz um agente parado por budget voltar a rodar no próximo turno. Retorna o saldo recalculado.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesUUID do agente
limit_usdYesTeto em USD (>= 0) ou null para remover o teto

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate idempotent and non-destructive behavior. The description adds valuable context beyond them: null removes the cap, the tool is the recovery loop for budget-stopped agents, and it returns the recalculated balance. No contradiction with annotations.

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

Conciseness4/5

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

The description is compact and front-loaded with the core purpose. The second sentence partially restates schema information about null, but the recovery-loop sentence adds distinctive value without bloat.

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

Completeness4/5

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

Given only two required parameters and no output schema, the description covers the key behavior, the null case, the recovery-loop consequence, and the return value. It could mention permission requirements or invalid-agent behavior, but the essential information for a correct call is present.

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% and the schema already documents limit_usd and agent_id. The description adds meaningful behavioral nuance, especially that limit_usd=null means unlimited and that increasing the limit resumes a stopped agent.

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?

The description uses a specific verb ('Define ou remove') and identifies the exact resource (agent spending cap in USD). It also distinguishes the tool from the sibling getters get_agent_budget and list_agent_budgets by emphasizing the mutation and recovery-loop behavior.

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

Usage Guidelines4/5

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

It clearly explains the context for use: setting or removing a cap, and raising a cap to resume a budget-stopped agent. It does not explicitly name get_agent_budget/list_agent_budgets as alternatives or state when not to use it, but the usage context is strong.

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

set_consumer_denylistA
Idempotent
Inspect

Adiciona ou remove um consumidor do denylist universal do tenant (flag do_not_contact). Quando ativo, todas as mensagens desse consumer são bypassadas pelo Consumer Denylist Gate (sem invocação de LLM/Whisper, sem consumo de quota). Cross-agent — bloqueia em TODOS os agentes do tenant.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoMotivo opcional do bloqueio (audit/telemetria). Apenas usado quando blocked=true.
blockedYestrue = adiciona ao denylist; false = remove.
messageNoMensagem canned opcional a ser entregue ao consumer ao tentar interagir. Vazia = ACK silencioso (default). Apenas usado quando blocked=true.
consumer_keyYesIdentificador do consumer (mesmo de agent_sessions.consumer_key).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and idempotentHint=true; the description adds valuable behavioral context by explaining that active denylisting bypasses the Consumer Denylist Gate, avoids LLM/Whisper and quota usage, and applies across all tenant agents. This goes beyond the annotations and gives the agent a clear picture of the side effects. No contradiction with annotations was found.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core add/remove action, followed by the relevant consequences. Every clause adds meaningful information with no filler or repetition.

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

Completeness4/5

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

The schema and description together cover required parameters, conditional behavior, scope, and side effects. There is no output schema, but the description still gives an agent enough context to invoke the tool correctly; only a minor gap exists around what the response returns, which is not critical for this mutation tool.

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

Parameters3/5

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

The input schema covers 100% of parameters, including conditional usage rules for reason and message (only when blocked=true). The description itself does not add parameter-level meaning beyond the schema, so the baseline of 3 is appropriate.

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?

The description states a specific verb and resource: it adds or removes a consumer from the tenant's universal denylist via the do_not_contact flag. It also makes the scope explicit ('Cross-agent — bloqueia em TODOS os agentes do tenant') and clarifies the functional consequence, so the tool is clearly distinguishable from consumer session or profile tools.

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

Usage Guidelines4/5

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

The description provides clear context for when this tool applies: blocking a consumer from all tenant agents and bypassing the Consumer Denylist Gate without LLM/Whisper or quota consumption. It does not name alternatives or explicit exclusions, but no sibling tool directly competes with this denylist action, so the context is sufficient.

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

set_engagement_controlA
Idempotent
Inspect

Define (action=canned) ou reabre (action=engage) o engajamento de um agente com um consumidor. Com canned, a plataforma responde message a esse consumidor sem acionar o agente, até expirar. user_key = identidade do consumidor (telefone só-dígitos em WhatsApp; idUsuario em webhook; user_id no chat).

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYescanned = parar de engajar e responder message; engage = reabrir
reasonNoMotivo operacional (curto)
messageNoObrigatória com canned. Texto puro, sem links/HTML.
agent_idYesUUID do agente
user_keyYesIdentidade do consumidor (mesma chave de agent_memory / consumer_key)
expires_in_daysNoPrazo do bloqueio em dias. Omitido = sem prazo.

TDQS

A4/5.0
Behavior4/5

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

Annotations cover the safety profile (not read-only, non-destructive, idempotent), so the bar is lower, yet the description still adds real behavior: with canned the platform answers on the agent's behalf without triggering it, and the effect persists only until expiry. That is exactly the kind of consequence an agent needs to know before calling.

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

Conciseness4/5

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

Three sentences, action semantics front-loaded, then the canned behavior, then the identity key. No filler, though the parenthetical channel list makes the last sentence dense.

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

Completeness4/5

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

With six parameters fully documented in the schema, annotations present and no output schema, the description supplies the missing pieces: mode semantics and the behavioral consequence of canned. reason and expires_in_days are left to the schema, which is acceptable at 100% coverage.

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 the baseline is 3, but the description adds value beyond the schema by spelling out what user_key means per channel (digits-only phone on WhatsApp, idUsuario in webhook, user_id in chat) rather than only cross-referencing agent_memory/consumer_key.

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

Purpose4/5

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

Names a specific verb+resource (define/reopen engagement control of an agent with a consumer) and disambiguates the two modes of operation. It does not explicitly differentiate itself from the nearby sibling set_session_control, but an agent can still tell what this tool does.

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

Usage Guidelines4/5

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

States clearly when each action applies: canned stops the agent engaging and auto-replies `message` until expiry, engage reopens. This is genuine when-to-use guidance, though it never names an alternative tool or a when-not-to-use condition.

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

set_session_controlA
Idempotent
Inspect

Define o modo de controle de uma sessão específica (engaged | suspended | manual_handoff). Quando != engaged, o gate sessionControlGate curto-circuita o agent loop sem consumir quota. Use suspended pra pausar; manual_handoff pra sinalizar que atendimento humano assumiu. Com expires_at a pausa é temporária: no prazo a sessão volta sozinha para engaged.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYesengaged = volta ao normal; suspended = pausa; manual_handoff = humano assumiu
reasonNoMotivo opcional (audit/telemetria)
messageNoCanned message opcional. Vazia = ACK silencioso (default). Só aplicada quando mode != engaged.
expires_atNoPrazo opcional (ISO 8601 com fuso, ex.: 2026-10-05T12:00:00Z; no máximo 30 dias) para mode suspended/manual_handoff. No prazo a sessão volta para engaged sozinha. Omitido = sem prazo — e uma nova chamada sem expires_at APAGA o prazo anterior (repita o prazo para só trocar a mensagem).
session_idYessession_id text (ou UUID id) da sessão

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare non-readOnly, idempotent, non-destructive, closed-world. The description adds real behavioral context beyond them: the sessionControlGate short-circuits the agent loop without consuming quota when mode != engaged, and expires_at makes the pause self-reverting. It does not state auth/permission requirements, so not a 5.

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

Conciseness4/5

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

A single tight paragraph, front-loaded with the verb, the mode enum, and the quota/gate behavior, then the expires_at nuance. Every sentence contributes; slightly dense but no filler.

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

Completeness4/5

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

With annotations covering the safety profile and a fully described schema, the description supplies the remaining behavioral essentials (gate short-circuit, quota avoidance, auto-revert). Return values are irrelevant since no output schema exists; only explicit permission requirements are unaddressed.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 and the schema already documents mode, reason, message, expires_at, and the erase-on-omission deadline rule. The description only echoes the mode and expires_at meaning already present in the schema, adding no syntax or format detail the agent lacks.

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?

States a specific verb (set the control mode) and the exact resource (a specific session), then enumerates the three valid modes inline. An agent can tell what this does and which values are legal without opening the schema.

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

Usage Guidelines4/5

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

Gives concrete per-mode guidance: 'suspended' to pause, 'manual_handoff' to signal a human took over, and 'engaged' to return to normal. It stops short of naming when NOT to use it or distinguishing it from the similarly named sibling set_engagement_control, so it is clear but leaves one routing gap.

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

test_mcp_serverAInspect

Testa a conectividade de um MCP server externo com handshake REAL do protocolo (negociação de era) e listagem de tools. Retorna era/versão do protocolo, latência, tools disponíveis e classe de erro em falha. Use para diagnosticar problemas de conexão, auth, endpoint offline ou incompatibilidade de protocolo.

ParametersJSON Schema
NameRequiredDescriptionDefault
mcp_server_idYesUUID do MCP server a testar

TDQS

A4/5.0
Behavior4/5

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

The description adds behavioral context beyond the annotations by specifying that the tool performs a real protocol handshake, lists tools, and returns protocol version, latency, and error class. It is consistent with openWorldHint=true and does not contradict the annotations, though it could mention potential side effects or auth requirements more explicitly.

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

Conciseness5/5

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

The description is three short, front-loaded sentences: action/resource, return values, and use cases. Every sentence earns its place, with no filler or redundancy.

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

Completeness4/5

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

With no output schema, the description usefully enumerates the key return fields: protocol era/version, latency, available tools, and error class. It is complete enough for selecting and invoking the tool, though it leaves minor room for more precision about response structure and latency units.

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

Parameters3/5

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

The only parameter, mcp_server_id, is already fully documented in the input schema with a clear UUID description and 100% schema description coverage. The tool description adds no extra semantic detail about this parameter, which is acceptable under the baseline rule for high coverage.

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

Purpose4/5

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

The description clearly states the action ('Testa a conectividade'), the target resource ('um MCP server externo'), and the distinctive mechanism ('handshake REAL do protocolo', 'listagem de tools'). It does not explicitly contrast itself with the sibling test_connection, so it misses full sibling differentiation.

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

Usage Guidelines4/5

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

It provides explicit when-to-use guidance: 'Use para diagnosticar problemas de conexão, auth, endpoint offline ou incompatibilidade de protocolo.' However, it does not state when not to use it or point to an alternative tool such as test_connection.

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

test_triggerAInspect

Testa um trigger enviando um payload de exemplo. Executa o agente vinculado e retorna o resultado. Útil para verificar se webhook, schedule ou email trigger estão configurados corretamente. ATENÇÃO: executa o agente de verdade (não é dry-run), mas usa uma sessão temporária.

ParametersJSON Schema
NameRequiredDescriptionDefault
trigger_idYesUUID do trigger a testar
test_payloadNoPayload de teste. Para webhook: { "chatInput": "mensagem teste" }. Para schedule: omitir (usa query do cron).

TDQS

A4.4/5.0
Behavior5/5

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

The description explicitly warns that this tool executes the agent for real and is not a dry-run, which is essential behavioral context beyond the annotations. It also discloses that the execution uses a temporary session, giving the agent a clearer picture of side effects and scope. This is consistent with readOnlyHint=false, idempotentHint=false, and destructiveHint=false.

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

Conciseness5/5

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

The description is three sentences long, front-loaded with the core action, followed by the use case and the critical non-dry-run warning. Every sentence contributes essential information without redundancy.

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

Completeness4/5

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

Given no output schema, the description covers the main invocation context: the payload, the executed agent, and the temporary session. It could be slightly more complete by describing the shape of the returned result, but the combination of schema detail and the warning makes it sufficient for correct selection and invocation.

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

Parameters3/5

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

Parameter documentation is already complete in the schema (100% coverage), including trigger_id as the UUID and test_payload with webhook/schedule examples. The description adds little parameter-specific meaning beyond the schema, so the baseline of 3 is appropriate.

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?

The description uses a specific verb and resource: it 'testa um trigger' by sending an example payload, executes the linked agent, and returns the result. This clearly separates it from sibling tools like test_connection or test_mcp_server, which do not execute a linked agent. The purpose is immediately actionable.

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

Usage Guidelines4/5

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

The description states a clear use case: verifying whether webhook, schedule, or email triggers are configured correctly. It does not explicitly name alternatives or say when not to use this tool, but the context is specific enough for an agent to select it appropriately.

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

toggle_cspAInspect

Ativa ou desativa uma política de segurança. CSPs inativas não são aplicadas.

ParametersJSON Schema
NameRequiredDescriptionDefault
csp_idYesUUID da CSP

TDQS

A4/5.0
Behavior4/5

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

Annotations already signal a non-read-only, non-idempotent mutation. The description goes beyond these structured hints by explaining that deactivated CSPs are not enforced, which clarifies the real-world impact of toggling. There is no contradiction with annotations.

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

Conciseness5/5

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

The description consists of two short, front-loaded sentences with no filler. The action verb appears first, and the consequence sentence earns its place by explaining why toggling matters.

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

Completeness4/5

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

For a one-parameter toggle with no output schema, the description adequately covers the action and a key behavioral consequence. It does not mention return values, but for a simple state-change tool this is not a significant gap.

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

Parameters3/5

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

The input schema provides full coverage (100%) for the single parameter csp_id, including a description ('UUID da CSP'). The tool description adds no extra parameter-level detail, which is acceptable given the schema already documents the only required field.

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?

The description clearly states the action ('Ativa ou desativa' – activates or deactivates) on a specific resource ('política de segurança' – security policy/CSP) and adds the operational effect that inactive CSPs are not applied. This distinguishes it from sibling toggle_* tools (toggle_trigger, toggle_schema) and from other CSP CRUD tools.

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

Usage Guidelines3/5

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

The intended use is implied: call this when you want to change a CSP's active state, and the consequence statement ('CSPs inativas não são aplicadas') reinforces when deactivation matters. However, the description does not explicitly mention alternatives (e.g., update_csp, delete_csp) or state when not to use this tool.

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

toggle_schemaAInspect

Ativa ou desativa um schema sem deletá-lo. Schemas inativos não são carregados no runtime do agente.

ParametersJSON Schema
NameRequiredDescriptionDefault
schema_idYesUUID do schema

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate the operation is not read-only, not idempotent, and not destructive. The description adds valuable behavioral context by explaining that inactive schemas are not loaded into the agent runtime, which helps the agent anticipate side effects beyond the annotations.

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

Conciseness5/5

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

The description is only two sentences, with the primary action stated first and the most important behavioral consequence second. Every sentence earns its place and there is no redundancy.

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

Completeness4/5

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

For a simple one-parameter toggle operation, the description covers what the tool does and an important runtime consequence. It does not mention the return value or whether the new state is returned, but given no output schema and a very simple input, this is not a significant gap.

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

Parameters3/5

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

The schema already fully documents the single required parameter, schema_id, with type and format. The description adds no additional parameter-level meaning, but with 100% schema coverage the baseline of 3 is appropriate.

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?

The description clearly states the tool activates or deactivates a schema without deleting it, using a specific verb and resource. It distinguishes itself from delete_schema and update_schema, and its meaning is unambiguous even among many sibling tools.

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

Usage Guidelines4/5

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

The description sets clear context: use this to change a schema's active/inactive state while preserving it. It explicitly excludes deletion behavior, but it does not name sibling alternatives like get_schema or delete_schema for comparison.

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

toggle_triggerAInspect

Habilita ou desabilita um trigger. Triggers desabilitados não disparam execuções.

ParametersJSON Schema
NameRequiredDescriptionDefault
enabledYestrue para habilitar, false para desabilitar
trigger_idYesUUID do trigger

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate this is a write operation (readOnlyHint=false, idempotentHint=false), so the bar for extra disclosure is lower. The description adds a meaningful consequence—'Triggers desabilitados não disparam execuções'—which helps the agent understand the effect of disabling, though it does not go deeper into side effects or reversibility.

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

Conciseness5/5

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

The description is two short sentences with no filler. The primary action is front-loaded, and the second sentence adds valuable behavioral context rather than repeating the schema.

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

Completeness4/5

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

For a simple two-parameter toggle operation, the description is mostly complete: it states the action, the consequence of disabling, and the schema covers all parameters. Minor gaps are the lack of usage guidance and no mention of return format, but these are not critical for a straightforward toggle tool.

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

Parameters3/5

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

Schema description coverage is 100%, and both parameters already have clear descriptions in the input schema ('true para habilitar, false para desabilitar' and 'UUID do trigger'). The tool description adds no parameter-level meaning beyond what the schema provides, so the baseline score of 3 is appropriate.

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?

The description states a specific action ('Habilita ou desabilita') on a specific resource ('um trigger'), making the tool's purpose unambiguous. It also implicitly distinguishes it from trigger CRUD siblings by focusing solely on enable/disable state.

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

Usage Guidelines2/5

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

The description gives no guidance about when to reach for this tool versus alternatives like update_trigger, list_triggers, or the other toggle tools (toggle_csp, toggle_schema). The intended use is only implied by the tool name and the action verb.

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

update_agentA
Idempotent
Inspect

Atualiza campos de um agente existente. Envia apenas os campos que deseja alterar.

ParametersJSON Schema
NameRequiredDescriptionDefault
bioNoNova descrição/biografia
nameNoNovo nome interno
tagsNoNovas tags
typeNoNovo tipo
agent_idYesUUID do agente a atualizar
metadataNoNovos metadados em JSON livre
llm_configNoNova configuração do LLM. model: "provider.modelo" ou "auto". temperature: 0-2. fallback_chain: cadeia de fallback.
visibilityNoNova visibilidade
chat_enabledNoHabilita/desabilita o agente no chat nativo (chat.zihin.ai). Gate por agente do canal chat — default false. Vive em tenant_agents, não no agente.
memory_enabledNoLiga/desliga a memória persistente do agente (tools save/recall/forget_memory + auto-recall). Default false. Contrato: docs/technical/MEMORY-CONTRACT.md.
commercial_nameNoNovo nome comercial
quick_replies_enabledNoPermite a tool core suggest_replies (até 4 chips de resposta rápida ao fim do turno). Só vale onde o canal renderiza: chat nativo ou integração /stream que declara capabilities.blocks=["quick_replies"]. Default true. Desligue para economizar a chamada extra ao modelo.
engagement_control_enabledNoCarrega a tool core end_engagement: o agente pode encerrar o próprio engajamento com um consumidor (gate responde mensagem fixa sem LLM até expirar). Default false. Independente de memory_enabled.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the PATCH-style semantics that only supplied fields change, which is genuinely useful, but says nothing about what happens to omitted fields or auth requirements.

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

Conciseness5/5

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

Two short sentences with zero waste, and the core behavior (partial update) is front-loaded. Every sentence earns its place.

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

Completeness4/5

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

For a 13-parameter mutation with a nested llm_config and no output schema, the rich schema descriptions carry most of the load. The description is complete enough to invoke correctly, though it could note that omitted fields are preserved and whether the update is immediate.

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

Parameters3/5

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

Schema description coverage is 100%, so all 13 parameters including the nested llm_config are documented in the schema itself. The description adds no field-level meaning beyond that, which is the baseline 3 when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb and resource ('Atualiza campos de um agente existente'), making it clearly distinguishable from create_agent, delete_agent, and get_agent. It stops short of explicitly naming which sibling to prefer for reads or creation, so it lands at 4 rather than 5.

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

Usage Guidelines3/5

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

'Envia apenas os campos que deseja alterar' gives a useful partial-update contract, but there is no explicit when-to-use guidance, no mention of prerequisites (e.g. needing the agent to exist or relevant permissions), and no routing to alternatives.

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

update_api_keyA
Idempotent
Inspect

Atualiza o rate_limit_per_minute de uma API Key existente. O novo valor é validado contra o plano do tenant. Evita a necessidade de revogar e recriar a chave apenas para ajustar o RPM.

ParametersJSON Schema
NameRequiredDescriptionDefault
key_idYesUUID da API Key a atualizar
rate_limit_per_minuteYesNovo limite de requisições por minuto (validado contra plano do tenant)

TDQS

A4.2/5.0
Behavior4/5

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

The description adds information beyond annotations by explaining that the new value is validated against the tenant plan and that the operation is non-destructive. This complements the idempotentHint and destructiveHint annotations without contradicting them.

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

Conciseness5/5

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

Three short sentences, with the core action front-loaded and every sentence adding relevant context. No redundant or promotional language.

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

Completeness4/5

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

For a simple two-parameter mutation with complete schema coverage and a strong annotations block, the description provides all essential invocation context. It doesn't describe return values or error cases, but no output schema exists and the tool is straightforward.

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

Parameters3/5

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

Both parameters are already fully described in the schema (100% coverage), so the description adds little semantic value for parameters. It only restates the validation behavior already in the schema's parameter description.

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?

The description names a specific verb ('Atualiza'), the resource ('API Key existente'), and the exact field being updated ('rate_limit_per_minute'), clearly distinguishing it from create/delete/list/get API key siblings in the tool list.

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

Usage Guidelines4/5

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

It explains when this operation is appropriate by stating that it avoids revoking and recreating the key just to adjust RPM, effectively contrasting with delete+create. It lacks an explicit 'when not to use' statement, but the context is unambiguous.

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

update_approval_policyA
Idempotent
Inspect

Atualiza uma política de aprovação (nome, descrição, stages, is_active). is_active=false desativa a política. Envie apenas os campos a alterar.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNovo nome
stagesNoNovos estágios
is_activeNofalse = desativar política
policy_idYesUUID da política
descriptionNoNova descrição

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already indicate this is a non-read-only, idempotent, non-destructive write. The description adds meaningful behavioral context by specifying that is_active=false deactivates the policy and that only changed fields should be sent, which affects how partial/repeated calls behave. No contradiction with annotations.

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

Conciseness5/5

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

Two short sentences in Portuguese: the first states the action and affected fields, the second states the critical deactivation behavior and the partial-update rule. Every sentence earns its place with no redundant wording.

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

Completeness4/5

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

For an update tool with a rich schema and annotations, the description covers the core call requirements: resource, mutable fields, partial update semantics, and the is_active=false special case. It does not describe the return value, but no output schema exists and a short update description can reasonably omit that.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents each parameter; the description adds the partial-update convention that ties the optional fields together but gives no per-parameter meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose4/5

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

The description uses the verb 'Atualiza' (updates) with a specific resource 'política de aprovação' and enumerates the mutable fields (name, description, stages, is_active), making the operation clear. It does not explicitly contrast with sibling create/get/list approval policy tools, so it stops short of full differentiation.

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

Usage Guidelines3/5

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

It provides a clear partial-update instruction: 'Envie apenas os campos a alterar,' which tells the agent how to call the tool. However, it does not state when to prefer this over create_approval_policy or get_approval_policy, nor any exclusions or prerequisites, so usage context is only implied.

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

update_cspA
Idempotent
Inspect

Atualiza uma política de segurança existente. Envia apenas os campos que deseja alterar.

⚠️ rules é SUBSTITUÍDO, não mesclado: reenvie os campos que quer manter. Campo fora do contrato é aceito em silêncio e fica inerte — confira em zihin://schemas/csp_config.

Campos de behavior mais usados:

  • must_not_tools: blocklist de tools que o agente nunca executa (único controle de superfície de tools).

  • max_iterations / max_tool_calls / max_tokens_per_request: tetos de execução por turno.

  • require_approval_for + approval_policy_id: aprovação por escopo (OE-2a, só chat nativo — ver create_approval_policy).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNovo nome
rulesNoNovas regras (substituem as anteriores por completo)
csp_idYesUUID da CSP a atualizar
priorityNoNova prioridade
exceptionsNoNovas exceções
descriptionNoNova descrição

TDQS

A4.7/5.0
Behavior5/5

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

The description adds significant behavioral context beyond the annotations: it explicitly warns that 'rules é SUBSTITUÍDO, não mesclado' (rules are replaced, not merged), and that fields outside the contract are silently accepted and become inert. This is critical side-effect information that the annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=true) do not convey. The description also points to a schema URI for further details, exceeding the baseline.

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

Conciseness5/5

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

The description is well-structured: a clear opening sentence, a critical warning with an emoji for emphasis, and a bullet list of optional fields. Every sentence adds value—no fluff. The most important caveat (rules replacement) is front-loaded, and the list of common fields is concise and actionable.

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

Completeness4/5

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

The description is quite complete for an update tool: it covers the main behavior, the rules replacement, and useful field hints. However, it does not mention expected response or errors, and it doesn't explicitly state success criteria. Given the complexity and absence of an output schema, a 4 is fair—there's a small gap but nothing that would mislead an agent.

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

Parameters5/5

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

Although the schema covers 100% of parameters, the description adds substantial semantics for the 'rules' parameter, explaining the replacement semantics and listing the most-used behavior fields (must_not_tools, max_iterations, etc.). It also clarifies that extra fields are inert. This goes well beyond the schema definitions and helps agents construct valid payloads.

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?

The description clearly states the action: 'Atualiza uma política de segurança existente' (updates an existing security policy), specifying the verb, resource, and that it's for existing policies. This distinguishes it from create_csp, delete_csp, and toggle_csp. The purpose is unambiguous and context-specific.

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

Usage Guidelines4/5

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

It provides explicit usage guidance: 'Envia apenas os campos que deseja alterar' (send only the fields you want to change) and warns about the rules replacement behavior. It also references create_approval_policy for approval fields, which is an alternative tool. However, it doesn't explicitly state when NOT to use this tool (e.g., for creation) or list all alternatives, so a 4 is appropriate.

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

update_mcp_serverC
Idempotent
Inspect

Atualiza configuração de um MCP server existente.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNovo nome
configNoNova configuração
statusNoNovo status
endpointNoNovo endpoint
transportNoNovo tipo de transporte
auth_methodNoNovo método de autenticação
descriptionNoNova descrição
mcp_server_idYesUUID do MCP server

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already carry the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), so the description's job was to add behavioral context beyond that — but it adds none. It does not disclose whether the update is partial (only provided fields change) or a full replacement, whether the 'config' object overwrites the entire configuration, or any validation side effects. For a mutation tool, the update semantics are a significant undisclosed behavior.

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

Conciseness4/5

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

One short sentence with the action front-loaded and zero filler. It is efficient, though it is minimal to the point of bordering on under-specification rather than purposeful conciseness.

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

Completeness2/5

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

For a tool with 8 parameters, 3 enums, a nested config object, and no output schema, a single sentence is insufficient. It leaves open what the tool returns, how partial updates behave, and whether unspecified fields are preserved or reset. The schema and annotations cover a lot, but the description fails to close genuine gaps that an agent would need before calling it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. Each parameter has a terse 'Novo X' ('New X') description conveying that it sets a new value, and three params have enums. The tool description itself adds no parameter-level meaning, and the 'config' object remains vague (additionalProperties: {}) in both schema and description, but the schema does the heavy lifting as expected.

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

Purpose4/5

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

The description 'Atualiza configuração de um MCP server existente' ('Updates configuration of an existing MCP server') states a specific verb (update), resource (MCP server), and scope (existing), which clearly separates it from siblings like create_mcp_server, delete_mcp_server, get_mcp_server, and test_mcp_server. It doesn't explicitly name alternatives, but the action+resource is specific enough. Minor wrinkle: the description is in Portuguese while the tool name and annotation title are English, which could reduce clarity for agents without Portuguese support.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There is no mention of test_mcp_server for validating changed configs, no prerequisites (e.g., server must exist), and no exclusions. The only implied context is 'existing server' (opposed to create_mcp_server for new ones), which is passive rather than explicit.

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

update_schemaA
Idempotent
Inspect

Atualiza os dados (schema_data) de um schema existente — o nome que vale fica dentro de schema_data. Fluxo seguro com mais de um editor: get_schema → use a version como base_version → update_schema (com changelog). Para api_config: endpoint.name DEVE ser igual a tool_definition.name. Para persona_config: usar formato { editor_schema: { persona: { role, objective, ... } } }.

ParametersJSON Schema
NameRequiredDescriptionDefault
changelogNoPor que a mudança foi feita. Fica gravado na versão criada (list_versions/compare_versions).
schema_idYesUUID do schema a atualizar
schema_dataNoNovos dados do schema (mesma estrutura por tipo de create_schema). IMPORTANTE: enviar schema_data completo, não parcial — o objeto substitui o anterior por inteiro.
base_versionNoRecomendado. A `version` que você leu em get_schema. Se o schema mudou desde então (outra pessoa editou), nada é gravado e volta CONFLICT com a versão atual — releia e reaplique. Sem ele, a última escrita vence.

TDQS

A4/5.0
Behavior4/5

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

Annotations only cover the safety profile (idempotent, non-destructive, closed-world); the description adds substantive behavior: schema_data replaces the prior object in full, and a stale base_version yields a CONFLICT with the current version. That is real disclosure beyond the annotations, though the full-replace and CONFLICT semantics are partly duplicated in the schema's own parameter descriptions.

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

Conciseness4/5

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

Four tight sentences, front-loaded with the action and followed by workflow, then per-type constraints; nothing is filler. Slightly dense with back-to-back type-specific rules, but each sentence earns its place.

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

Completeness4/5

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

For a mutation tool with no output schema, the description covers replacement semantics, conflict handling, changelog recording, and per-type payload shape — enough for correct invocation. It omits what a successful response returns, but with no output schema that is a minor gap.

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 the baseline is 3, but the description adds meaning the schema lacks: required type-specific shapes for api_config (endpoint.name must equal tool_definition.name) and persona_config ({ editor_schema: { persona: { role, objective, ... } } }). These constraints are not derivable from the generic 'same structure as create_schema' schema note.

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

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Atualiza os dados (schema_data) de um schema existente' — and clarifies that the effective name lives inside schema_data, which is a meaningful disambiguation. It does not explicitly name a sibling to differentiate from (e.g., create_schema, validate_schema_data, toggle_schema), so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit safe-editing workflow: get_schema → reuse `version` as base_version → update_schema with changelog, which is actionable context for concurrent editors. It does not state when to prefer alternatives such as validate_schema_data first or when this tool should not be used, so no exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_secretA
Idempotent
Inspect

Atualiza o valor de um secret existente. O novo valor é criptografado e substitui o anterior.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNome do secret a atualizar
valueYesNovo valor plaintext
descriptionNoNova descrição (opcional)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already show this is a non-readonly, idempotent, non-destructive update. The description adds meaningful context: the new value is encrypted and replaces the previous value. This discloses the replacement/overwrite behavior, which is useful beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with no filler. Each sentence adds distinct value: what the tool does, and the encryption/replacement behavior. Very efficient for an agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity tool with robust annotations and full schema coverage, the description adequately covers the action, target, and an important behavioral consequence. It could mention the need for the secret to already exist or what happens on failure, but these are minor given the schema and annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already documented. The description adds a relevant encryption detail about the value, but it does not explain the optional description parameter or add significant parameter-level meaning beyond the schema.

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?

The description states a specific verb ('Atualiza' = updates), a specific resource ('secret existente'), and what changes (the value). It clearly differentiates from the sibling tools create_secret and delete_secret by emphasizing 'existing' secret.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage context is implied rather than explicit: the word 'existente' tells an agent this is for changing a secret that already exists. However, it never names alternatives like create_secret or states a when-not-to-use condition, so guidance is limited.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_triggerA
Idempotent
Inspect

Atualiza um trigger existente. Envia apenas os campos que deseja alterar.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNovo nome
api_key_idNoNova API Key para execução
trigger_idYesUUID do trigger a atualizar
descriptionNoNova descrição
trigger_configNoNova configuração do trigger (mesma estrutura por tipo de create_trigger)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a mutating, idempotent, non-destructive operation. The description adds the important PATCH-like behavior: only fields that need changing should be sent. This goes beyond what the annotations provide and helps an agent avoid sending the full object.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, focused sentences convey the core purpose and key usage rule with no wasted words. The most important instruction is front-loaded and immediately actionable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple update operation with complete schema coverage and appropriate annotations, this description is largely sufficient. It lacks explicit mention of return behavior or authorization requirements, but these are not critical given the low complexity and no output schema. It does not leave major ambiguities for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters. The description does not add much parameter-level meaning beyond reinforcing the partial-update intent, which is already implied by the schema's optional fields. Baseline 3 is appropriate.

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?

The description clearly states the operation: 'Atualiza um trigger existente' (updates an existing trigger). This distinguishes it from siblings like create_trigger, delete_trigger, and toggle_trigger. The verb and resource are specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The instruction 'Envia apenas os campos que deseja alterar' provides clear usage guidance for partial updates. It implies that the tool is for modifying an existing trigger rather than creating or deleting one, though it does not explicitly name alternative tools or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_agent_schemasA
Read-onlyIdempotent
Inspect

Valida todos os schemas de um agente. Verifica api_config (endpoints, auth). Retorna schemas válidos, inválidos e warnings — útil antes de publicar o agente. Também cruza persona, skills e workflow com a SUPERFÍCIE EFETIVA de tools (tools carregadas menos must_not_tools da CSP): toda tool citada no texto que o agente não pode chamar vira warning em surface.cited_outside (reason blocked_by_csp ou not_in_surface). É o que evita o agente "ensinar" uma tool que a CSP bloqueou e responder "ferramenta indisponível" ao usuário.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesUUID do agente a validar

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already state read-only, idempotent, non-destructive and closed-world, and the description adds substantive behavior beyond that: what gets checked, the three return buckets (valid, invalid, warnings), and the surface-crossing logic with named warning reasons (blocked_by_csp, not_in_surface). It explains the real-world consequence (agent 'teaching' a blocked tool and answering 'ferramenta indisponível').

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence, followed by the checks, return values, and the deeper surface rationale. It is somewhat dense but every sentence contributes and nothing is redundant.

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?

No output schema exists, so the description carries the burden of describing returns, and it does so concretely (valid schemas, invalid schemas, warnings, surface.cited_outside with reasons). Combined with annotations and a single documented parameter, an agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single agent_id parameter is fully documented in the schema as the agent UUID. The description adds no syntax or format detail beyond that, so baseline 3 applies.

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?

States a specific verb ('valida') and scope ('todos os schemas de um agente') and expands into the concrete checks performed (api_config, endpoints, auth). This distinguishes it from the similarly named sibling validate_schema_data, which validates a single schema's data rather than a whole agent's schema set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'útil antes de publicar o agente' gives a clear trigger context for when to run it. There is no explicit when-not guidance or named alternative (e.g. vs validate_schema_data), so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_schema_dataA
Read-onlyIdempotent
Inspect

Valida schema_data sem salvar (dry-run) — MESMA validação Ajv do create_schema/update_schema. Use SEMPRE antes de criar/atualizar schemas para evitar tentativa e erro. O contrato formal de cada tipo está no resource zihin://schemas/{schema_type}. Retorna erros, warnings e infos de validação.

ParametersJSON Schema
NameRequiredDescriptionDefault
schema_dataYesDados do schema a validar (mesma estrutura de create_schema)
schema_typeYesTipo do schema a validar (todos os tipos canônicos — trigger_config/csp_config são validados aqui mas criados via create_trigger/create_csp)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds real value beyond that by disclosing it runs the SAME Ajv validation as create/update without persisting, and that it returns errors, warnings and infos.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and dry-run qualifier, then the usage rule and return contents. Dense but each sentence carries useful information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by stating it returns erros/warnings/infos, and it links the external contract resource. Complete enough for correct invocation, though it doesn't describe the error payload structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already fully documented in the schema, including the schema_type enum. The description adds no format or syntax detail beyond pointing to the contract resource, so the baseline 3 applies.

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?

States a specific verb (validates) and resource (schema_data) and immediately clarifies the dry-run/no-save scope, which distinguishes it from the mutating create_schema/update_schema siblings it names.

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?

Explicitly instructs 'Use SEMPRE antes de criar/atualizar schemas' and names the create/update alternatives, giving a clear when-to-use rule. It also points to the zihin://schemas/{schema_type} resource for the formal contract.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

whoamiA
Read-onlyIdempotent
Inspect

Identifica o tenant, role e plano da sessão MCP atual. Use para confirmar em qual organização e com qual nível de acesso você está conectado.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the main behavioral traits. The description adds value by specifying the exact information returned (tenant, role, plan), but this is not behavior beyond what annotations imply. The description does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact—two short sentences with no filler. The main action is front-loaded ('Identifica o tenant, role e plano'), and the usage guidance follows directly. Every word earns its place.

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 a tool with no parameters and no output schema, the description provides all necessary context: what it returns (tenant, role, plan) and when to use it. There is no missing information an agent would need to call it correctly.

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?

The tool has zero parameters, so the schema coverage is trivially 100%. The description doesn't need to explain parameters. Baseline for 0 parameters is 4, and the description adds context about what it returns, but not parameter details (since there are none).

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?

The description clearly identifies the tool's purpose: it identifies the tenant, role, and plan of the current MCP session. The verb 'identifies' is specific, and the resource is well-defined. It distinguishes itself from all sibling tools by focusing on the current session context.

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?

The description explicitly states when to use it: 'Use para confirmar em qual organização e com qual nível de acesso você está conectado.' This gives a clear, actionable usage scenario. No alternatives are mentioned, but none are needed as it's a unique introspection tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 23 tool updatesv2.2.2
    • Changedchat_with_agent5 fields changed
      • addedInput schema / properties / bindings
        Added value: +{
        +  "additionalProperties": {
        +    "type": [
        +      "string",
        +      "number",
        +      "boolean",
        +      "null"
        +    ]
        +  },
        +  "description": "Argumentos autoritativos das tools (defaults_from_context / ${context.x}), ex.: idSolicitante. Nunca vão ao modelo nem ficam gravados. Só key admin/owner.",
        +  "type": "object"
        +}
      • addedInput schema / properties / consumer_key
        Added value: +{
        +  "description": "Identidade do consumidor final em nome de quem a mensagem é enviada (ex.: id do usuário no seu sistema, telefone só-dígitos). Escopa memória e controle de engajamento por pessoa. Sem ela, integrações com key admin/owner rodam SEM memória (falha fechada, doc 38 D5). Keys de papel member já identificam a pessoa e NÃO podem falar por outra. Key de papel editor: o campo é IGNORADO. Sob admin/owner a identidade é DECLARADA: reusar o session_id de OUTRA pessoa é recusado com code CONFLICT (omita o session_id para abrir uma conversa nova); uma conversa que ainda não tem identidade é ADOTADA pela primeira declaração e fica travada nela.",
        +  "maxLength": 200,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / context
        Added value: +{
        +  "additionalProperties": {
        +    "type": [
        +      "string",
        +      "number",
        +      "boolean",
        +      "null"
        +    ]
        +  },
        +  "description": "Dados do sistema de origem que o agente lê (ex.: userName). Plano, só escalares, até 2000 caracteres. Vai junto da mensagem do usuário, nunca no system prompt. Chave com nome de segredo é redigida. Só key admin/owner.",
        +  "type": "object"
        +}
      • addedInput schema / properties / metadata
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Dados opacos de correlação (ex.: trace_id). Nunca vão ao modelo; gravados (redigidos) em agent_executions.metadata — consultáveis por trace_id. Objeto plano de escalares, até 20 chaves e 4 KB.",
        +  "type": "object"
        +}
      • addedInput schema / properties / session_from
        Added value: +{
        +  "description": "Nomes de campos de context/bindings que definem a conversa (ex.: [\"hashFornecedor\"]). A sessão é criada na 1ª vez e reaproveitada — mesmo hash do webhook (session_strategy derive). Não combine com session_id. Só key admin/owner.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Removedcreate_connection
    • Changedcreate_mcp_server1 field changed
      • changedInput schema / properties / config / description
        Previous value: -"Configuração adicional (vault_secret_id, headers, timeout)"New value: +"Configuração adicional (vault_secret_id, headers, timeout de conexão, call_timeout_ms por chamada de tool)"
    • Changedcreate_schema4 fields changed
      • changedInput schema / properties / name / description
        Previous value: -"Nome do schema"New value: +"Sem efeito (legado): schema não tem nome próprio. O nome que vale fica dentro de schema_data (ex.: tool_definition.name, skill.name)."
      • changedInput schema / properties / schema_data / description
        Previous value: -"Dados do schema. Estrutura por tipo:\n\nPERSONA_CONFIG: { editor_schema: { persona: { role: string (obrigatório, minLength 3), objective: string (obrigatório, minLength 10), tone?: string, language?: string, expertise?: string[], constraints?: string[], personality_traits?: string[], custom_guidelines?: object, response_style?: { format?: string, rules?: string[], max_response_length?: number } } } }\n\nAPI_CONFIG: { tool_definition: { name: string (snake_case), description: string (min 20 chars), input_schema: { type: \"object\", required: string[], properties: { campo: { type, description } } } }, editor_schema: { api: { base_url: string (URL), endpoints: [{ name: string (DEVE ser igual a tool_definition.name), method: \"GET\"|\"POST\"|\"PUT\"|\"DELETE\", path: string }], auth?: { prefix: \"Bearer\"|\"Basic\", secret_ref: string } } } }\n\nREGRAS CRÍTICAS para API_CONFIG:\n1. endpoint.name DEVE ser IGUAL a tool_definition.name (senão a tool falha no roteamento interno)\n2. Path parameters usam formato ${variavel} (com cifrão). Ex: /resources/${resource_id}/items\n3. Auth: usar \"prefix\" (não \"type\") no objeto auth. Ex: { \"prefix\": \"Bearer\", \"secret_ref\": \"MY_TOKEN\" }. Para Basic Auth, armazenar o secret já em base64\n4. Para input_schema com objetos aninhados (ex: body complexo com sub-objetos), definir cada campo como type \"object\" com suas próprias properties\n\nCAMPOS DE TRANSFORMAÇÃO (opcionais em cada endpoint):\n- default_body: { \"from\": \"noreply@x.com\" } — valores fixos mergeados no body (LLM pode sobrescrever, exceto locked_fields)\n- locked_fields: [\"from\"] — campos do default_body que o LLM NÃO pode sobrescrever (enforcement server-side)\n- field_mapping: { \"body\": \"html\" } — renomeia campos do body antes de enviar (body vira html)\n- array_fields: [\"to\", \"cc\"] — garante que esses campos sejam sempre arrays\n- body_format: \"array\" — wrappa o body inteiro em array [body] (default: \"object\")\n- defaults_from_context: { \"userId\": \"idUsuario\" } — auto-inject de valores do webhookContext quando LLM não fornece\n\nDB_CONFIG: { connection_id: uuid (de private_context_connections), tool_definition: { name, description, input_schema }, query_template: string (SQL com $1, $2...), parameter_mapping: string[] (campos do input na ordem dos $N), result_mapping?: { format: \"raw\"|\"table\"|\"summary\", max_rows?: number } }\n\nWORKFLOW_CONFIG: { steps: [{ id, name, action }], transitions: [{ from, to, condition }], conditions?: array }\n\nSKILL_CONFIG: { skill: { name: string (minLength 3), instructions: string (minLength 50, markdown com regras comportamentais), priority?: integer (0-1000, default 0, maior = aparece primeiro no prompt) } }\n\nContrato formal de cada tipo: resource zihin://schemas/{schema_type}. CSPs não são schemas — campos multi-agent (max_agent_depth, allowed_invoke_agents, child_timeout_ms) vivem em create_csp com policy_type=behavior."New value: +"Dados do schema. Estrutura por tipo:\n\nPERSONA_CONFIG: { editor_schema: { persona: { role: string (obrigatório, minLength 3), objective: string (obrigatório, minLength 10), tone?: string, language?: string, expertise?: string[], constraints?: string[], personality_traits?: string[], custom_guidelines?: object, response_style?: { format?: string, rules?: string[], max_response_length?: number } } } }\n\nAPI_CONFIG: { tool_definition: { name: string (snake_case), description: string (min 20 chars), input_schema: { type: \"object\", required: string[], properties: { campo: { type, description } } } }, editor_schema: { api: { base_url: string (URL), endpoints: [{ name: string (DEVE ser igual a tool_definition.name), method: \"GET\"|\"POST\"|\"PUT\"|\"DELETE\", path: string }], auth?: { prefix: \"Bearer\"|\"Basic\", secret_ref: string } } } }\n\nREGRAS CRÍTICAS para API_CONFIG:\n1. endpoint.name DEVE ser IGUAL a tool_definition.name (senão a tool falha no roteamento interno)\n2. Path parameters usam formato ${variavel} (com cifrão). Ex: /resources/${resource_id}/items\n3. Auth: usar \"prefix\" (não \"type\") no objeto auth. Ex: { \"prefix\": \"Bearer\", \"secret_ref\": \"MY_TOKEN\" }. Para Basic Auth, armazenar o secret já em base64\n4. Para input_schema com objetos aninhados (ex: body complexo com sub-objetos), definir cada campo como type \"object\" com suas próprias properties\n\nCAMPOS DE TRANSFORMAÇÃO (opcionais em cada endpoint):\n- default_body: { \"from\": \"noreply@x.com\" } — valores fixos mergeados no body (LLM pode sobrescrever, exceto locked_fields)\n- locked_fields: [\"from\"] — campos do default_body que o LLM NÃO pode sobrescrever (enforcement server-side)\n- field_mapping: { \"body\": \"html\" } — renomeia campos do body antes de enviar (body vira html)\n- array_fields: [\"to\", \"cc\"] — garante que esses campos sejam sempre arrays\n- body_format: \"array\" — wrappa o body inteiro em array [body] (default: \"object\")\n- defaults_from_context: { \"userId\": \"idUsuario\" } — auto-inject de valores do webhookContext quando LLM não fornece\n\nWORKFLOW_CONFIG: { steps: [{ id, name, action }], transitions: [{ from, to, condition }], conditions?: array }\n\nSKILL_CONFIG: { skill: { name: string (minLength 3), instructions: string (minLength 50, markdown com regras comportamentais), priority?: integer (0-1000, default 0, maior = aparece primeiro no prompt) } }\n\nContrato formal de cada tipo: resource zihin://schemas/{schema_type}. CSPs não são schemas — campos multi-agent (max_agent_depth, allowed_invoke_agents, child_timeout_ms) vivem em create_csp com policy_type=behavior."
      • changedInput schema / properties / schema_type / enum
        Previous value: -[
        -  "persona_config",
        -  "api_config",
        -  "db_config",
        -  "workflow_config",
        -  "skill_config",
        -  "mcp_tool_config",
        -  "mcp_resource_config"
        -]New value: +[
        +  "persona_config",
        +  "api_config",
        +  "workflow_config",
        +  "skill_config",
        +  "mcp_tool_config",
        +  "mcp_resource_config"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "agent_id",
        -  "name",
        -  "schema_type",
        -  "schema_data"
        -]New value: +[
        +  "agent_id",
        +  "schema_type",
        +  "schema_data"
        +]
    • Changedcreate_trigger2 fields changed
      • changedInput schema / properties / trigger_config / description
        Previous value: -"Configuração do trigger. Estrutura por tipo:\n\nWEBHOOK: { query_extraction: { mode: \"field\"|\"full_body\", field?: string (default: \"message\") }, response_adapter: { format: \"ebarn\"|\"slack\"|\"teams\"|\"twiml\"|\"raw\", content_type?: string, max_length?: number }, context_mapping?: { campo: \"$.path.no.body\" }, session_strategy?: { mode: \"derive\"|\"ephemeral\", fields?: string[] }, sender_access?: { mode: \"any\"|\"members\"|\"whitelist\", identity_field?: string, match_column?: string, whitelist?: string[] }, execution?: { mode: \"sync\"|\"async\", ack_response?: { body: string|object, content_type: string }, callback?: { url: string, method: \"POST\"|\"PUT\"|\"PATCH\", content_type: string, auth: { type: \"basic\"|\"bearer\"|\"api_key\"|\"none\", secret_ref: string }, headers?: object, body_template: object|string, response_transform?: { strip_markdown: boolean, max_length: number } }, message_buffer?: { enabled: boolean, window_ms?: number (100-60000, default 5000), max_messages?: number (1-100, default 10), concat_separator?: string (default \"\\n\") }, split_config?: { enabled: boolean, max_chunk_size?: number (100-50000, default 1500), max_chunks?: number (1-50, default 10), chunk_strategy?: \"paragraph\"|\"sentence\"|\"length\" (default \"paragraph\"), numbering?: boolean (default true), inter_chunk_delay_ms?: number (0-10000, default 500) } } }\n\nSCHEDULE: { cron: string (ex: \"0 9 * * *\"), timezone?: string (default: \"America/Sao_Paulo\"), query_template: string (tarefa para o agente), enabled_days?: string[] (ex: [\"monday\",\"friday\"]), session_strategy?: { mode: \"new\"|\"persistent\" }, output?: { channel: \"webhook\"|\"silent\"|\"callback\" (default: \"silent\"), webhook_url?: string (se channel=webhook), callback?: { url, method?, content_type?, auth?: { type, secret_ref }, body_template?, response_transform?: { strip_markdown?, max_length? } } (se channel=callback) }, memory_config?: { enabled: boolean, user_key_field?: string (campo do body_template, ex: \"To\"), strip_prefix?: string (ex: \"whatsapp:\"), ttl_hours?: number (default: 48), user_key?: string (fixo, alternativa a user_key_field) } }\n\nDB_EVENT: { table: string, events: [\"INSERT\"|\"UPDATE\"|\"DELETE\"], conditions?: object }\n\nEMAIL: { allowed_senders: string[], subject_filter?: string }"New value: +"Configuração do trigger. Estrutura por tipo:\n\nWEBHOOK: { query_extraction: { mode: \"field\"|\"full_body\", field?: string (default: \"message\") }, response_adapter: { format: \"ebarn\"|\"slack\"|\"teams\"|\"twiml\"|\"raw\", content_type?: string, max_length?: number }, context_mapping?: { campo: \"$.path.no.body\" }, session_strategy?: { mode: \"derive\"|\"ephemeral\", fields?: string[] }, sender_access?: { mode: \"any\"|\"members\"|\"whitelist\", identity_field?: string, match_column?: string, whitelist?: string[] }, execution?: { mode: \"sync\"|\"async\", ack_response?: { body: string|object, content_type: string }, callback?: { url: string, method: \"POST\"|\"PUT\"|\"PATCH\", content_type: string, auth: { type: \"basic\"|\"bearer\"|\"api_key\"|\"none\", secret_ref: string }, headers?: object, body_template: object|string, response_transform?: { strip_markdown: boolean, max_length: number } }, message_buffer?: { enabled: boolean, window_ms?: number (100-60000, default 5000), max_messages?: number (1-100, default 10), concat_separator?: string (default \"\\n\") }, split_config?: { enabled: boolean, max_chunk_size?: number (100-50000, default 1500), max_chunks?: number (1-50, default 10), chunk_strategy?: \"paragraph\"|\"sentence\"|\"length\" (default \"paragraph\"), numbering?: boolean (default true), inter_chunk_delay_ms?: number (0-10000, default 500) } } }\n\nSCHEDULE: { cron: string (ex: \"0 9 * * *\"), timezone?: string (default: \"America/Sao_Paulo\"), query_template: string (tarefa para o agente), enabled_days?: string[] (ex: [\"monday\",\"friday\"]), session_strategy?: { mode: \"new\" } (sessão nova a cada execução; é o único modo aceito para schedule), output?: { channel: \"silent\"|\"webhook\"|\"callback\"|\"user\" (default: \"silent\"; user = SPEC D: entrega na sessão do chat nativo + push, exige target: { field: \"user_id\"|\"consumer_key\", value }), webhook_url?: string (se channel=webhook), callback?: { url, method?, content_type?, auth?: { type, secret_ref }, body_template?, response_transform?: { strip_markdown?, max_length? } } (se channel=callback) } } — memory_config é REJEITADO pelo servidor (doc loop-review/38, onda 3): o resultado do schedule é entregue como MENSAGEM, use output.channel=\"user\"|\"callback\"|\"webhook\"\n\nEMAIL: { allowed_senders: string[], subject_filter?: string }"
      • changedInput schema / properties / trigger_type / enum
        Previous value: -[
        -  "webhook",
        -  "db_event",
        -  "email",
        -  "schedule"
        -]New value: +[
        +  "webhook",
        +  "email",
        +  "schedule"
        +]
    • Changeddelete_agent_memory1 field changed
      • addedInput schema / properties / scope
        Added value: +{
        +  "description": "Escopo da memória (default agent_user). A mesma chave pode existir em escopos diferentes.",
        +  "enum": [
        +    "agent_user",
        +    "tenant_user",
        +    "tenant_global"
        +  ],
        +  "type": "string"
        +}
    • Removeddelete_connection
    • Removedget_connection
    • Removedget_connection_schema
    • Removedget_connection_semantic
    • Changedlist_agent_memory3 fields changed
      • addedInput schema / properties / before
        Added value: +{
        +  "description": "Paginação: `updated_at` do último item da página anterior",
        +  "type": "string"
        +}
      • changedInput schema / properties / category / enum
        Previous value: -[
        -  "fact",
        -  "preference",
        -  "instruction",
        -  "context",
        -  "schedule_report"
        -]New value: +[
        +  "fact",
        +  "preference",
        +  "instruction",
        +  "context"
        +]
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Máximo de memórias por página (default 50)",
        +  "maximum": 200,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Removedlist_connections
    • Changedlist_schemas1 field changed
      • changedInput schema / properties / schema_type / enum
        Previous value: -[
        -  "persona_config",
        -  "api_config",
        -  "db_config",
        -  "workflow_config",
        -  "skill_config",
        -  "mcp_tool_config",
        -  "mcp_resource_config"
        -]New value: +[
        +  "persona_config",
        +  "api_config",
        +  "workflow_config",
        +  "skill_config",
        +  "mcp_tool_config",
        +  "mcp_resource_config"
        +]
    • Changedlist_triggers1 field changed
      • changedInput schema / properties / trigger_type / enum
        Previous value: -[
        -  "webhook",
        -  "db_event",
        -  "email",
        -  "schedule"
        -]New value: +[
        +  "webhook",
        +  "email",
        +  "schedule"
        +]
    • Removedrefresh_connection_schema
    • Changedsend_manual_message1 field changed
      • addedInput schema / properties / idempotency_key
        Added value: +{
        +  "description": "Chave de idempotência opcional (1–200 chars). Sem ela, a chave é derivada do texto da mensagem com janela de 60s.",
        +  "maxLength": 200,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Addedset_engagement_control
    • Changedset_session_control1 field changed
      • addedInput schema / properties / expires_at
        Added value: +{
        +  "description": "Prazo opcional (ISO 8601 com fuso, ex.: 2026-10-05T12:00:00Z; no máximo 30 dias) para mode suspended/manual_handoff. No prazo a sessão volta para engaged sozinha. Omitido = sem prazo — e uma nova chamada sem expires_at APAGA o prazo anterior (repita o prazo para só trocar a mensagem).",
        +  "type": "string"
        +}
    • Removedtest_connection
    • Changedupdate_agent3 fields changed
      • addedInput schema / properties / engagement_control_enabled
        Added value: +{
        +  "description": "Carrega a tool core end_engagement: o agente pode encerrar o próprio engajamento com um consumidor (gate responde mensagem fixa sem LLM até expirar). Default false. Independente de memory_enabled.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / memory_enabled
        Added value: +{
        +  "description": "Liga/desliga a memória persistente do agente (tools save/recall/forget_memory + auto-recall). Default false. Contrato: docs/technical/MEMORY-CONTRACT.md.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / quick_replies_enabled
        Added value: +{
        +  "description": "Permite a tool core suggest_replies (até 4 chips de resposta rápida ao fim do turno). Só vale onde o canal renderiza: chat nativo ou integração /stream que declara capabilities.blocks=[\"quick_replies\"]. Default true. Desligue para economizar a chamada extra ao modelo.",
        +  "type": "boolean"
        +}
    • Removedupdate_connection
    • Changedupdate_schema4 fields changed
      • addedInput schema / properties / base_version
        Added value: +{
        +  "description": "Recomendado. A `version` que você leu em get_schema. Se o schema mudou desde então (outra pessoa editou), nada é gravado e volta CONFLICT com a versão atual — releia e reaplique. Sem ele, a última escrita vence.",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / changelog
        Added value: +{
        +  "description": "Por que a mudança foi feita. Fica gravado na versão criada (list_versions/compare_versions).",
        +  "maxLength": 500,
        +  "type": "string"
        +}
      • removedInput schema / properties / description
        Removed value: -{
        -  "description": "Nova descrição",
        -  "type": "string"
        -}
      • removedInput schema / properties / name
        Removed value: -{
        -  "description": "Novo nome",
        -  "minLength": 1,
        -  "type": "string"
        -}
    • Changedvalidate_schema_data1 field changed
      • changedInput schema / properties / schema_type / enum
        Previous value: -[
        -  "persona_config",
        -  "api_config",
        -  "db_config",
        -  "workflow_config",
        -  "skill_config",
        -  "trigger_config",
        -  "mcp_tool_config",
        -  "mcp_resource_config",
        -  "csp_config"
        -]New value: +[
        +  "persona_config",
        +  "api_config",
        +  "workflow_config",
        +  "skill_config",
        +  "trigger_config",
        +  "mcp_tool_config",
        +  "mcp_resource_config",
        +  "csp_config"
        +]
  2. 96 tool updatesv0.1.0
    • First observedcancel_agent_turn
    • First observedchat_with_agent
    • First observedclone_agent
    • First observedcompare_versions
    • First observedcreate_agent
    • First observedcreate_api_key
    • First observedcreate_approval_policy
    • First observedcreate_connection
    • First observedcreate_csp
    • First observedcreate_mcp_server
    • First observedcreate_schema
    • First observedcreate_secret
    • First observedcreate_trigger
    • First observeddelete_agent
    • First observeddelete_agent_memory
    • First observeddelete_api_key
    • First observeddelete_connection
    • First observeddelete_csp
    • First observeddelete_mcp_server
    • First observeddelete_schema
    • First observeddelete_secret
    • First observeddelete_trigger
    • First observedget_agent
    • First observedget_agent_budget
    • First observedget_agent_full
    • First observedget_agent_lineage
    • First observedget_agent_metrics
    • First observedget_api_key
    • First observedget_approval_policy
    • First observedget_connection
    • First observedget_connection_schema
    • First observedget_connection_semantic
    • First observedget_consumer_profile
    • First observedget_csp
    • First observedget_effective_csps
    • First observedget_execution_diagnostics
    • First observedget_execution_trace
    • First observedget_mcp_server
    • First observedget_scheduler_status
    • First observedget_schema
    • First observedget_session_agent_tree
    • First observedget_session_history
    • First observedget_session_trigger_context
    • First observedget_snapshot
    • First observedget_tenant_health
    • First observedget_trigger
    • First observedget_trigger_execution
    • First observedget_version
    • First observedinvalidate_mcp_cache
    • First observedlist_agent_budgets
    • First observedlist_agent_history
    • First observedlist_agent_memory
    • First observedlist_agent_sessions
    • First observedlist_agent_tools
    • First observedlist_agents
    • First observedlist_api_keys
    • First observedlist_approval_policies
    • First observedlist_approvals
    • First observedlist_connections
    • First observedlist_consumer_sessions
    • First observedlist_consumers
    • First observedlist_csps
    • First observedlist_mcp_servers
    • First observedlist_published_agents
    • First observedlist_schemas
    • First observedlist_secrets
    • First observedlist_snapshots
    • First observedlist_trigger_executions
    • First observedlist_triggers
    • First observedlist_versions
    • First observedpublish_agent
    • First observedrefresh_connection_schema
    • First observedrollback_snapshot
    • First observedrollback_version
    • First observedsend_manual_message
    • First observedset_agent_budget
    • First observedset_consumer_denylist
    • First observedset_session_control
    • First observedtest_connection
    • First observedtest_mcp_server
    • First observedtest_trigger
    • First observedtoggle_csp
    • First observedtoggle_schema
    • First observedtoggle_trigger
    • First observedupdate_agent
    • First observedupdate_api_key
    • First observedupdate_approval_policy
    • First observedupdate_connection
    • First observedupdate_csp
    • First observedupdate_mcp_server
    • First observedupdate_schema
    • First observedupdate_secret
    • First observedupdate_trigger
    • First observedvalidate_agent_schemas
    • First observedvalidate_schema_data
    • First observedwhoami

TDQS

A3.6/5.0

Scored across 88 tools

Disambiguation4/5

Most tools target clearly distinct resources and actions, and the descriptions explicitly cross-reference siblings (e.g., get_agent vs get_agent_full, get_tenant_health vs get_agent_metrics, session-related tools). Some clusters like set_session_control/set_engagement_control/set_consumer_denylist and the four session-inspection tools (list_agent_sessions, list_consumer_sessions, get_session_history, get_session_agent_tree) risk misselection, but the descriptions disambiguate reasonably well.

Naming Consistency4/5

Overwhelmingly consistent snake_case verb_noun pattern (list_/get_/create_/update_/delete_/toggle_/set_/validate_/test_/rollback_/compare_). The only notable deviation is 'whoami', which breaks the verb_noun convention, but it is a single outlier in an otherwise uniform scheme.

Tool Count2/5

88 tools is very heavy and well past the threshold where an agent can reliably scan and select; even with a genuinely broad platform domain, the surface is over-large. Many CRUD families (agents, schemas, triggers, csp, secrets, mcp servers, api keys, approval policies, budgets, versions, snapshots, sessions) inflate the set.

Completeness4/5

Coverage is remarkably full: CRUD for agents, schemas, triggers, CSPs, secrets, MCP servers, API keys, approval policies, budgets, plus metrics, versions, snapshots and session inspection. Minor gaps exist, e.g. there is list/delete for agent memory but no explicit create/update memory tool, and no consumer update/delete.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A proxy server that bridges AI agents and external APIs by dynamically translating OpenAPI specifications into standardized MCP tools, enabling seamless interaction without custom integration code.
    69
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A centralized management platform that aggregates multiple Model Context Protocol (MCP) servers into a single unified endpoint for AI agents. It provides a web interface for hot-swappable tool management, proxying of existing servers, and AI-powered generation of custom MCP plugins.
    1
    -
  • F
    license
    A
    quality
    F
    maintenance
    MCP server that exposes 300+ AI agents as tools via a single API key. Supports listing agents, invoking any agent with chat-completion style messages, checking agent health, and retrieving platform statistics.
    5
    4
    -