Skip to main content
Glama
leomc06

mcp-teste-llm2

by leomc06

MCP + Ollama — natural language queries to a Postgres database

Read-only MCP (Model Context Protocol) server + local agent backend that translates Portuguese questions into safe SQL queries, using a local LLM (Ollama) to decide which "tool" to call. The sample data are fictitious: service orders and customers.

How it works

Usuário (interface web)
  ↓ pergunta em português
Backend agente (agent/server.js)
  ↓ roteamento determinístico (regex) OU decisão do LLM
Ollama (function calling, modelo qwen2.5:3b)
  ↓ escolhe uma tool + argumentos
Cliente MCP (agent/mcp-client.js)
  ↓ JSON-RPC via STDIO
Servidor MCP (src/server.js)
  ↓ SQL parametrizado, usuário somente-leitura
PostgreSQL

Security points worth highlighting:

  • The MCP server only runs parameterized SELECTs; Postgres connects with a dedicated user (mcp_reader) that only has GRANT SELECT, runs in a read-only transaction (default_transaction_read_only), and has a short statement_timeout.

  • Before calling the LLM, the backend already blocks questions that ask for writes (agent/write-policy.js) — it doesn't rely on the model behaving well.

  • Whenever the question matches a known pattern (agent/os-routing.js, agent/client-routing.js), the tool and arguments are chosen by rule, not by the LLM — more predictable and cheaper. The LLM only decides freely when the question is ambiguous.

Related MCP server: kond-royalties-agent

Requirements

  • Node.js 20+

  • npm

  • Docker and Docker Compose

  • Ollama installed locally, with the qwen2.5:3b model

Step-by-step to run from scratch

1. Clone and install dependencies

git clone https://github.com/leomc06/mcp-teste-llm2.git
cd mcp-teste-llm2
npm install

2. Configure environment variables

cp .env.example .env

Edit .env and replace the values marked as troque (user, password, and name of the Postgres database, and the password of the read-only user mcp_reader). The .env is never versioned — make sure it doesn't show up in git status.

3. Start PostgreSQL

docker compose up -d

This creates the mcp-teste-llm container and automatically runs, on the first volume start, the db/init.sh script — which creates the tables, the sample data, and the mcp_reader user. The migrations live in db/migrations/ and are applied in order (001, 002, 003, ...) via \ir inside init.sh.

If the container already exists from a previous run and you add a new migration, init.sh will not run again on its own (the volume already has data). Apply the migration manually:

docker compose exec -T postgres psql -U <POSTGRES_USER> -d <POSTGRES_DB> -f - < db/migrations/00X_nome.sql

4. Prepare Ollama

sudo systemctl start ollama
ollama pull qwen2.5:3b
npm test

Runs node --check on all files and the node --test suite (only routing and formatting logic, no need for Postgres or Ollama to be running).

6. Start the agent backend

npm run start:agent

The backend starts the MCP server automatically (via STDIO), connects to Postgres, and serves the web interface. Access:

http://127.0.0.1:3100

Ask questions like:

  • "Which OS orders are overdue?"

  • "List the OS orders of the person in charge, Carlos."

  • "How many OS orders has customer Bruno Santos already resolved?"

  • "Which customers are inactive?"

7. Shut down

In the backend terminal, Ctrl+C (this also shuts down the child MCP server).

sudo systemctl stop ollama
docker compose stop   # para o Postgres sem apagar dados/volumes

Project structure

src/server.js            servidor MCP: define as tools e faz as queries SQL
agent/server.js          backend HTTP: recebe a pergunta, orquestra tudo
agent/os-routing.js      roteamento por regex das perguntas sobre OS
agent/client-routing.js  roteamento por regex das perguntas sobre clientes
agent/tool-selector.js   junta as duas rotas e decide quais tools expor ao LLM
agent/agent-loop.js      loop de function calling com o Ollama
agent/mcp-client.js      cliente MCP + allowlist de tools permitidas
agent/write-policy.js    bloqueio de perguntas que pedem escrita
agent/response-formatter.js  formata o resultado das tools em texto
db/init.sh               script de inicialização do Postgres (roles, grants)
db/migrations/           migrations SQL, aplicadas em ordem
web/                      interface web estática
test/                     testes (node --test)
integration-agent.mjs     teste de integração ponta a ponta (precisa da stack de pé)

Running integration tests

With the backend (npm run start:agent) and Ollama already running in another terminal:

npm run test:integration

Available tools

The MCP server exposes query tools for service orders (search by number, list open/overdue/recent, filter by status, priority, person in charge, requester, or customer, history, summaries, and average resolution time) and for customers (list, list inactive/recent, search by id/email/name, email domains, summaries). The complete and up-to-date list of tools released to the agent is in allowedToolNames, at the top of agent/mcp-client.js.

Available Tools

24 tools
analisar_carga_operadorAnalisar carga de trabalho de um operadorA

Retorna a carga de trabalho de um operador específico: total de tickets, abertos, fechados, congelados, quantos são de prioridade alta/urgente e qual o ticket aberto mais antigo dele (com quantos dias em aberto). Use para perguntas como "o Fábio está sobrecarregado?" ou "qual a carga do operador X?".

ParametersJSON Schema
NameRequiredDescriptionDefault
operadorYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It does disclose the returned aggregate metrics in detail, but says nothing about the read-only nature, behavior for an unknown/ambiguous operator name (likely empty or error), or any auth/permission requirements. Adequate but with clear gaps.

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 core purpose, then a compact enumeration of returned fields, then usage examples. Two sentences with essentially no waste, though the returned-field list is 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?

For a one-parameter read-only analytics tool with no output schema, the description usefully enumerates the returned metrics, which is exactly what the agent needs. Only the operator-identifier format and unknown-input behavior remain unaddressed.

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

Parameters2/5

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

Schema description coverage is 0% for the single 'operador' parameter, and the description only refers to 'um operador específico' without stating the expected format (name, ID, exact match vs. partial). Since the schema provides no semantics, the description should compensate but does not, leaving ambiguity that a sibling like buscar_usuarios_por_nome hints is relevant.

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 (returns the workload of a specific operator) and enumerates exactly what is returned: total, open, closed, frozen tickets, high/urgent priority counts, and the oldest open ticket with its age. This is far more concrete than a bare 'resumo' sibling, but it never explicitly names resumo_tickets_por_operador, the closest alternative, so the differentiation is inferred rather than stated.

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 concrete example questions ('o Fábio está sobrecarregado?', 'qual a carga do operador X?') that clearly signal when to route a query here, which is strong contextual guidance. It stops short of naming when NOT to use it or pointing to the sibling summary tool, so no exclusions are given.

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

buscar_ticket_por_numeroBuscar ticket por númeroA

Busca o detalhe completo de um ticket (chamado) pelo número, incluindo SLA, comentários e anexos. Use sempre que a pergunta citar um número de ticket específico, mesmo que outros filtros também apareçam na frase.

ParametersJSON Schema
NameRequiredDescriptionDefault
numeroYes

TDQS

A4.5/5.0
Behavior4/5

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

No annotations exist, so the description carries the full burden, and it does disclose the shape of the return (full detail including SLA, comments and attachments), which is valuable given there is no output schema. It leaves minor unknowns such as behavior when the ticket number does not exist, but for a single-key read tool this is solid disclosure.

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, front-loaded with what the tool returns, followed by the usage rule. Every clause carries information; 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?

For a one-parameter read tool with no annotations and no output schema, the description supplies both the return content and the selection rule, which is everything an agent needs to pick and call it correctly. No sibling comparisons or edge cases are left materially 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 0%, but there is only one parameter and its name (numero) is echoed by the description's phrase 'pelo número', which conveys that it is the ticket identifier. No additional semantics (accepted range, formatting, external vs internal id) are added beyond the schema's integer constraint.

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 and resource (buscar o detalhe completo de um ticket) and enumerates what the payload contains (SLA, comentários, anexos). This distinguishes it from the many listar_* and resumo_* siblings and from buscar_tickets_por_texto, since it is keyed on a single ticket number.

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 tells the agent when to use it ('sempre que a pergunta citar um número de ticket específico') and even resolves a likely conflict case: it takes precedence 'mesmo que outros filtros também apareçam na frase'. That is an explicit routing rule against the alternative tools.

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

buscar_tickets_por_textoBuscar tickets por textoA

Busca tickets (chamados) cujo assunto (issue) ou descrição contenham o texto informado, com filtros opcionais por status, área, departamento, operador, prioridade, situação (aberto/fechado), período de abertura (dataInicio/dataFim), limite e paginação (pagina). Use para perguntas como "tickets sobre impressora", "chamados relacionados a rede" ou "tickets abertos sobre queda de energia".

ParametersJSON Schema
NameRequiredDescriptionDefault
areaNo
textoYes
limiteNo
paginaNo
statusNo
dataFimNo
operadorNo
situacaoNo
dataInicioNo
prioridadeNo
departamentoNo

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. 'Busca' implies a read-only operation and it discloses that all filters are optional and that results are paginated (limite, pagina), but it says nothing about the returned structure, result ordering, or behavior on zero matches. The most critical behavioral trait (read-only nature) is only implicit.

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: the first front-loads the core function and filter surface, the second supplies intent examples. No redundant restatement of the title, no filler.

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 an 11-parameter tool with no annotations, no output schema, and 0% schema description coverage, the description covers the filters and intent but omits return shape, pagination semantics, and value formats for filtered fields. Adequate to invoke the tool, but not complete.

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 0% across 11 parameters, so the description must compensate, and it does enumerate nearly all of them (status, área, departamento, operador, prioridade, situação, dataInicio/dataFim, limite, pagina, texto) and clarifies they are optional filters. It adds pouco mais que os nomes, porém: it does not explain valid status values, the date format, or the units of limite/pagina, leaving gaps against a 0% coverage baseline.

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 (busca) and resource (tickets/chamados) plus the exact matching mechanism: 'cujo assunto (issue) ou descrição contenham o texto informado'. This text-match scope inherently separates it from siblings like listar_tickets or buscar_ticket_por_numero, which have no free-text criterion.

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 concrete usage context with example questions ('tickets sobre impressora', 'tickets abertos sobre queda de energia'), which tells the agent what kind of user intent maps here. However, it never states when NOT to use it or names the alternatives (e.g., buscar_ticket_por_numero when a ticket number is known), so it stops short of explicit routing.

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

buscar_usuarios_por_nomeBuscar usuários por nomeB

Busca usuários (operadores) do sistema de tickets cujo nome ou login contenham o texto informado.

ParametersJSON Schema
NameRequiredDescriptionDefault
nomeYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that the search matches name or login and uses a contains-style comparison, but it omits result limits, pagination, case sensitivity, and whether any permissions are 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?

A single, front-loaded sentence with no filler. It states the action, target entity, and matching behavior efficiently.

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 one-parameter search tool, the description is minimally adequate, but it lacks guidance on choosing between this and listar_usuarios_tickets and does not describe the return value or result shape, which matters because no output schema is provided.

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 0%, so the description must compensate. It does so by explaining that the single parameter 'nome' matches either name or login and is treated as contained text, which adds meaningful semantics beyond the bare 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 specific verb (Busca) and resource (usuários/operadores do sistema de tickets), and clarifies the search criterion (nome ou login contendo o texto informado). It distinguishes itself from a simple list of users, though it does not explicitly name the sibling tool listar_usuarios_tickets.

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 explicit guidance on when to use this tool versus alternatives such as listar_usuarios_tickets or other search tools. The purpose implies a text search, but no conditions, exclusions, or prerequisite context are provided.

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

listar_areas_ticketsListar áreas de ticketsB

Lista as áreas cadastradas para tickets (chamados) no sistema de tickets.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden; 'Lista' plus 'cadastradas' does convey a safe, read-only enumeration of all registered areas, which is meaningful for a zero-parameter tool. It stops short of stating ordering, whether inactive areas are included, or the returned fields.

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 the resource stated immediately and no filler. Nothing could be removed without losing meaning.

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 trivial zero-param lookup with no output schema, the description covers the essentials but omits what each area record contains (identifier, name, active flag) and whether the list is exhaustive. Adequate but with clear gaps for a caller that must consume the result.

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 no parameters, so there is nothing for the description to clarify; the baseline of 4 applies. The description neither adds nor omits parameter meaning.

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 ('Lista') and resource ('as áreas cadastradas para tickets'), so the agent knows precisely what is returned. It is implicitly distinguishable from siblings like listar_prioridades_tickets or listar_canais_tickets because the resource noun differs, though the description never explicitly contrasts 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?

No guidance on when to call this versus the many sibling lookup tools (prioridades, canais, status, departamentos). Usage is only inferable from the tool name — an agent needing valid area values for filtering would have to guess that this supplies them.

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

listar_canais_ticketsListar canais de ticketsB

Lista os canais de entrada cadastrados para tickets (chamados) no sistema de tickets.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only enumeration but says nothing about return shape, ordering, pagination, or whether the channel list is stable/global — all of which matter for a lookup an agent may cache or re-call.

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 front-loaded sentence with no preamble. It is slightly redundant, restating tickets twice ('para tickets (chamados)' and 'no sistema de tickets'), which trims a point but does not obscure the intent.

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, argument-free reference list the description is minimally sufficient, and no output schema exists so return values need not be explained. Still, it does not say what a 'canal de entrada' contains or how the result is structured, leaving a small gap for an agent deciding how to use the output.

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. There is no parameter meaning the description could have added or omitted.

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 os canais de entrada cadastrados para tickets'), so the agent knows this returns the catalog of intake channels. It does not differentiate from structurally similar siblings like listar_prioridades_tickets or listar_areas_tickets, but the resource noun is unambiguous enough.

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 call this versus the other listar_* lookup tools, nor any stated prerequisite. For a no-argument reference lookup, usage is somewhat self-evident, but the description provides nothing explicit.

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

listar_departamentos_ticketsListar departamentos de ticketsB

Lista os departamentos cadastrados para tickets (chamados) no sistema de tickets.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. 'Lista' clearly implies a read-only enumeration of registered items, which is adequate safety context, but it says nothing about pagination, ordering, permissions, or whether results are filtered by tenant/workspace.

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, front-loaded sentence with no wasted clauses. The parenthetical '(chamados)' is mildly redundant but harmless clarification.

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 zero-parameter listing tool with 100% (empty) schema coverage and no output schema, the description is minimally sufficient but never indicates the shape of returned departments (IDs, names, counts), leaving the agent to infer the result.

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 there is nothing for the description to disambiguate about inputs; the baseline of 4 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 and resource: 'Lista os departamentos cadastrados para tickets.' An agent can tell it apart from siblings like listar_prioridades_tickets or listar_areas_tickets by the resource noun alone, though it never explicitly contrasts itself with 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?

There is no statement of when to use this tool versus the many other 'listar_*' siblings or the 'resumo_tickets_por_departamento' summary tool. Usage is only inferable from the name and resource noun.

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

listar_prioridades_ticketsListar prioridades de ticketsB

Lista as prioridades cadastradas para tickets (chamados) no sistema de tickets.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. "Lista" implies a read, but the description never confirms read-only semantics, says whether the list is paginated or ordered, or hints at what a priority record contains. For a zero-parameter lookup the risk is low, but disclosure is still essentially absent.

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 well-formed sentence with the resource front-loaded and zero padding. It could arguably be trimmed of the redundant "no sistema de tickets" tail, but it is efficient and readable.

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 annotations and no output schema, the description is the only source of return-shape information, and it says nothing about what a listed priority looks like (identifier, label, ordering). For a trivial enumerator this is minimally viable, but it leaves an agent guessing at the response contents.

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 no parameters (0 params, 100% schema coverage), so per the baseline there is nothing for the description to compensate for. No param-level guidance is needed or missing.

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 ("Lista") and resource ("prioridades cadastradas para tickets"), and the parenthetical clarifying tickets as "chamados" helps disambiguate. It is distinguishable from siblings like listar_status_tickets or listar_canais_tickets by resource name alone, though it never explicitly frames itself as part of that lookup family.

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 the sibling lookup tools (listar_status_tickets, listar_areas_tickets, etc.) or the resumo_*_por_prioridade aggregation tool, which an agent could easily confuse it with. Usage is only implied by the verb.

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

listar_status_ticketsListar status de ticketsB

Lista os status possíveis para tickets (chamados) no sistema de tickets.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read-only enumeration but does not state permissions, return format, whether the statuses are static or dynamic, or any operational constraints.

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 a single, front-loaded sentence with no wasted words. It is appropriately concise for a zero-parameter lookup tool, though it could be slightly more informative without becoming verbose.

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 zero-parameter tool with no output schema, the description states what is listed and is sufficient for an agent to call it correctly. It does not describe the return value format explicitly, but the operation is straightforward and the omission 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?

The schema is empty with zero parameters, so parameter semantics are not applicable. The baseline for a 0-parameter tool is 4, and the description adds no parameter meaning because none exists.

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 ('Lista') and resource ('status possíveis para tickets'), making clear what the tool returns. It distinguishes itself from sibling listing tools such as listar_prioridades_tickets by focusing on ticket statuses, though it does not explicitly name alternatives.

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 related siblings like listar_prioridades_tickets or listar_tickets. The implied use is simply to enumerate possible statuses, but no conditions, prerequisites, or exclusions are provided.

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

listar_ticketsListar ticketsA

Lista tickets (chamados), com filtros opcionais por status, área, departamento, operador responsável, cliente (nome do solicitante), prioridade, número e período de abertura (dataInicio/dataFim, formato AAAA-MM-DD ou por extenso). Não filtra por coluna do Kanban. Use para listar registros individuais; para perguntas de contagem/agrupamento ("quantos", "por status", "por área" etc.) prefira as tools resumo_tickets_por_*.

ParametersJSON Schema
NameRequiredDescriptionDefault
areaNo
limiteNo
numeroNo
paginaNo
statusNo
clienteNo
dataFimNo
operadorNo
dataInicioNo
prioridadeNo
departamentoNo

TDQS

A4.2/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It discloses one real behavioral constraint ('Não filtra por coluna do Kanban'), which is useful negative context, but says nothing about read-only nature, pagination behavior, default limits, or sort order for what is clearly a paged read (pagina/limite params exist).

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 tight sentences: capabilities and filter list first, routing constraint second. No filler, and the most decision-relevant information (what it lists, what it does not filter, which sibling to prefer) 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 an 11-parameter, no-output-schema, no-annotation listing tool, the description covers scope, filters, and routing well. The gaps are pagination/return-volume behavior (default limite=50, pagina=1) and the ambiguity with the specialized list siblings, which an agent may need to disambiguate.

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 0%, so the description must compensate, and it does: it enumerates nearly every filter (status, área, departamento, operador, cliente, prioridade, número, dataInicio/dataFim) and gives a date format. It omits limite/pagina semantics, and the claim 'ou por extenso' conflicts with the schema's strict ^\d{4}-\d{2}-\d{2}$ pattern, which could mislead on accepted date input.

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 and resource ('Lista tickets/chamados') and enumerates the filterable dimensions, so an agent immediately knows what the tool returns. It additionally draws a boundary against the resumo_tickets_por_* family, distinguishing this from count/aggregation 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?

Explicit routing guidance: use for individual records, prefer resumo_tickets_por_* for counting/grouping questions, with example keywords ('quantos', 'por status'). It does not, however, distinguish itself from the specialized list siblings (listar_tickets_abertos, listar_tickets_fechados, listar_tickets_congelados, listar_tickets_sem_operador, listar_tickets_mais_recentes), which overlap heavily with status/operator filters here.

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

listar_tickets_abertosListar tickets abertosB

Lista e conta os tickets (chamados) ainda não encerrados (sem data de fechamento), com filtros opcionais por área, departamento, operador, prioridade, período de abertura (dataInicio/dataFim), limite e paginação (pagina).

ParametersJSON Schema
NameRequiredDescriptionDefault
areaNo
limiteNo
paginaNo
dataFimNo
operadorNo
dataInicioNo
prioridadeNo
departamentoNo

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses two behaviors: the tool both lists and counts, and 'aberto' is defined operationally as 'sem data de fechamento'. It says nothing about permissions, response shape, or whether pagination is capped by limite, which are real gaps for an unannotated tool.

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 well-formed sentence with the core scope constraint front-loaded before the filter list. No filler, though it is a dense enumeration rather than a structured breakdown.

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 an 8-parameter, zero-annotation, no-output-schema tool, the description covers purpose and parameter inventory but omits return format and pagination behavior (does it report a total count? how does pagina interact with limite?). Adequate but with clear gaps.

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 0%, so the description must compensate. It enumerates all eight parameters by role — area, departamento, operador, prioridade, dataInicio/dataFim, limite, pagina — which groups them meaningfully by filter type, but adds no format detail (e.g., the YYYY-MM-DD pattern or the 1-100 limite cap) beyond what the property names already convey.

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 (lists and counts) and resource (tickets), and crisply defines scope: only tickets without a closing date. This distinguishes it in substance from siblings like listar_tickets_fechados and listar_tickets, though it never names an alternative directly.

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 scope definition ('ainda não encerrados, sem data de fechamento') implies when to pick this over the generic listar_tickets or the fechados variant, but there is no explicit when-to-use statement, no exclusions, and no prerequisites.

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

listar_tickets_abertos_mais_antigosListar tickets abertos mais antigosB

Lista os tickets (chamados) ainda não encerrados ordenados do mais antigo para o mais novo pela data de abertura, com filtros opcionais por área, departamento, operador e prioridade. Suporta paginação (pagina) quando o total passa do limite.

ParametersJSON Schema
NameRequiredDescriptionDefault
areaNo
limiteNo
paginaNo
operadorNo
prioridadeNo
departamentoNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does disclose genuine behavior: only non-closed tickets, oldest-first ordering, and pagination via 'pagina' when results exceed the limit. It stops short of permissions/auth requirements, rate limits, or what fields each ticket returns, so meaningful gaps remain.

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 sentences, both front-loaded with the ordering rule first and the pagination note second, with essentially no filler. Slightly dense in the filter enumeration, but every clause carries information.

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 6-parameter read tool with no annotations and no output schema, the definition covers ordering, filters, and pagination, which is the core. It omits any indication of the return shape or how results behave at the boundary of 'limite', leaving the agent to guess at the response structure.

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 0%, so the description must compensate, and it does: it names the filter dimensions (área, departamento, operador, prioridade) and references both 'pagina' and the implicit 'limite' threshold. It adds real meaning over the bare schema, though it never spells out defaults or the 1-50 range on 'limite'.

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 (list open tickets), the scope (ainda não encerrados), and the ordering (do mais antigo para o mais novo pela data de abertura), which implicitly separates it from listar_tickets_mais_recentes. It does not, however, explicitly name or contrast with its closest siblings such as listar_tickets_abertos or listar_tickets.

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 notes the tool accepts optional filters but gives no when-to-use guidance and never mentions alternatives, despite a large sibling set that includes listar_tickets_abertos and listar_tickets_mais_recentes. An agent must infer the selection criteria from the ordering phrase alone.

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

listar_tickets_congeladosListar tickets congeladosB

Lista os tickets (chamados) com o relógio de SLA congelado (is_frozen), com filtros opcionais por status, área, departamento, operador, prioridade, período de abertura (dataInicio/dataFim), limite e paginação (pagina).

ParametersJSON Schema
NameRequiredDescriptionDefault
areaNo
limiteNo
paginaNo
statusNo
dataFimNo
operadorNo
dataInicioNo
prioridadeNo
departamentoNo

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the core behavioral trait (returns tickets where is_frozen is true) and that filters/pagination are optional, but says nothing about permissions, the default result size, ordering, or return shape for a read operation.

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 front-loaded sentence that opens with the purpose and then lists filters in a compact clause. Every element earns its place, though the filter enumeration is dense and slightly long.

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 nine-parameter read tool with no output schema and no annotations, the description establishes purpose and parameter meaning but omits return format, default limit/pagination behavior, and ordering. Adequate to invoke correctly but incomplete on 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 description coverage is 0%, so the description must compensate; it maps all nine parameters to meanings and adds useful context for two of them ('período de abertura (dataInicio/dataFim)' and 'paginação (pagina)'). But it only restates most field names without value formats, valid status values, or pagination defaults.

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 (lista os tickets) with a defining scope: tickets whose SLA clock is frozen (is_frozen). This distinguishes it from the generic listar_tickets and the many other ticket-listing siblings without naming them. Clear but relies on the reader to infer the sibling distinction rather than stating it.

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 it (when you need frozen-SLA tickets) and enumerates the available filter dimensions. However, it never explicitly contrasts with alternatives like listar_tickets, listar_tickets_abertos, or the resumo_* tools, so routing is left to inference.

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

listar_tickets_fechadosListar tickets fechadosB

Lista e conta os tickets (chamados) já encerrados (com data de fechamento), com filtros opcionais por área, departamento, operador, prioridade, período de fechamento (dataInicio/dataFim), limite e paginação (pagina).

ParametersJSON Schema
NameRequiredDescriptionDefault
areaNo
limiteNo
paginaNo
dataFimNo
operadorNo
dataInicioNo
prioridadeNo
departamentoNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that the tool both lists and counts and that pagination is supported, but says nothing about permissions, ordering of results, return shape, or limits beyond the filter names.

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 dense sentence that front-loads the core action and purpose before listing filters. Efficient, though the filter enumeration makes it slightly list-heavy.

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 an 8-parameter, read-only list tool with no annotations and no output schema, the description covers filters and the list+count behavior but never describes what the returned records or counts look like, leaving an agent to guess at the response shape.

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 0%, so the description must compensate, and it names all eight parameters, grouping dataInicio/dataFim as the closing-period filter and tying limite/pagina to pagination. It adds no per-field semantics (e.g., date format, or how area differs from departamento), keeping it short of a 5.

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 pair (lista e conta) and precise resource (tickets já encerrados, com data de fechamento), which cleanly distinguishes it from siblings like listar_tickets_abertos or listar_tickets. It does not explicitly name an alternative sibling, 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?

The description enumerates available filters, which implies usage, but gives no guidance on when to choose this over listar_tickets, listar_tickets_abertos, or the various resumo_* tools. No prerequisites or when-not-to-use conditions are stated.

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

listar_tickets_mais_recentesListar tickets mais recentesB

Lista os tickets (chamados) mais recentemente abertos, do mais novo para o mais antigo pela data de abertura, com filtros opcionais por status, área, departamento, operador, prioridade e situação (aberto/fechado). Suporta paginação (pagina) quando o total passa do limite.

ParametersJSON Schema
NameRequiredDescriptionDefault
areaNo
limiteNo
paginaNo
statusNo
operadorNo
situacaoNo
prioridadeNo
departamentoNo

TDQS

B3.4/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It does disclose the sort order and that pagination kicks in 'quando o total passa do limite', but says nothing about result size defaults, permissions, or how a paginated response behaves. 'Lista' implies a safe read, yet that is never stated.

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 sentences, front-loaded with purpose and ordering before the filter/pagination detail. Little waste, though the long filter enumeration sits mid-sentence and the 'limite' concept is only referred to obliquely as 'o limite'.

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 an 8-parameter, read-only list tool with no output schema, no annotations and 0% schema coverage, the description covers filters, sorting and pagination but omits the page-size parameter and any notion of returned fields. It is adequate to invoke correctly for the common case, but incomplete for the full parameter set.

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 0%, so the description must compensate. It names most filters (status, área, departamento, operador, prioridade, situação) and explains the situacao enum values ('aberto/fechado'), which is genuinely useful. However it never mentions the 'limite' parameter by name nor clarifies matching semantics for the string filters, so 4 of 8 params remain semantically thin.

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 ('Lista os tickets') plus a precise ordering ('do mais novo para o mais antigo pela data de abertura'), which distinguishes it in spirit from siblings like listar_tickets_abertos_mais_antigos. It stops short of naming the sibling it is not, so the differentiation is positional rather than explicit.

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: the 'most recent' ordering signals a recency-review scenario, but the description never says when to pick this over listar_tickets, listar_tickets_abertos or listar_tickets_abertos_mais_antigos. No exclusions, prerequisites or conditions are given.

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

listar_tickets_sem_operadorListar tickets sem operador atribuídoA

Lista e conta os tickets (chamados) que ainda não têm operador atribuído, com filtros opcionais por status, área, departamento, prioridade, período de abertura (dataInicio/dataFim), limite e paginação (pagina).

ParametersJSON Schema
NameRequiredDescriptionDefault
areaNo
limiteNo
paginaNo
statusNo
dataFimNo
dataInicioNo
prioridadeNo
departamentoNo

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool lists and counts tickets, accepts optional filters, and supports pagination, but does not explicitly state that it is read-only, mention required permissions, or describe the response shape beyond a generic count.

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 moves directly from purpose to filters to pagination. Every clause carries useful information and there is no filler.

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?

Given eight parameters, no annotations, no output schema, and 0% schema description coverage, the description covers the core listing behavior and all filter names. It still omits return structure details (beyond 'conta') and valid filter values, which are meaningful gaps for this tool's complexity.

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 0%, so the description must compensate. It names all eight parameters and groups them by purpose (status, area, department, priority, opening period via dataInicio/dataFim, limit, pagination), but it does not explain accepted values (e.g., valid status or priority names), leaving that semantics undocumented.

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 and resource ('Lista e conta os tickets') plus a precise scope ('que ainda não têm operador atribuído'), which clearly distinguishes it from the broad sibling listar_tickets and from unassigned-focused siblings. An agent can identify the tool's core purpose 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 Guidelines3/5

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

The scope implies when to use it: tickets with no assigned operator. However, it provides no explicit when-not-to-use guidance or named alternatives (e.g., listar_tickets for all tickets, listar_tickets_abertos for open tickets). Usage 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.

listar_usuarios_ticketsListar usuários de ticketsB

Lista os usuários (operadores) cadastrados no sistema de tickets.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. It implies a read operation via 'Lista', but says nothing about return volume, ordering, pagination, or whether inactive users are included ('cadastrados' is ambiguous), which matters for an unfiltered list.

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 efficient sentence with the resource front-loaded and no wasted words. It is minimal, though it could have used the space to add scope detail rather than stopping at a bare noun phrase.

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 zero-parameter, no-output-schema tool the description is minimally sufficient to identify the resource, but it omits when to choose it over buscar_usuarios_por_nome and gives no sense of what the returned user list contains.

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 there is nothing for the description to clarify beyond the schema; the baseline for a no-parameter tool is 4.

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: it lists the users/operators registered in the ticket system. An agent can tell this is a user-listing tool, but the description does not distinguish it from the close sibling buscar_usuarios_por_nome, so sibling differentiation is absent.

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 alternatives. The sibling conjunto includes buscar_usuarios_por_nome, which is the obvious alternative for retrieving users, and the description never explains when this unfiltered list is preferred over that search.

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

resumo_operacional_ticketsVisão geral operacional dos ticketsA

Retorna um retrato geral da operação de tickets (chamados): total, abertos, fechados, sem operador, com SLA congelado, distribuição por prioridade e quantidade de abertos há mais de 7 dias. Use para perguntas amplas de gestão como "como está a operação?", "tem algo preocupante?" ou "me dá uma visão geral", com filtros opcionais por área, departamento e período de abertura (dataInicio/dataFim).

ParametersJSON Schema
NameRequiredDescriptionDefault
areaNo
dataFimNo
dataInicioNo
departamentoNo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations and no output schema, the description carries the full burden and does disclose the return content (the exact aggregate metrics), which is the key behavioral trait of this read-only tool. It implies a safe read ('Retorna') and notes the filters are optional, but does not discuss permissions, SLA-congelado semantics, or any cost/limits.

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, no waste: the first front-loads exactly what is returned, the second front-loads the usage triggers and then the optional filters. Each sentence earns its place, and the metric enumeration is necessary given the absence of an output 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 an aggregate tool with no annotations and no output schema, the description is fairly complete: it explains the returned metrics and the four optional filters. It stops short of noting the read-only nature explicitly or how the period filter interacts with the 'abertos há mais de 7 dias' metric.

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 0%, so the description must compensate, and it does: it names all four filters (área, departamento, and the abertura period via dataInicio/dataFim) and frames them as optional. It gives meaning but not format detail (the date pattern is only in 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?

States a specific verb+resource ('Retorna um retrato geral da operação de tickets') and enumerates the exact metrics returned (total, abertos, fechados, sem operador, SLA congelado, por prioridade, abertos há +7 dias). This is clearly the broad umbrella view, distinguishable in spirit from the many dimension-specific resumo_tickets_por_* siblings, though no sibling is named explicitly.

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 natural-language trigger phrases ('como está a operação?', 'tem algo preocupante?', 'me dá uma visão geral') that map broad management questions to this tool. It does not, however, state when to prefer it over dimension-scoped siblings like resumo_tickets_por_status or resumo_tickets_por_area.

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

resumo_tickets_por_areaResumo de tickets por áreaA

Agrupa os tickets (chamados) por área e informa a quantidade e o percentual em cada uma (ordenado do maior pro menor), além do total de tickets abertos e fechados, com filtros opcionais por status, departamento, operador, prioridade, período de abertura (dataInicio/dataFim) e limite (top N).

ParametersJSON Schema
NameRequiredDescriptionDefault
ordemNo
limiteNo
statusNo
dataFimNo
operadorNo
dataInicioNo
prioridadeNo
departamentoNo

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose the result shape (counts, percentages, open/closed totals, ordering). However it omits default values (e.g. default limite/ordem), permission or auth requirements, and does not explain why it claims fixed descending order while an 'ordem' asc/desc parameter 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 front-loaded sentence that first states the grouping/output then enumerates filters; every clause contributes information 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 an 8-parameter, annotation-free, output-schema-free tool, the description adequately explains both the return composition and the filter set. Missing details are defaults, date format, and the 'ordem' parameter, which keep it short of fully self-contained.

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 0%, so the description must compensate: it names the filter dimensions and explicitly ties dataInicio/dataFim to the period and limite to 'top N'. It fails to mention the 'ordem' parameter and gives no format hints (e.g. YYYY-MM-DD), leaving a small gap, but coverage is otherwise strong.

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 ('Agrupa os tickets por área'), the exact output composition (quantidade, percentual, total de abertos/fechados) and the ordering, so it is immediately distinguishable from siblings like resumo_tickets_por_status or resumo_tickets_por_operador.

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: listing the available filter dimensions (status, departamento, operador, prioridade, período, limite) hints at when the tool is useful, but there is no explicit when-to-use, when-not, or comparison against the many sibling 'resumo_*' tools.

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

resumo_tickets_por_clienteResumo de tickets por clienteA

Agrupa os tickets (chamados) por cliente/solicitante (contact_name) e informa a quantidade e o percentual em cada um (ordenado do maior pro menor), com filtros opcionais por status, área, departamento, operador, prioridade e período de abertura (dataInicio/dataFim). Diferente das outras dimensões (status/área/prioridade/operador/departamento), cliente não é um catálogo pequeno e fechado, por isso o resumo já vem limitado aos 20 primeiros por padrão (ajustável via limite).

ParametersJSON Schema
NameRequiredDescriptionDefault
areaNo
ordemNo
limiteNo
statusNo
dataFimNo
operadorNo
dataInicioNo
prioridadeNo
departamentoNo

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it discloses meaningful behavior: results are sorted by volume, and the summary is capped at 20 clients by default because client is not a small closed catalog (adjustable via limite). It does not cover permissions, rate limits, or the exact return shape, but the rationale for the cap is unusually informative.

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 dense sentences with the core grouping behavior front-loaded followed by the filter list and the limit caveat. Every clause carries information; nothing is repeated from the schema or wasted.

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 9-parameter aggregation tool with no output schema and no annotations, the description covers the operation, the returned metrics, ordering, the parameter set, and the default-limit behavior. An agent has what it needs to call this 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?

Schema description coverage is 0%, so the description must compensate, and it names every filter parameter (status, área, departamento, operador, prioridade, dataInicio/dataFim) plus limite and the ordering behavior. It lacks format detail (e.g. the YYYY-MM-DD pattern for dates), so it falls short of a full 5.

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

Purpose5/5

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

It states a precise verb and resource (group tickets by client/requester via contact_name) and describes the output (count and percentage per client, ordered descending). It explicitly distinguishes itself from the sibling resumo_* tools that aggregate on status/area/priority/operator/department.

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 that the tool produces an aggregated per-client summary with optional filters, and contrasts it against the other 'dimensions' summarized by sibling tools. However, it never explicitly states when to prefer this over listar_tickets or buscar_ticket_por_numero; the routing is implied rather than spelled out.

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

resumo_tickets_por_departamentoResumo de tickets por departamentoA

Conta os tickets (chamados) de cada departamento cadastrado e informa o percentual de cada um (ordenado do maior pro menor), com filtros opcionais por status, área, operador e limite (top N). Use para perguntas como "quantos tickets existem em cada departamento?". Não aceita prioridade nem período de abertura (custaria trocar N chamadas baratas por N buscas completas, já que o nome do departamento não vem na listagem em lote — só filtra no servidor).

ParametersJSON Schema
NameRequiredDescriptionDefault
areaNo
ordemNo
limiteNo
statusNo
operadorNo

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose real behavior: aggregation logic (counts + percentage), default ordering (largest to smallest), optional filters, and a genuine limitation with rationale (no priority/period because that would force N full searches). It omits auth/read-only status and rate behavior, keeping it below 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?

Front-loads the core action, then the usage example, then the exclusions. Three sentences with no filler; the final parenthetical is long but earns its place by justifying the exclusion.

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?

No output schema, so the description correctly describes the return shape (counts plus percentages, ordered). For a read aggregation tool it covers purpose, filters, output, and limits; only the 'ordem' parameter and safety/read-only context are left 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 0%, so the description must compensate. It names four of five params (status, area, operador, limite) and adds meaning for 'limite' as top N, but never mentions the 'ordem' (asc/desc) parameter or allowed values, leaving a documented gap.

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 ('Conta os tickets') plus resource scope ('de cada departamento') and adds what is computed (counts and percentage). The 'por departamento' scope cleanly distinguishes it from the many sibling resumo_tickets_por_status/area/operador/prioridade tools.

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 trigger example ('Use para perguntas como "quantos tickets existem em cada departamento?"') and explicit exclusions ('Não aceita prioridade nem período de abertura'), even explaining why. This is textbook when-to-use / when-not guidance.

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

resumo_tickets_por_operadorResumo de tickets por operadorA

Agrupa os tickets (chamados) por operador responsável e informa a quantidade e o percentual em cada um (ordenado do maior pro menor), com filtros opcionais por status, área, departamento, prioridade, situação (aberto/fechado), período de abertura (dataInicio/dataFim) e limite (top N). Use para perguntas como "quais operadores têm mais tickets?", "quantos tickets cada operador possui?" ou "quem tem mais chamados em aberto?".

ParametersJSON Schema
NameRequiredDescriptionDefault
areaNo
ordemNo
limiteNo
statusNo
dataFimNo
situacaoNo
dataInicioNo
prioridadeNo
departamentoNo

TDQS

A4.1/5.0
Behavior3/5

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

No annotations exist, so the description carries the burden. It usefully discloses the default ordering (maior para menor) and the return content (quantidade e percentual), but says nothing about read-only nature, permissions, or behavior when no operator matches. Reasonable but not rich behavioral disclosure for a zero-annotation tool.

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 output behavior is front-loaded, filters follow, and usage examples close. Every sentence is functional and nothing is padded, though the filter enumeration runs long in a single sentence.

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 aggregation tool with no output schema and no annotations, the description adequately covers what is computed, how it is ordered, and which filters apply. It leaves gaps around authentication, empty-result behavior, and the distinction from similar summary tools, but the core is complete enough to invoke 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?

With 0% schema coverage the description must compensate, and it largely does: it enumerates filters for status, área, departamento, prioridade, situação (aberto/fechado), período (dataInicio/dataFim) and limite (top N), which maps to eight of the nine parameters. Only 'ordem' is left implicit through the ordering statement, and no value formats or enum nuances are added.

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 and resource: it groups tickets by responsible operator and reports quantity plus percentage, ordered descending. Against siblings like resumo_tickets_por_status and resumo_tickets_por_area, the grouping dimension (operador) is unmistakable from the name and description alone.

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 three example questions ("quais operadores têm mais tickets?", "quantos tickets cada operador possui?", "quem tem mais chamados em aberto?") give concrete, unambiguous use contexts. However, it never names alternatives despite overlapping siblings such as resumo_operacional_tickets and analisar_carga_operador, so boundary cases are left to inference.

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

resumo_tickets_por_prioridadeResumo de tickets por prioridadeA

Agrupa os tickets (chamados) por prioridade e informa a quantidade e o percentual em cada uma (ordenado do maior pro menor), além do total de tickets abertos e fechados, com filtros opcionais por status, área, departamento, operador, período de abertura (dataInicio/dataFim) e limite (top N).

ParametersJSON Schema
NameRequiredDescriptionDefault
areaNo
ordemNo
limiteNo
statusNo
dataFimNo
operadorNo
dataInicioNo
departamentoNo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose meaningful behavior: results are grouped by priority, ordered descending, expressed as count and percentage, and supplemented with open/closed totals. It does not discuss permissions or any mutation risk, but for a read-only aggregation that is a minor omission rather than a 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?

A single dense sentence, but it is front-loaded with the purpose and then the outputs before the filters, so the most important information comes first. Slightly long but every clause carries substantive 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?

For an 8-parameter tool with no output schema and no annotations, the description supplies the return structure and nearly all filter semantics, which is close to sufficient. The unmentioned 'ordem' parameter and the missing date format hint keep it from being fully complete.

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 0%, so the description must compensate, and it does: it names status, área, departamento, operador, dataInicio/dataFim (período de abertura) and limite (top N), covering 7 of the 8 parameters. The 'ordem' parameter and the date format are the only gaps left undocumented.

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 (agrupa) and resource (tickets por prioridade), plus the exact output shape (quantidade, percentual, ordenado desc, totais abertos/fechados). This clearly separates it from sibling aggregation tools like resumo_tickets_por_status and resumo_tickets_por_area.

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 list of optional filters implies when the tool is applicable, but there is no explicit when-to-use or when-to-prefer-an-alternative guidance relative to the many sibling resumo_* tools. Usage must be inferred from the aggregation shape.

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

resumo_tickets_por_statusResumo de tickets por statusA

Agrupa os tickets (chamados) por status e informa a quantidade e o percentual em cada um (ordenado do maior pro menor), além do total de tickets abertos e fechados, com filtros opcionais por área, departamento, operador, prioridade, período de abertura (dataInicio/dataFim) e limite (top N).

ParametersJSON Schema
NameRequiredDescriptionDefault
areaNo
ordemNo
limiteNo
dataFimNo
operadorNo
dataInicioNo
prioridadeNo
departamentoNo

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses aggregation behavior (sorted descending, includes totals of open and closed tickets) but says nothing about read-only nature, permissions, or rate 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?

A single, front-loaded sentence that leads with the core action and then the filters. Dense but every clause adds information; 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?

For an 8-parameter, no-output-schema aggregation tool, the description adequately covers what is returned and which filters apply. The only real omission is guidance on when to use it versus the many sibling resumo tools.

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?

With 0% schema coverage across 8 parameters, the description compensates well by naming the filters (area, department, operator, priority), clarifying dataInicio/dataFim as the opening period, and defining limite as 'top N'. It does omit the 'ordem' parameter explicitly, though the descending default is implied.

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 (group tickets by status) and enumerates exactly what is reported: counts, percentages, ordering, and open/closed totals. This makes it readily distinguishable from siblings like resumo_tickets_por_prioridade and resumo_tickets_por_area.

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 by 'por status' and the sibling naming. It never says when to prefer this over the other resumo_* tools or any exclusions, leaving the agent to infer selection from the grouping dimension alone.

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. 24 tool updatesv1.0.0
    • First observedanalisar_carga_operador
    • First observedbuscar_ticket_por_numero
    • First observedbuscar_tickets_por_texto
    • First observedbuscar_usuarios_por_nome
    • First observedlistar_areas_tickets
    • First observedlistar_canais_tickets
    • First observedlistar_departamentos_tickets
    • First observedlistar_prioridades_tickets
    • First observedlistar_status_tickets
    • First observedlistar_tickets
    • First observedlistar_tickets_abertos
    • First observedlistar_tickets_abertos_mais_antigos
    • First observedlistar_tickets_congelados
    • First observedlistar_tickets_fechados
    • First observedlistar_tickets_mais_recentes
    • First observedlistar_tickets_sem_operador
    • First observedlistar_usuarios_tickets
    • First observedresumo_operacional_tickets
    • First observedresumo_tickets_por_area
    • First observedresumo_tickets_por_cliente
    • First observedresumo_tickets_por_departamento
    • First observedresumo_tickets_por_operador
    • First observedresumo_tickets_por_prioridade
    • First observedresumo_tickets_por_status

TDQS

A3.5/5.0

Scored across 24 tools

Disambiguation4/5

Tools are largely distinct by resource and operation, with clear guidance in descriptions (e.g., use buscar_ticket_por_numero for ticket numbers, resumo_* for aggregations). However, the generic listar_tickets overlaps with several specialized listar_tickets_* tools that filter by status, operator, or recency, which could lead to occasional misselection. Descriptions usually resolve the ambiguity, so the set is mostly clear.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern in Portuguese: listar_*, buscar_*, resumo_*, and analisar_*. The structure is predictable and reflects the tool's purpose. No mixed conventions or cryptic names.

Tool Count3/5

With 24 tools, the server is on the heavy side for a ticket system, and several aggregation or listing tools could potentially be consolidated (e.g., resumo_tickets_por_* dimensions). Each tool does have a distinct purpose, but the volume feels borderline excessive. A leaner surface might reduce cognitive load.

Completeness2/5

The tool set covers reading, listing, searching, and aggregating tickets but lacks any mutation operations: no create, update, delete, assign, transition, or comment tools. For a ticket management domain, this is a significant gap that prevents agents from performing core lifecycle actions. The server appears read-only, which limits its utility as a complete ticket system interface.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A read-only MCP server for PostgreSQL that enables safe database introspection and querying via natural language.
    300 npm
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    MCP server for querying artist royalty performance in Brazilian Portuguese, using natural language, charts, and PDF reports from a Postgres database.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Read-only MCP server for querying Brazilian CNES health establishment data in PostgreSQL, enabling AI-assisted database exploration and analysis.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    PostgreSQL MCP server that converts natural language to SQL and executes queries, with multi-database support and robust read-only safety checks.
    -