Dados Abertos Senado BR MCP
Server Details
MCP server for Brazilian Federal Senate open data (legislative, administrative, e-Cidadania).
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- SidneyBissoli/senado-br-mcp-cloudflare
- GitHub Stars
- 4
- Server Listing
- Senado BR — Brazilian Federal Senate Open Data
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.8/5 across 67 of 67 tools scored.
Several tools perform overlapping functions (e.g., senado_buscar_materias vs senado_search_processos, senado_contratos vs senado_contratacoes_lista, and three e-cidadania consultation tools). Although descriptions are detailed, an agent can easily select the wrong one without deep inspection.
All tools share the 'senado_' prefix, but the pattern is inconsistent: some use Portuguese verbs (buscar, listar, obter), others English 'search', and some are bare nouns (senado_ceaps, senado_mesa, senado_vetos). This mixed convention reduces predictability.
67 tools is far above the 25 threshold, indicating an overgrown surface. While each tool may serve a niche endpoint, the sheer number makes it difficult for an agent to choose efficiently, and many tools could be consolidated.
The toolset covers nearly every aspect of Senate open data (legislative, senatorial, committee, administrative, financial, e-cidadania) with list/detail/searches. Minor gaps exist, such as no direct consolidated contract search, but most workflows can be achieved.
Available Tools
67 toolssenado_agenda_comissoesAgenda das comissõesARead-onlyIdempotentInspect
Obtém a agenda de reuniões de todas as comissões numa data (data YYYYMMDD; padrão: hoje), com filtro opcional siglaComissao. Retorna { data, siglaComissao, count, reunioes }, cada reunião com codigo, comissao (sigla, nome), descricao, data, hora, local, tipo e situacao. Para o histórico de uma única comissão por período use senado_reunioes_comissao; para detalhes de uma reunião use senado_reuniao_comissao com o codigo.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Data específica (YYYYMMDD) | |
| siglaComissao | No | Filtrar por comissão específica |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds the return shape, default date, and filtering semantics, which enriches behavioral context without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three well-structured sentences pack purpose, parameters, return format, and alternatives with no wasted words. All content earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with output schema available, the description is fully sufficient: it covers inputs, outputs, defaults, and sibling distinctions, making the tool self-explanatory.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover both parameters, but the tool description adds the default value for data (today) and explicitly explains siglaComissao as an optional filter. This surpasses schema-only information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb and resource: 'Obtém a agenda de reuniões de todas as comissões numa data'. It also distinguishes from sibling tools by naming explicit alternatives for history and meeting details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides direct when-to-use guidance: for history use senado_reunioes_comissao, for details use senado_reuniao_comissao with codigo. Also notes default date behavior, clarifying usage without alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_agenda_plenarioAgenda do plenárioARead-onlyIdempotentInspect
Obtém a agenda de sessões de plenário (Senado ou Congresso Nacional), por dia ou mês, com a pauta de matérias a votar. Retorna { data, escopo, count, sessoes }, onde cada sessão traz codigo, data, hora, tipo, situacao e pauta (matéria, ementa, autor, parecer). Use escopo dia/mes/cn; sem data assume hoje. Para o resultado já apreciado use senado_resultado_plenario; detalhes de uma sessão via senado_encontro_plenario.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Data específica (YYYYMMDD; padrão: hoje) | |
| escopo | No | dia = SF+CN no dia; mes = mês inteiro; cn = plenário do Congresso | dia |
| dataFim | No | Data fim para período do CN (YYYYMMDD; apenas escopo=cn) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable behavioral context beyond these: the exact return shape, the default date assumption, and the scope semantics (dia/mes/cn). It also clarifies the distinction between upcoming agenda (this tool) and past results (senado_resultado_plenario), which is essential for correct use. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is composed of three concise sentences: the main purpose, the return structure, and usage/alternatives. Every sentence earns its place, with no redundant or extraneous information. Key information is front-loaded in the first sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 required parameters), strong annotations, and presence of an output schema, the description is complete. It covers the return structure, default behavior, scope options, and points to related tools for different needs. Since an output schema exists, the description rightly avoids over-explaining return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% description coverage for all three parameters, including formats, defaults, and enum meanings. The description adds a little usage guidance ('Use escopo dia/mes/cn') but does not substantially extend parameter semantics beyond what the schema already specifies, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Obtém' (obtains) and clearly identifies the resource: the agenda of plenary sessions (Senado or Congresso Nacional), by day or month, including the voting agenda. It explicitly distinguishes itself from sibling tools by naming senado_resultado_plenario and senado_encontro_plenario as alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit direction on when to use this tool versus alternatives: 'Para o resultado já apreciado use senado_resultado_plenario; detalhes de uma sessão via senado_encontro_plenario.' It also explains the default behavior (sem data assume hoje) and the meaning of the escopo parameter, giving clear context for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_autores_atuaisAutores em exercícioARead-onlyIdempotentInspect
Lista parlamentares autores de processos em tramitação, ordenados por produção (maior número de matérias primeiro). Atenção à semântica: 'atual' significa 'com processo AINDA EM TRAMITAÇÃO', não 'mandato vigente' — a lista mistura senadores, deputados e ex-parlamentares, e a mesma pessoa pode aparecer 2× com códigos distintos (ex.: como 'Senador' e como 'Deputado', pelo tratamento); não use como lista de senadores em exercício (para isso, senado_listar_senadores). Retorna { count, total, autores }, cada autor com codigo, nome, tratamento, uf e quantidadeMaterias. Filtros opcionais uf e nome (busca parcial sem acento); limite padrão 50 (máx. 1000). Use o codigo em senado_obter_senador ou senado_search_processos (codigoParlamentarAutor).
| Name | Required | Description | Default |
|---|---|---|---|
| uf | No | Filtrar por UF (ex: SP) | |
| nome | No | Filtrar por nome (busca parcial) | |
| limite | No | Máximo de resultados (padrão: 50) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, etc.), the description discloses crucial behavioral traits: the semantic meaning of 'atual' as 'with process still in progress', the mixing of senators/deputies/ex-parliamentarians, and the possibility of the same person appearing twice with different codes. This context is not available in the annotations and significantly shapes how an agent should interpret results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Although the description is relatively long, every sentence carries essential information: the action, the critical semantic warning, the alternative tool, the return structure, the filter details, and the downstream usage. It is well-structured, front-loaded with the primary purpose and the most important caveat, and avoids redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and rich annotations, the description still goes above and beyond by covering edge cases like duplicate codes, misleading semantics, and integration with other tools. It provides all necessary context for an agent to select and invoke the tool correctly, leaving no ambiguity about behavior or return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides full coverage (100%) for the three parameters with descriptions, so the baseline is 3. The description adds extra semantics by clarifying that `nome` performs a partial accent-insensitive search and by restating the default/maximum for `limite`. It also links the result fields to other tools, which helps the agent understand the parameter outputs, but the parameter-related additions are modest.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Lista parlamentares autores de processos em tramitação', which clearly specifies the verb (list), resource (parliamentary authors of in-progress processes), and ordering (by production). It also distinguishes this tool from the closest sibling by explicitly warning not to use it as a list of current senators, which is a clear differentiator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when not to use the tool: 'não use como lista de senadores em exercício' and directs to the alternative `senado_listar_senadores`. It also provides downstream usage instructions, telling the agent to use the returned `codigo` in `senado_obter_senador` or `senado_search_processos`, which is concrete guidance on next steps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_buscar_legislacaoBuscar legislação federalARead-onlyIdempotentInspect
Busca normas jurídicas federais já promulgadas (leis, decretos, leis complementares, emendas constitucionais etc.) combinando os filtros tipo, numero, ano e data em modo AND; informe ao menos um: uma chamada sem nenhum filtro retorna erro determinístico, não uma lista vazia. Somente leitura, sem efeitos colaterais; consulta ao vivo à base oficial de dados abertos, cujos resultados podem variar entre chamadas. Retorna { count, normas } sem paginação: count é o total de normas que casam (0, sem erro, quando nenhuma casa) e cada item traz codigo, tipo, descricaoTipo, numero, ano, data (ISO AAAA-MM-DD), norma, ementa e apelido, com null nos campos ausentes. Passe o codigo a senado_obter_legislacao para obter a indexação temática e a URL do texto integral. Para proposições ainda em tramitação (PEC, PL, PLP, MPV) use senado_buscar_materias; esta ferramenta cobre apenas normas já promulgadas.
| Name | Required | Description | Default |
|---|---|---|---|
| ano | No | Ano de assinatura/promulgação da norma, entre 1900 e 2100; ex.: 2021. | |
| data | No | Data exata de assinatura no formato compacto AAAAMMDD (8 dígitos, sem separadores), ex.: 20210401. Atenção: difere do campo `data` retornado, que vem em ISO AAAA-MM-DD. | |
| tipo | No | Sigla oficial da espécie normativa: LEI, DEC (decreto), LCP (lei complementar), EMC (emenda constitucional), entre outras; catálogo completo em senado_tabelas_referencia (tabela=tipos-norma). Omitir alarga a busca a todas as espécies. | |
| numero | No | Número sequencial da norma (inteiro > 0), ex.: 14133 para a Lei n. 14.133/2021. Combina com `tipo` e `ano` em modo AND. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
As anotações já cobrem readonly, idempotência e openWorld. A descrição acrescenta comportamentos específicos: erro determinístico sem filtros, ausência de paginação, significado de count (0 sem erro), campos com null, e a natureza de consulta ao vivo. Isso enriquece a transparência, embora não detalhe autenticação ou limite de taxa.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
O texto é relativamente longo, mas cada sentença contribui com informação relevante: propósito, filtros, comportamento de erro, formato de retorno, relacionamento com outras ferramentas. A estrutura é organizada, com a ideia principal no início e detalhes progressivos, sem redundâncias graves.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A descrição cobre todos os aspectos necessários para uso correto: finalidade, escopo, requisitos de filtro, formato de retorno (mesmo havendo output schema, explica o significado de count e campos null), comportamento de erros e ferramenta de continuação. É completa para a complexidade da operação.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Apesar da cobertura do schema ser 100%, a descrição vai além ao explicar o modo AND entre parâmetros, a obrigatoriedade de ao menos um filtro (com consequência de erro), e a diferença de formato da data entre consulta (AAAAMMDD) e retorno (ISO AAAA-MM-DD). Isso acrescenta semântica de uso que não está explícita no schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A descrição usa o verbo específico 'Busca', identifica claramente o recurso (normas jurídicas federais já promulgadas) e lista os tipos cobertos. Além disso, diferencia-se dos irmãos ao mencionar explicitamente que proposições em tramitação devem ser buscadas em senado_buscar_materias, distinguindo o escopo com precisão.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Fornece orientação direta de quando usar: para normas já promulgadas, e aponta explicitamente a alternativa senado_buscar_materias para proposições em tramitação. Também estabelece a condição de uso de pelo menos um filtro, explicando o erro determinístico, e recomenda o encadeamento com senado_obter_legislacao.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_buscar_materiasBuscar matérias legislativasARead-onlyIdempotentInspect
Busca matérias legislativas por tipo (PEC, PL, PLP, MPV), número, ano, palavras-chave, autor, período de apresentação ou situação de tramitação; informe ao menos um critério. Para pedidos como 'matérias recentes sobre X', use palavraChave, ano ou dataInicioApresentacao/dataFimApresentacao, ordenarPor: 'dataApresentacao', ordem: 'desc' e limite baixo (ex: 10); não é necessário chamar detalhes para listar resultados. Retorna { count, total, materias[] }, cada item com codigo (codigoMateria), sigla, numero, ano, ementa, autor, situacao, dataApresentacao, url e tramitando. Use codigo em senado_obter_materia apenas quando o usuário pedir detalhe/tramitação/textos. limite padrão 100 (máx. 500); ao truncar inclui aviso. Ex.: { palavraChave: 'inteligência artificial', ano: 2025, limite: 10 } ou { sigla: 'PEC', numero: 45, ano: 2019 } (datas em YYYYMMDD ou ISO).
| Name | Required | Description | Default |
|---|---|---|---|
| ano | No | Ano da matéria | |
| ordem | No | Direção da ordenação quando ordenarPor=dataApresentacao | desc |
| sigla | No | Tipo: PEC, PL, PLP, MPV, PDL, PRS, etc. | |
| limite | No | Máximo de resultados (padrão: 100) | |
| numero | No | Número da matéria | |
| autorNome | No | Nome do autor | |
| ordenarPor | No | Ordenação local; padrão dataApresentacao para favorecer pedidos recentes | dataApresentacao |
| tramitando | No | Apenas em tramitação | |
| palavraChave | No | Termo livre buscado nas palavras-chave do processo | |
| dataFimApresentacao | No | Data final de apresentação (YYYYMMDD ou YYYY-MM-DD) | |
| dataInicioApresentacao | No | Data inicial de apresentação (YYYYMMDD ou YYYY-MM-DD) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, covering the safety profile. The description adds behavioral details beyond those: default limit of 100 with max 500, truncation includes an 'aviso', default ordering by dataApresentacao to favor recent items, and the requirement to inform at least one criterion. These are useful but some (limit default) are also present in the schema, so it's not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph but every sentence serves a purpose: scope, usage guidance, return shape, cross-tool integration, limit/truncation, and examples. Code-formatted tokens aid scanning. It's slightly longer than necessary and could be split into sections, but it remains tight and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 parameters, output schema, many siblings), the description is remarkably complete: it specifies the return shape ({count, total, materias[]}), the fields in each item, the truncation 'aviso', ordering defaults, and how to chain to senado_obter_materia. It also provides two concrete examples covering both keyword and exact-number searches. No significant use case is left unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While schema coverage is 100%, the description adds meaningful semantics beyond individual property definitions: it demonstrates how to combine parameters for a 'recent matters' query, explains that the output field 'codigo' corresponds to 'codigoMateria', and clarifies acceptable date formats. The worked examples show realistic usage patterns that the schema alone doesn't convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb 'Busca' and enumerates searchable criteria (tipo, número, ano, palavras-chave, autor, período, situação), making the tool's scope unmistakable. It also distinguishes itself from the sibling senado_obter_materia by explicitly mapping the returned 'codigo' to detail retrieval, which clarifies what this tool does vs. the detail tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance for 'matérias recentes sobre X' (combining palavraChave, ano, date range, ordenarPor, ordem, limite baixo) and a clear when-not-to-use: use senado_obter_materia only when details/tramitação/textos are requested. It also states that at least one criterion must be informed and says calling details isn't needed for listing, offering concrete alternatives and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_ceapsGastos CEAPS (cota parlamentar)ARead-onlyIdempotentInspect
Despesas da Cota para Exercício da Atividade Parlamentar (CEAPS) dos senadores em um ano. Para perguntas de maior/menor/média/mediana/distribuição/ranking ('quem gastou mais CEAPS', 'gasto mediano', 'distribuição das despesas') use estatisticas=true: computa min/máx/média/mediana/desvio/percentis sobre TODAS as despesas filtradas e devolve top/bottom (padrão 10) com identificadores — os modos agregados só somam por grupo e não revelam a distribuição nem o extremo individual. Sem agruparPor → distribuicao das despesas individuais + top/bottom; com agruparPor (senador/tipo/mes/fornecedor) → grupos[] ranqueados por soma decrescente (grupos[0] = maior gastador), cada um com sua mini-distribuição. Sem estatisticas: nos modos agregados (por-senador/por-tipo/por-mes/por-fornecedor, padrão por-senador) traz agregado[] ordenado por total desc com chave, total e despesas (contagem); em modo='detalhe' traz despesas[] (mês, data, senador, tipoDespesa, fornecedor, cnpjCpf, valor). Filtre por mes, codSenador, nomeSenador, tipoDespesa ou fornecedor (busca parcial); limite cap 100 com aviso ao truncar. Obtenha codSenador via senado_listar_senadores.
| Name | Required | Description | Default |
|---|---|---|---|
| ano | Yes | Ano das despesas | |
| mes | No | Filtrar por mês | |
| modo | No | Agregação ou detalhe (padrão: por-senador). Ignorado quando estatisticas=true | por-senador |
| topN | No | Tamanho das listas top/bottom quando estatisticas=true sem agruparPor (padrão: 10, máx: 100) | |
| limite | No | Máximo de linhas no resultado (padrão: 100) | |
| agruparPor | No | Quando estatisticas=true, ranqueia os grupos por soma decrescente (grupos[0] = maior gastador), cada grupo com sua mini-distribuição | |
| codSenador | No | Filtrar por código do senador | |
| fornecedor | No | Filtrar por fornecedor (busca parcial) | |
| nomeSenador | No | Filtrar por nome do senador (busca parcial) | |
| tipoDespesa | No | Filtrar por tipo de despesa (busca parcial) | |
| estatisticas | No | Computa estatísticas (min/máx/média/mediana/percentis) + ranking top/bottom sobre todas as despesas filtradas. Use para 'quem gastou mais/menos', 'gasto médio/mediano', 'distribuição', 'ranking' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive, but the description adds substantial behavioral context: it explains the default mode (por-senador), ordering (descending total), the effect of agruparPor (groups ranked by sum, each with mini-distribution), the behavior without agruparPor (individual distribution plus top/bottom), and the limite cap with aviso truncation. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but information-dense, with every sentence contributing actionable details about modes, outputs, filters, and parameters. It is front-loaded with the core purpose, but the lack of paragraph breaks makes it harder to scan. The comprehensiveness is justified for a tool with 11 parameters and multiple modes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the presence of an output schema, the description covers all essential aspects: return shapes for each mode (agregado[], grupos[], despesas[], distribuicao, top/bottom), ordering, defaults, filters, limits, and the relationship between parameters. It also explains when to use estatisticas vs. aggregation, making it self-sufficient for an agent to select and use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, but the description adds critical semantics beyond the schema. It clarifies interactions: modo is ignored when estatisticas=true, agruparPor is only relevant with estatisticas=true, limite has a cap of 100 with a truncation warning, and topN default/max. These relationships are essential for correct invocation and are not evident from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (CEAPS expenses of senators) and the timeframe (a year), with an explicit verb implied by the tool's function (query/list expenses). It distinguishes this tool from siblings like senado_orcamento_parlamentar by focusing specifically on CEAPS and detailing its multiple aggregation modes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use estatisticas=true vs. regular modes, differentiates comportamento with agruparPor, and clarifies when aggregates hide distribution details. It also directs users to senado_listar_senadores for obtaining codSenador, giving a clear alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_contratacao_detalheDetalhar contrataçãoARead-onlyIdempotentInspect
Detalha uma seção específica de uma contratação já identificada pelo id. tipo indica a natureza do registro: contratos (contrato firmado; padrão), atas_registro_preco (compromisso de preços para compras futuras) ou notas_empenho (reserva orçamentária do gasto). secao escolhe o aspecto: itens, pagamentos, garantias (qualquer tipo), aditivos (só contratos) ou acionamentos (só atas_registro_preco). Retorna { id, tipo, secao, count, total, itens } com os registros brutos da seção (campos conforme a API administrativa), limitados a limite (padrão 100, máx 500) — count < total indica truncagem; seção sem registros retorna count 0 e itens vazio; combinações secao×tipo inválidas (ex.: aditivos fora de contratos) retornam erro. Atenção: a fonte NÃO publica o valor do contrato em nenhuma seção; apenas aditivos traz valor, referente ao termo aditivo (às vezes nulo) — não procure valor monetário em itens/pagamentos/garantias. Obtenha o id via senado_contratos ou senado_contratacoes_lista — para localizar a contratação (não detalhá-la) use aquelas ferramentas.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID da contratação (campo 'id' das listas de contratos/atas/empenhos) | |
| tipo | No | contratos = contrato firmado (padrão); atas_registro_preco = compromisso de preços p/ compras futuras; notas_empenho = reserva orçamentária do gasto | contratos |
| secao | Yes | Aspecto a detalhar: itens/pagamentos/garantias (qualquer tipo); aditivos (só contratos); acionamentos (só atas_registro_preco) | |
| limite | No | Máximo de itens (padrão 100, máx 500); count < total sinaliza corte |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description discloses important behaviors: return shape {id, tipo, secao, count, total, itens}, truncation semantics (count < total), empty section response, invalid combination errors, and the fact that only aditivos may contain a null valor. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence carries essential information: parameter explanations, return format, edge cases, and cross-tool guidance. It is well-structured, front-loading the core action and then layering details logically.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the rich annotations, the description is complete. It covers return values, truncation, empty results, invalid combinations, and the critical caveat about monetary values. The output schema exists, so return value explanation is a bonus, and the description still adds necessary contextual warnings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds semantic meaning by explaining 'tipo' as nature of the record and 'secao' with valid combos, plus the limitation behavior of 'limite'. While some repetition exists, it enriches understanding of the parameters and their interplay.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb+resource+scope: 'Detalha uma seção específica de uma contratação já identificada pelo id.' It clearly distinguishes itself from sibling tools by explicitly stating that senado_contratos and senado_contratacoes_lista are for locating, not detailing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance, including how to obtain the id via sibling tools and which secao×tipo combinations are valid. It also warns about invalid combinations and the absence of monetary values, giving clear direction for correct tool usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_contratacoes_listaListar contrataçõesARead-onlyIdempotentInspect
Lista, conforme tipo, atas de registro de preço, notas de empenho ou menores aprendizes do Senado, com filtro textual opcional aplicado no Worker sobre todos os campos. Retorna { tipo, count, total, registros }; para atas_registro_preco/notas_empenho cada registro segue o formato de contrato (id, numero, objeto, empresa, subEspecie, vigencia...), enquanto menores_aprendizes vêm como registros brutos da API (campos não normalizados). Ordenação por ordem sobre a sequência de id do upstream: desc (padrão) = mais recentes primeiro, asc = mais antigos primeiro; offset pula registros para paginar a cauda. Limitado a limite (padrão 50, máx 500), com aviso ao truncar; tipo sem registros retorna lista vazia. Para aprofundar uma ata/empenho, use o id em senado_contratacao_detalhe.
| Name | Required | Description | Default |
|---|---|---|---|
| tipo | Yes | Qual lista consultar | |
| ordem | No | desc = mais recentes primeiro (padrão); asc = mais antigos primeiro (ordem de id do upstream) | desc |
| filtro | No | Filtro textual (empresa, objeto, etc.) | |
| limite | No | Máximo de resultados (padrão: 50) | |
| offset | No | Registros a pular após a ordenação (paginação; padrão: 0) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses the return structure `{ tipo, count, total, registros }`, highlights differing record formats for `menores_aprendizes` (raw, non-normalized) vs others, explains sorting semantics based on upstream id sequence, mentions a truncation warning (`aviso`), and notes empty results for `tipo` without records. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense without redundancy: it opens with the core action, then covers return shape, type-specific formats, sorting, pagination, limits/truncation, and ends with an alternative tool pointer. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with 5 parameters, an output schema, and diverse subtypes, the description covers all key behaviors: return shape, record format variations, order semantics, pagination, truncation, empty-list handling, and the cross-reference to the detail tool. It is fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema descriptions cover all parameters, the tool description adds substantive meaning: it maps each `tipo` enum to a specific data source, explains the `ordem` default (desc = most recent first), clarifies `offset` paginates the tail, and describes `limite`'s truncation behavior. This goes well beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists three specific types of procurement records (atas de registro de preço, notas de empenho, menores aprendizes) based on the `tipo` parameter. It distinguishes from the sibling `senado_contratacao_detalhe` by noting the latter is for deeper detail on a specific ata/empenho.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: use `tipo` to select the list, apply `filtro` for textual search, control ordering and pagination with `ordem` and `offset`, and cap results with `limite`. It explicitly points to `senado_contratacao_detalhe` for deepening into a specific record, acting as a clear alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_contratosContratos do SenadoARead-onlyIdempotentInspect
Busca contratos administrativos do Senado por fornecedor, CNPJ, ano, número, objeto ou mão de obra (base completa baixada e filtrada no Worker; busca parcial sem acento em objeto/fornecedor/número). Retorna { count, total, contratos }, onde cada item traz id, numero, objeto, empresa {nome, cnpj}, subEspecie, dataAssinatura, vigencia e unidadeGestora. Atenção: a fonte NÃO publica o valor do contrato (nenhum campo monetário aqui nem nas seções de detalhe; apenas a seção aditivos de senado_contratacao_detalhe traz valor, referente ao termo aditivo) — não gaste chamadas procurando valor. A lista mistura subespécies (CT = contratos, AC = acordos de cooperação, TD = termos de doação etc.); distinga pelo campo subEspecie retornado. Limitado a limite itens (padrão 50, máx 500), com aviso quando há truncamento. Use o id retornado em senado_contratacao_detalhe para itens, pagamentos, garantias ou aditivos.
| Name | Required | Description | Default |
|---|---|---|---|
| ano | No | Ano do contrato | |
| cnpj | No | CNPJ/CPF exato do fornecedor | |
| limite | No | Máximo de resultados (padrão: 50) | |
| numero | No | Número do contrato (busca parcial) | |
| objeto | No | Texto no objeto do contrato | |
| maoDeObra | No | Apenas contratos com mão de obra residente | |
| fornecedor | No | Nome do fornecedor (busca parcial) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, but the description adds substantial behavioral context beyond that: it explains the data source (base baixada e filtrada no Worker), the partial accent-insensitive search behavior, the result envelope `{ count, total, contratos }`, the truncation via 'limite' and 'aviso', the mix of subespécies, and the absence of monetary values. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than average but every sentence carries useful information—search filters, accent behavior, return shape, the no-value warning, and the pointer to the detail tool. It is front-loaded with the core purpose and includes the caveat about missing monetary fields in a prominent 'Atenção' paragraph. Slightly dense, but justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully covers the tool's behavior for a complex search endpoint: it explains the queryable fields, the response structure including nested `empresa` object, the `subEspecie` distinctions, the truncation mechanism, and the relationship to senado_contratacao_detalhe. It also warns about a likely data gap (no monetary value), which prevents wasted calls. Given the output schema is not provided separately, this description carries the completeness burden and does so admirably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds extra meaning by clarifying that searches on objeto/fornecedor/número are partial and accent-insensitive, and by grouping the filters into a natural-language list. It also repeats the 'limite' default and max, which slightly duplicates schema info, but the partial-match detail and the explicit mention of CNPJ exactness (from schema) enrich the parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb ('Busca') and a clear resource ('contratos administrativos do Senado'), listing all filters (fornecedor, CNPJ, ano, número, objeto, mão de obra). It distinguishes itself from siblings like senado_contratacao_detalhe by explicitly directing the user to use the returned id for details, and it differentiates partial vs. exact search behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use context: it is the filtered search tool for contracts, with partial accent-insensitive matching. It also gives a strong 'when not to' warning—'não gaste chamadas procurando valor'—because the source does not publish contract values. It points to senado_contratacao_detalhe for related data, making the choice of tool and follow-up actions clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_discursos_plenarioDiscursos no plenárioARead-onlyIdempotentInspect
Lista todos os discursos realizados em plenário num período de datas (dataInicio/dataFim obrigatórias, formato YYYYMMDD). Retorna { periodo, count, discursos }, cada item com codigo, data, casa, tipoUsoPalavra, resumo, indexacao, url, nomeParlamentar, codigoParlamentar, partido e uf. Para discursos de um parlamentar específico use senado_discursos_senador; obtenha o texto integral com senado_discurso_texto.
| Name | Required | Description | Default |
|---|---|---|---|
| dataFim | Yes | Data fim (YYYYMMDD) | |
| dataInicio | Yes | Data início (YYYYMMDD) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, idempotent, and non-destructive, so the safety profile is covered. The description goes further by disclosing the exact return shape (`{ periodo, count, discursos }` with field list) and implicitly states that this tool returns metadata rather than full text, since it directs users to senado_discurso_texto for the full text. While it doesn't discuss pagination or limits, it provides solid behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences front-load purpose, then return shape, then alternatives. No filler or redundant restatement of annotations; each clause contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple two-parameter schema, strong annotations, and the fact that an output schema exists, the description is complete: it names the parameters and their format, states the output structure, and points to sibling tools for adjacent needs. It does not leave significant gaps for an agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides both parameter names, descriptions, patterns, and required flags, so coverage is 100%. The description repeats the required date format and emphasizes that the parameters define the period, but does not add substantive semantics beyond what the schema conveys (e.g., inclusivity or max range). Thus a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with 'Lista todos os discursos realizados em plenário num período de datas', which names a specific verb (Lista), resource (discursos em plenário), and scope (date range). It also distinguishes itself from sibling tools by explicitly directing users to senado_discursos_senador for individual parlamentar speeches and senado_discurso_texto for full text, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear usage context: use this tool to list all plenary speeches within a required date range, and explicitly names alternative tools for filtering by parlamentar or retrieving full text. The final sentence gives concrete when-to-use-versus-alternative guidance, so an agent can decide correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_discursos_senadorDiscursos de um senadorARead-onlyIdempotentInspect
Lista pronunciamentos de um senador, filtráveis por período e casa. tipo (padrão discursos) alterna entre discursos (falas próprias) e apartes (intervenções em falas de outros) — muda a fonte upstream e o conteúdo, mantendo a mesma estrutura. Retorna { codigoSenador, tipo, count, discursos } sem paginação (count 0 e lista vazia quando não há pronunciamentos no período), cada item com codigo, data, casa, tipoUsoPalavra, resumo, indexacao, url e nomeParlamentar — sem o texto integral. ATENÇÃO: para tipo=discursos, omitir dataInicio/dataFim faz a fonte retornar SOMENTE os últimos 30 dias (frequentemente vazio) — para o histórico, informe o período explícito (ex.: desde o início do mandato); apenas apartes traz o histórico completo sem período. Obtenha o codigoSenador via senado_listar_senadores e o texto completo em senado_discurso_texto (campo codigo). Para discursos de todos os senadores num período use senado_discursos_plenario, não esta.
| Name | Required | Description | Default |
|---|---|---|---|
| casa | No | Restringe à casa: SF (Senado Federal) ou CN (Congresso Nacional); vazio traz ambas | |
| tipo | No | discursos = pronunciamentos próprios (padrão); apartes = intervenções em discursos de outros — altera a fonte e o conteúdo retornado | discursos |
| dataFim | No | Fim do período (YYYYMMDD); para tipo=discursos, omitir o período limita a resposta aos últimos 30 dias | |
| dataInicio | No | Início do período (YYYYMMDD); use junto com dataFim. Para tipo=discursos, sem período a fonte retorna só os últimos 30 dias | |
| codigoSenador | Yes | Código único do senador |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations by disclosing no pagination, empty response format, and the 30-day default window for `discursos` when dates are omitted. These are critical behaviors not inferable from readOnlyHint or idempotentHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence earns its place, covering purpose, variants, output shape, warnings, and cross-references. It is well-structured with a clear warning section and no redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers output structure, edge cases (empty results), and important gotchas (30-day limit). Despite the tool's complexity, the description provides sufficient context for an agent to select and invoke it correctly without needing the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even with 100% schema coverage, the description adds deeper meaning: `tipo` changes the upstream source and content, and date parameters interact with `tipo` to affect the returned range. This clarifies usage implications beyond the schema's field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists a senator's pronouncements with period and house filters, and explicitly distinguishes `discursos` vs `apartes`. It differentiates from siblings by referencing `senado_discursos_plenario` and `senado_discurso_texto`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: obtain `codigoSenador` via `senado_listar_senadores`, full text via `senado_discurso_texto`, and all senators via `senado_discursos_plenario`. Also explains when to provide explicit date ranges vs. omitting them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_discurso_textoTexto de um discursoARead-onlyIdempotentInspect
Obtém o texto integral de um único pronunciamento pelo codigoPronunciamento. Retorna { codigoPronunciamento, texto }, onde texto é a transcrição completa (string, podendo ter dezenas de KB — não é truncada nem paginada); codigo inexistente ou discurso sem texto retorna erro. Obtenha o codigoPronunciamento antes via senado_discursos_senador ou senado_discursos_plenario (campo codigo). Para apenas listar/filtrar discursos (resumo, data, autor) use aquelas ferramentas; esta traz o texto de um discurso já identificado.
| Name | Required | Description | Default |
|---|---|---|---|
| codigoPronunciamento | Yes | Código do pronunciamento (campo `codigo` de senado_discursos_senador ou senado_discursos_plenario); um por discurso |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark the operation as read-only and idempotent. The description goes beyond by disclosing that the text is complete (not truncated or paginated), can be tens of KB, and that a nonexistent code or a speech without text returns an error. This gives the agent concrete expectations about size and failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact—four sentences in Portuguese—and each sentence adds distinct value: purpose, return shape/size, error behavior, and usage context. It is front-loaded with the primary function and avoids repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter retrieval tool, the description covers all essential aspects: what it returns, how to get the input, error conditions, and alternatives. The existence of an output schema further underscores that return values are well-defined, and the description still explains the key return characteristics. It is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides a thorough description of codigoPronunciamento, including its source ('campo codigo de senado_discursos_senador ou senado_discursos_plenario') and uniqueness. With 100% schema description coverage, the description's mention of how to obtain the code is redundant but harmless; it adds no new parameter-level semantics. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Obtém o texto integral de um único pronunciamento' (Gets the full text of a single speech). It specifies the resource (pronunciamento) and distinguishes it from sibling list/filter tools by noting this one returns the full text of an already identified speech. This makes the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: obtain the codigoPronunciamento first via senado_discursos_senador or senado_discursos_plenario, and use those tools instead when only listing/filtering is needed. It even says 'Para apenas listar/filtrar discursos... use aquelas ferramentas' (to just list/filter, use those tools), giving a clear when-not-to-use instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_distribuicao_materiasRanking de autoria/relatoria por comissãoARead-onlyIdempotentInspect
Ranqueia parlamentares pela quantidade de matérias numa comissão (siglaComissao), medindo carga de trabalho legislativo. tipo escolhe o eixo: autoria (matérias de autoria; padrão) ou relatoria (matérias relatadas). Retorna { siglaComissao, tipo, count, parlamentares } ordenado por quantidade desc, sem paginação (count 0 quando a comissão não tem registros), cada item com codigo, nome, partido, uf e quantidade. codigoParlamentar restringe a um parlamentar e só tem efeito em tipo=autoria (ignorado em relatoria). Descubra a sigla via senado_listar_comissoes; use o codigo do parlamentar em senado_obter_senador. Para a lista das matérias em si (não a contagem) use senado_buscar_materias.
| Name | Required | Description | Default |
|---|---|---|---|
| tipo | No | autoria = matérias de autoria por parlamentar (padrão); relatoria = matérias relatadas | autoria |
| siglaComissao | Yes | Sigla da comissão (ex: CCJ, CAE) | |
| codigoParlamentar | No | Restringe a um parlamentar — efetivo apenas em tipo=autoria (ignorado em relatoria) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description aligns with this by describing a read-only ranking operation. It adds valuable behavioral context beyond annotations: no pagination, count=0 for empty commissions, ordering by quantidade desc, and codigoParlamentar being ignored in relatoria mode.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: it front-loads the core purpose, then covers output shape, edge cases, parameter behavior, and cross-references to sibling tools. There is no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, the description is highly complete: it covers the return shape, sorting, pagination absence, zero-count behavior, parameter-specific effects, and how to obtain necessary inputs from related tools. The presence of an output schema lowers the burden for return-value details, but the description covers them anyway.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the parameters. The description adds narrative framing (e.g., tipo as the 'eixo' and codigoParlamentar's interaction with tipo), which reinforces meaning but does not significantly extend the schema's explicit parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Ranqueia parlamentares pela quantidade de matérias numa comissão', clearly stating what the tool computes. It also distinguishes itself from sibling tools like senado_buscar_materias by explicitly noting the tool returns counts/ranking, not the list of matérias.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: use senado_buscar_materias when you need the actual list of matérias, and points to senado_listar_comissoes and senado_obter_senador for resolving IDs. It also clarifies the default tipo and the special behavior of codigoParlamentar, making it clear when the tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_ecidadania_consultas_analiseAnálise de consultas públicasARead-onlyIdempotentInspect
Analisa o conjunto completo de consultas públicas abertas (matérias em tramitação) do e-Cidadania por grau de concordância cidadã, conforme modo: consenso → consultas com alta concentração de votos numa direção, ordenadas da maior para a menor concentração; usa percentualMinimo (padrão 85%). polarizada → consultas com votação equilibrada (~50/50), ordenadas da menor para a maior diferença sim/não; usa margemPolarizacao (padrão 15 pontos). Analisa por padrão consultas aberta (opinião pública atual). Quando a matéria sai de tramitação a consulta passa a encerrada, então status: "encerrada"/"todas" cobrem o conjunto que foi encerrado desde a ingestão (cresce com o tempo); fechadas antes da 1ª carga não são capturadas. Todos os modos aceitam minimoVotos (padrão 1000) e limite (padrão 10). Retorna { modo, criterio, count, consultas }. É esta a ferramenta para 'consultas mais votadas', ranking ou panorama ATUAL da votação das consultas em tramitação — não confundir com senado_ecidadania_consultas_votos, que é o acervo HISTÓRICO (matérias já arquivadas) com quebra por UF. Para o detalhe de uma consulta use senado_ecidadania_obter_consulta.
| Name | Required | Description | Default |
|---|---|---|---|
| modo | No | consenso (alta concordância) ou polarizada (~50/50) | consenso |
| limite | No | Número máximo de resultados | |
| status | No | Recorte do conjunto (padrão: aberta = opinião atual). encerrada cobre consultas que saíram de tramitação desde a ingestão (cresce com o tempo); fechadas antes da 1ª carga não são capturadas. | aberta |
| minimoVotos | No | Mínimo de votos para considerar | |
| percentualMinimo | No | Modo consenso: percentual mínimo numa direção | |
| margemPolarizacao | No | Modo polarizada: considera polarizado se diferença ≤ este percentual |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and idempotent, and the description adds meaningful behavioral context beyond them: the status lifecycle (aberta vs. encerrada), the limitation that consultations closed before first ingestion are not captured, and the sorting/criteria logic per mode. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and information-rich, front-loading the core purpose and then systematically covering modes, status, defaults, and sibling distinctions. It is longer than typical but every sentence adds value; no filler, though a slightly tighter structure could make it easier to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, annotations, and output schema presence, the description covers all essential aspects: modes, parameter semantics, status subtleties, return format, and relationship to sibling tools. It leaves no significant ambiguity about what the tool does or when it should be used.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema provides 100% parameter coverage with descriptions, so the baseline is 3. The tool description adds semantic nuance by explaining what consenso and polarizada mean operationally and how percentualMinimo and margemPolarizacao drive the ranking. This extra context justifies a 4, though it mostly reinforces schema details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes the complete set of open e-Cidadania consultations by citizen agreement, with specific verbs and a precise resource. It also explicitly distinguishes itself from senado_ecidadania_consultas_votos (historical) and senado_ecidadania_obter_consulta (detail), making it unmistakable which tool to use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: "É esta a ferramenta para 'consultas mais votadas', ranking ou panorama ATUAL" and contrasts with the historical sibling tool. It also explains when to use consenso vs. polarizada modes and the meaning of status values, so the agent can select the right parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_ecidadania_consultas_votosVotos em consultas por UFARead-onlyIdempotentInspect
Acervo histórico de votos das consultas públicas do e-Cidadania, com quebra por UF (fonte: CSV Arquimedes; ~15 mil matérias, atualizado semanalmente). Use apenas quando o pedido for pelo acervo/arquivo histórico ou por votos por estado (UF); para 'consultas mais votadas', ranking ou opinião ATUAL das consultas em tramitação use senado_ecidadania_consultas_analise. Diferente de senado_ecidadania_listar_consultas (consultas em tramitação): aqui o conjunto é o arquivo de matérias já consultadas — status vem como Descontinuado no arquivo de origem, por isso é tratado como acervo, não como opinião atual. Retorna { count, referencePeriod, consultas }, cada item com id, materia, ementa, autoria, votosSim/votosNao/totalVotos, votosPorUf ({ UF: { sim, nao } }) e url. Use ordenarPor (total/sim/nao, padrão total) e ordem para ranking; uf para recortar e ranquear por aquele estado (só matérias com votos na UF, e cada item ganha recorteUf); materia para filtrar por código (numérico) ou trecho do nome/ementa; limite (padrão 20).
| Name | Required | Description | Default |
|---|---|---|---|
| uf | No | Sigla da UF (ex.: SP) — filtra e ranqueia por votos daquele estado | |
| ordem | No | Ordem (padrão desc) | desc |
| limite | No | Número máximo de resultados | |
| materia | No | Filtro por código da matéria (numérico) ou trecho do nome/ementa | |
| ordenarPor | No | Métrica do ranking (padrão: total de votos) | total |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds meaningful context beyond these hints: the source CSV marks status as `Descontinuado` (so data is treated as archive, not current opinion), and it mentions weekly updates and ~15k items. This deepens the agent's understanding of data freshness and interpretation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense paragraph that front-loads the core purpose, then usage boundaries, return shape, and parameter behavior. Every sentence contributes useful information without redundancy, using bold text and semicolons to improve readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers tool scope, usage exclusions, data source and freshness, return format, and parameter semantics. With output schema and annotations present, nothing critical is missing for an agent to correctly select and invoke the tool. The archive-vs-current distinction and UF-specific behavior are especially valuable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema provides descriptions for all 5 parameters (100% coverage), the description adds significant semantic value. It explains how `uf` affects ranking and adds a `recorteUf` field to results, clarifies that `materia` filters by numeric code or text fragment, and specifies defaults for `ordenarPor` and `limite`. This goes well beyond the schema field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as providing historical e-Cidadania public consultation votes with UF breakdown, using specific language about the resource and scope. It explicitly distinguishes itself from sibling tools `senado_ecidadania_consultas_analise` and `senado_ecidadania_listar_consultas`, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: only for the historical archive or votes by state (UF). It also states when NOT to use it (current opinion/rankings) and names the alternative tool `senado_ecidadania_consultas_analise`. It further contrasts with `senado_ecidadania_listar_consultas` to clarify the archive nature.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_ecidadania_listar_consultasListar consultas públicasARead-onlyIdempotentInspect
Lista consultas públicas do e-Cidadania (conjunto completo das abertas — toda matéria em tramitação, ~7,7 mil), em que cidadãos votam sim/não. Retorna { count, consultas }, cada consulta com id, materia, ementa, votosSim/votosNao/totalVotos, percentualSim/percentualNao, status e url. Toda consulta entra como aberta; quando a matéria sai de tramitação ela passa a encerrada (o conjunto encerrada/todas cresce com o tempo). Consultas encerradas antes da 1ª ingestão não são capturadas. Aceita limite (padrão 20). Para o detalhe de uma consulta chame senado_ecidadania_obter_consulta com o id; para recortes analíticos (consenso/polarização) use senado_ecidadania_consultas_analise.
| Name | Required | Description | Default |
|---|---|---|---|
| limite | No | Número máximo de resultados | |
| pagina | No | Página de resultados | |
| status | No | Filtrar por status (padrão: aberta). encerrada lista consultas cuja matéria saiu de tramitação desde a ingestão (cresce com o tempo); fechadas antes da 1ª carga não são capturadas. | aberta |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint), the description discloses important behavioral traits: the status lifecycle ('Toda consulta entra como aberta; quando a matéria sai de tramitação ela passa a encerrada'), the expanding set of encerrada/todas over time, and the limitation that consultations closed before first ingestion are not captured. This is meaningful behavioral context not present in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded, starting with purpose, then return shape, then behavioral details, and ending with sibling tool routing. Each sentence adds value (e.g., the lifecycle and pre-ingestion closure caveat), but it is longer than strictly necessary and the return-shape listing overlaps with the output schema. Still, it remains well-organized without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the comprehensive schema, annotations, and output schema, the description adds the essential context an agent needs: scope, behavioral nuances, limitations, and clear routing to related tools. It does not miss critical information for deciding when to invoke and what to expect, making the tool well-specified for autonomous use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers 100% of the three parameters with rich descriptions, including the default for limite, pagination via pagina, and the status parameter's meaning and caveat. The description only repeats the limite default and status evolution, adding no new parameter semantics beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Lista') and a clear resource ('consultas públicas do e-Cidadania'), and states it returns the complete set of open consultations (~7,7 mil). It distinguishes from siblings by mentioning alternative tools like senado_ecidadania_obter_consulta for detail and senado_ecidadania_consultas_analise for analytics, making its unique scope explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool vs alternatives: 'Para o detalhe de uma consulta chame senado_ecidadania_obter_consulta com o id; para recortes analíticos (consenso/polarização) use senado_ecidadania_consultas_analise.' It also explains the status behavior (open consultations become closed when matters leave review), providing context for when the returned set changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_ecidadania_listar_eventosListar eventos interativosARead-onlyIdempotentInspect
Lista eventos interativos do e-Cidadania (audiências públicas, sabatinas, lives) — conjunto completo (corpus persistido em D1, atualizado semanalmente; ~milhares de eventos, incluindo encerrados). Retorna { count, eventos }, cada evento com id, titulo, data, hora, comissao (sigla), comentarios, status (agendado/encerrado/cancelado) e url; aceita filtro por status, por comissao (sigla) e limite (padrão 20). Para um ranking dos mais comentados, ordene por comentários (ordenarPor: "comentarios", ordem: "desc"). Para o detalhe completo de um evento use senado_ecidadania_obter_evento.
| Name | Required | Description | Default |
|---|---|---|---|
| ordem | No | Ordem (padrão desc) | desc |
| limite | No | Número máximo de resultados | |
| status | No | Filtrar por status | |
| comissao | No | Sigla da comissão | |
| ordenarPor | No | Ordenar por data ou número de comentários |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses the corpus is persisted in D1, updated weekly, includes thousands of events including encerrados, and exactly what the response contains (`{ count, eventos }` with fields). It also explains ordering behavior for ranking by comments, adding valuable context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a dense single sentence with semicolons, packing purpose, scope, return shape, fields, filters, and ordering into one breath, plus a second sentence for the alternative. It is efficient but could be slightly better structured, yet every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 optional parameters, rich annotations, and an output schema, the description covers the full use case: what data is returned, how to filter, how to order for rankings, the default limit, and when to switch to the detail tool. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the baseline is 3; the description elevates it by explaining how the parameters work together, e.g., that limite defaults to 20 and that ranking by comments requires setting ordenarPor and ordem together. It doesn't fully restate each schema description but adds contextual usage that the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb 'Lista' and resource 'eventos interativos do e-Cidadania' with concrete types (audiências públicas, sabatinas, lives), immediately distinguishing it from sibling list tools for consultas and ideias. It also contrasts with the detail tool by pointing to senado_ecidadania_obter_evento for full details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states this returns the complete set of events including closed ones, and gives direct guidance for filtering by status/comissao/limite and for ranking by comments using ordenarPor and ordem. It names the alternative for detail retrieval (senado_ecidadania_obter_evento), satisfying the when-to-use vs alternative requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_ecidadania_listar_ideiasListar ideias legislativasARead-onlyIdempotentInspect
Lista ideias legislativas propostas por cidadãos no e-Cidadania — conjunto completo (corpus persistido em D1, atualizado semanalmente; ~114 mil ideias, incluindo encerradas e convertidas em proposição). Retorna { count, ideias }, cada ideia com id, titulo, apoios, status (aberta/encerrada/convertida) e url (autor e dataPublicacao só aparecem no detalhe, vêm null aqui). Aceita filtro por status e limite (padrão 20). Para um ranking das mais apoiadas, ordene por apoios (ordenarPor: "apoios", ordem: "desc"). Para o detalhe completo de uma ideia (texto, autor, se virou projeto de lei) chame senado_ecidadania_obter_ideia com o id.
| Name | Required | Description | Default |
|---|---|---|---|
| ordem | No | Ordem de ordenação | |
| limite | No | Número máximo de resultados | |
| pagina | No | Página de resultados | |
| status | No | Filtrar por status | |
| ordenarPor | No | Campo para ordenação (apoios é o disponível no corpus; data/comentarios só no detalhe) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (read-only, idempotent, non-destructive), the description discloses important behavioral traits: the corpus is persisted in D1, updated weekly, contains ~114k ideas including closed and converted ones, and returns only summary fields with `autor`/`dataPublicacao` as `null`. It also clarifies that sorting by `data`/`comentarios` is only supported in the detail, not in this corpus.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Although somewhat long, the description is dense and well-structured: it opens with the core purpose, then covers data source, return shape, filters, sorting, and the sibling detail tool. Every sentence adds information, and formatting with bold and backticks aids readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and annotations already cover safety, the description is complete: it explains the response shape, field availability, status values, default limit, sorting behavior, and the appropriate sibling for detail. There is no obvious missing context for an agent to invoke and interpret this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, yet the description adds significant semantic value by showing how to use parameters together: 'Para um ranking das mais apoiadas, ordene por apoios (ordenarPor: "apoios", ordem: "desc")'. It also explains that `data` and `comentarios` sorting options are not available in this listing, which is not obvious from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as listing citizen-proposed legislative ideas from e-Cidadania, using a specific verb and resource. It explicitly distinguishes itself from the sibling tool for retrieving a single idea: 'Para o detalhe completo ... chame senado_ecidadania_obter_ideia com o id.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: when you need the complete corpus, filtering by status, or sorting by support count. It also prescribes the alternative tool for full idea details, and warns that fields like `autor` and `dataPublicacao` are only available via the detail endpoint, effectively telling users when not to use this listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_ecidadania_obter_consultaDetalhar consulta públicaARead-onlyIdempotentInspect
Obtém o detalhe de uma consulta pública específica do e-Cidadania. Retorna um objeto com id, materia, ementa, votosSim/votosNao/totalVotos, percentualSim/percentualNao, status, autor, relator, url. O portal não publica o período da consulta: dataAbertura/dataEncerramento (e comissao/linkMateria) vêm sempre null — a consulta abre quando a matéria entra em tramitação e encerra quando sai, refletido em status. O campo comentarios vem null: a página de consulta não possui recurso de comentários. Obtenha o id antes via senado_ecidadania_listar_consultas ou senado_ecidadania_consultas_analise.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID da consulta pública |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds valuable behavioral context: it discloses that `dataAbertura`/`dataEncerramento` (and `comissao`/`linkMateria`) always come null due to portal limitations, and that `comentarios` is also null. This goes well beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, each contributing essential information: the primary action and return fields, the always-null behavior, the absence of comments, and the id source. It is front-loaded with the main purpose and contains no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is only one parameter, an output schema exists, and annotations cover safety traits, the description completes the picture by detailing null-field behavior, status interpretation, and prerequisite id retrieval. This is fully sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of the parameter (`id`) with a basic description. The tool description adds meaning by instructing where to get the `id` (from list or analysis tools) and by explaining the return object, which reinforces the parameter's role. This is a useful addition beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the tool does: 'Obtém o detalhe de uma consulta pública específica' (gets the detail of a specific public consultation). It uses a specific verb and resource, and distinguishes itself from sibling list tools by emphasizing specificity and referencing how to obtain the id from the list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to obtain the `id` via `senado_ecidadania_listar_consultas` or `senado_ecidadania_consultas_analise`, providing a clear prerequisite and usage flow. While it doesn't explicitly list when not to use it, the contrast with list tools is implicit and clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_ecidadania_obter_eventoDetalhar evento interativoARead-onlyIdempotentInspect
Obtém o detalhe completo de um evento interativo do e-Cidadania (audiência, sabatina, live). Retorna um objeto com id, titulo, descricao, data, hora, comissao e comissaoNomeCompleto, local, status (agendado/encerrado/cancelado), comentarios, url, mais pauta (até 15 itens), convidados e videoUrl (embed do YouTube quando houver, senão null) — campos não preenchidos vêm null e id inexistente retorna erro. Obtenha o id antes via senado_ecidadania_listar_eventos. Para apenas listar/rankear eventos (sem descrição/pauta/convidados) use senado_ecidadania_listar_eventos, não esta.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identificador do evento (campo `id` de senado_ecidadania_listar_eventos) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description discloses critical behaviors: unfilled fields return null, a non-existent id returns an error, 'videoUrl' is a YouTube embed or null, and 'pauta' is limited to 15 items. This adds valuable context for the agent's expected runtime behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured in four sentences, beginning with the purpose and then detailing the return object, null/error behavior, and alternatives. While somewhat lengthy, each segment provides necessary information without fluff. It could be tightened but remains focused.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully covers the necessary context for a read-only detail-fetching tool: prerequisites, return fields, error cases, and the alternative tool for lighter queries. With an output schema and annotations already present, the description adds the remaining context an agent needs to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers the single parameter 'id' with 100% description coverage, including its source ('campo `id` de senado_ecidadania_listar_eventos'). The description repeats the instruction to obtain the id first, adding no new semantic detail about the parameter itself. Baseline 3 is appropriate given the schema's high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool's purpose with a specific verb and resource: 'Obtém o detalhe completo de um evento interativo do e-Cidadania (audiência, sabatina, live).' It distinguishes itself from the sibling tool 'senado_ecidadania_listar_eventos' by focusing on full details versus listing/ranking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Obtenha o `id` antes via senado_ecidadania_listar_eventos' states the prerequisite, and 'Para apenas listar/rankear eventos (sem descrição/pauta/convidados) use senado_ecidadania_listar_eventos, não esta' clearly indicates when not to use this tool and directs to the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_ecidadania_obter_ideiaDetalhar ideia legislativaARead-onlyIdempotentInspect
Obtém o detalhe de uma ideia legislativa do e-Cidadania. Retorna um objeto com id, titulo, descricao (texto completo, truncado em ~2000 caracteres), apoios, dataPublicacao, status, autor, url e plConvertido (sigla/número quando virou projeto de lei). O campo comentarios vem null: a página de ideia não possui recurso de comentários. Obtenha o id antes via senado_ecidadania_listar_ideias.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID da ideia legislativa |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only, idempotent, and non-destructive annotations, the description discloses critical behavioral quirks: the truncation of `descricao` to ~2000 characters, the `plConvertido` field meaning, and especially that `comentarios` is always null because the idea page has no comment feature. This prevents agent confusion and provides context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the main purpose. It lists fields efficiently and spends the remaining sentences on important caveats (truncation, null comments) and workflow. The field enumeration is slightly verbose but each element adds clarity, earning a 4 rather than 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simple nature (single ID parameter), the description covers all essential aspects: purpose, return object shape, special quirks, and the prerequisite workflow. With good annotations and an output schema present, nothing critical is missing for an agent to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the `id` parameter fully (integer, min/max, 'ID da ideia legislativa') with 100% coverage. The description adds value by telling the agent to obtain the id from `senado_ecidadania_listar_ideias`, which enriches the semantic meaning beyond the raw schema. Baseline 3 plus this extra workflow detail justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Obtém o detalhe de uma ideia legislativa do e-Cidadania.' It specifies the resource (ideia legislativa) and differentiates itself from sibling tools like listar by focusing on detail retrieval. The return fields are enumerated, leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit workflow guidance: 'Obtenha o `id` antes via `senado_ecidadania_listar_ideias`.' This tells the agent exactly when to use this tool (after obtaining an ID via the list tool) and points to the correct sibling alternative for getting the ID. It establishes clear context for usage without ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_ecidadania_sugerir_tema_enqueteSugerir tema de enqueteARead-onlyIdempotentInspect
Sugere temas para uma enquete pública mensal (seleção de pauta): analisa o conjunto completo de consultas (abertas) e as ideias do e-Cidadania e elege as de maior engajamento cidadão, filtrando por polarização/consenso e participação mínima. Retorna { criteriosAplicados, totalAnalisados, count, totalQualificados, sugestoes } (até 10), cada sugestão com tipo (consulta/ideia), id, titulo, motivo, metricas (participação/polarização) e url, ordenadas por participação. count é o número de sugestões retornadas (≤10) e totalQualificados é quantas passaram nos critérios. Critérios opcionais em criterios: evitarPolarizacao/evitarConsenso (padrão true), minimoParticipacao (padrão 500), apenasEmTramitacao (padrão true → considera só consultas abertas, com base no status real). Para investigar uma sugestão, use senado_ecidadania_obter_consulta ou senado_ecidadania_obter_ideia conforme o tipo.
| Name | Required | Description | Default |
|---|---|---|---|
| criterios | No | Critérios de seleção do tema (polarização, consenso, participação mínima, tramitação) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/idempotent annotations, the description reveals substantial behavior: it analyzes the full set of open consultations and ideas, applies default filters (minimoParticipacao=500, evitarPolarizacao/evitarConsenso=true, apenasEmTramitacao=true meaning only open consultations based on real status), returns at most 10 suggestions ordered by participation, and distinguishes count from totalQualificados. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately dense, front-loaded with the primary purpose, then methodically details the return format, optional criteria, and follow-up tools. Every sentence contributes essential information without redundancy, making it efficient despite being longer than average.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional nested parameter and an output schema, the description is remarkably complete: it specifies the exact return object fields, criteria behaviors, defaults, limits (up to 10), ordering, and points to related tools for deeper investigation. An agent could invoke this tool correctly with no further context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema already describes all parameters at 100% coverage, the description adds meaning by explaining how the nested `criterios` object controls the selection logic (e.g., defaults and their effect) and clarifies that `apenasEmTramitacao` actually relates to open consultations rather than the schema's wording 'matérias em tramitação'. This enriches the agent's understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: it suggests topics for a monthly public e-Cidadania poll by analyzing open consultations and ideas, selecting those with highest citizen engagement. It specifies the output structure and distinctly positions itself from siblings by offering a synthesized recommendation rather than raw listing, and even points to related detail tools for follow-up.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to use this tool (to generate poll topic suggestions) and when to use alternatives: 'Para investigar uma sugestão, use senado_ecidadania_obter_consulta ou senado_ecidadania_obter_ideia conforme o tipo.' This provides a clear when-not and names specific alternatives, meeting the highest bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_empresas_contratadasEmpresas contratadasARead-onlyIdempotentInspect
Busca empresas que contratam com o Senado por nome (mín. 3 caracteres) ou CNPJ/CPF (busca parcial). Retorna { count, total, empresas }, cada item com id, nome, cnpj, contratos (até 30 números) e totalContratos. Exige nome ou cnpj (a base completa é grande); limitado a limite (padrão 20, máx 100). Use o id/número de contrato em senado_contratos ou senado_contratacao_detalhe para o detalhamento.
| Name | Required | Description | Default |
|---|---|---|---|
| cnpj | No | CNPJ/CPF (busca parcial) | |
| nome | No | Nome da empresa (busca parcial, mín. 3 caracteres) | |
| limite | No | Máximo de empresas (padrão: 20) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the return structure `{ count, total, empresas }` and that each company includes `contratos` limited to 30 numbers, plus `totalContratos` – behavioral details not captured by annotations. It also reveals the constraint that at least one identifier is needed due to the large database.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences that efficiently cover the search's purpose, output format, required inputs, and next steps, with no redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool, the description provides all necessary information: search method, expected output, parameter limitations, and pointers to related tools, making it self-sufficient given the output schema and annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While the schema fully documents each parameter, the description adds the essential constraint that `nome` or `cnpj` must be provided (since both are optional in the schema), and confirms the meaning of partial search. This compensates for the schema's lack of required-field enforcement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for companies that contract with the Senate, with specific search criteria (name or CNPJ/CPF), distinguishing it from other Senate tools like senado_contratos which likely handles contract details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states that a `nome` or `cnpj` is required because the full base is large, and it directs users to use the returned `id` or contract number in `senado_contratos` or `senado_contratacao_detalhe` for further details, providing clear alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_encontro_plenarioSessões do plenárioARead-onlyIdempotentInspect
Detalhes de um encontro legislativo (sessão de plenário). Retorna { codigo, secao, encontro }, onde encontro é o objeto bruto da API (ou array, quando o upstream traz vários) cujos campos variam conforme a secao escolhida: detalhes (padrão) traz dados gerais da sessão (tipo, data, situação, presença); pauta traz as matérias previstas; resultado traz os itens apreciados e seus resultados; resumo traz uma síntese. encontro pode vir vazio se a seção não tiver dados, e a chamada retorna erro se o codigo não existir. Obtenha o codigo via senado_agenda_plenario ou senado_resultado_plenario.
| Name | Required | Description | Default |
|---|---|---|---|
| secao | No | Qual seção do encontro consultar | detalhes |
| codigo | Yes | Código do encontro/sessão |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description enriches the annotations by explaining the return structure (`encontro` can be an object or array, possibly empty), the variability of fields by section, and the error condition when `codigo` does not exist. This is beyond the read-only/idempotent hints and provides valuable behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and concise, covering the core purpose, output structure, section semantics, edge cases, and input sourcing in a compact paragraph. Every sentence provides relevant information without unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (two parameters, one enum, and several behavioral variations), the description is remarkably complete. It covers return format, possible empty results, error conditions, parameter meaning, and how to obtain the required `codigo`, so the agent can confidently invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While the schema already documents the parameters with descriptions, the description adds significant meaning by detailing the semantic effect of the `secao` parameter (e.g., `pauta` returns planned matters, `resultado` returns appreciated items) and by clarifying the `codigo` source. This helps the agent choose the correct parameter values effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to retrieve details of a legislative plenary session encounter, returning `{ codigo, secao, encontro }`. It distinguishes itself from siblings by explaining how `encontro` varies by `secao` and by referencing how to obtain the `codigo` via other specific tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives practical usage context by explaining the different `secao` options (detalhes, pauta, resultado, resumo) and explicitly instructs to obtain the `codigo` from `senado_agenda_plenario` or `senado_resultado_plenario`. However, it does not explicitly state when to prefer this tool over alternatives or mention any exclusions, though the guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_estrutura_organizacionalEstrutura organizacionalARead-onlyIdempotentInspect
Estrutura organizacional (organograma) do Senado Federal até o nível de serviço. Dada uma unidade (sigla como 'DGER' ou nome como 'Diretoria-Geral'), retorna { unidade, caminho[], totalSubordinadas, subordinadas[] }: caminho são os órgãos superiores (da cúpula até o superior imediato) e subordinadas são TODAS as unidades da subárvore (secretarias, coordenações, serviços e núcleos), cada uma com sigla, nome e nivel (profundidade relativa). Use para responder 'o que está sob a DGER', 'quais secretarias/serviços pertencem a X' ou para entender a hierarquia administrativa. Para CONTAR ou LISTAR servidores sob uma unidade, use senado_servidores com subordinadasA. Fonte: portal institucional (a API de dados abertos não publica a árvore completa).
| Name | Required | Description | Default |
|---|---|---|---|
| limite | No | Máximo de subordinadas listadas (padrão: 200) | |
| unidade | Yes | Sigla (ex.: 'DGER', 'SEGRAF') ou nome (ex.: 'Diretoria-Geral') da unidade |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, it discloses the full return contract: caminho represents superior organs, subordinadas includes ALL descendant units with sigla, nome, and nivel, and it notes the source limitation (official open data API does not publish the complete tree). This adds meaningful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and information-dense, with a clear front-loaded definition followed by output semantics, usage examples, alternative tool reference, and data-source caveat. No filler sentences are present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description need not repeat return details, yet it still provides the core output structure, clarifies depth semantics, names the appropriate alternative tool, and explains the data source. This fully equips an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for both parameters, and the description adds value for `unidade` by giving concrete examples (sigla like 'DGER' or name like 'Diretoria-Geral'). The `limite` parameter is not elaborated in the description, but the schema already defines it adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific purpose: returning the organizational hierarchy (organograma) of the Senado Federal up to service level for a given unit. It specifies the exact output shape and explicitly contrasts with sibling tool senado_servidores, making differentiation clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit usage scenarios: 'Use para responder...' for hierarchy queries, and explicitly directs users needing headcounts or server lists to senado_servidores with subordinadasA. This is strong when-to-use vs. alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_execucao_orcamentariaExecução orçamentária do SenadoARead-onlyIdempotentInspect
Execução orçamentária do Senado: despesas (dotação, empenhado, liquidado, pago; desde 2013) ou receitas próprias (previstas e arrecadadas; desde 2012). Para maior/menor/média/mediana/distribuição/ranking ('quanto o Senado pagou/arrecadou com X', 'maior grupo de despesa') use estatisticas=true: SEM agruparPor = distribuição das linhas (min/máx/média/mediana/percentis) + top/bottom; COM agruparPor = grupos ranqueados por soma decrescente (grupos[0]=maior). A coluna de valor analisada é escolhida automaticamente conforme o tipo; o resultado já traz o rótulo legível dela em campoAnalisado. Retorna { tipo, modo, ano, totalLinhas, ... }: nos modos agregados, agregado[] com { chave, ...valores } ordenado por valor; em detalhe, despesas[]/receitas[] limitado por limite (padrão 100, com aviso ao truncar). Use tipo=despesas com modo por-ano/por-acao/por-grupo/por-fonte e tipo=receitas com por-origem; filtre por ano para reduzir o volume antes de pedir detalhe. Única ferramenta de orçamento interno do Senado; não confundir com senado_orcamento_parlamentar (emendas/ofícios parlamentares ao orçamento da União).
| Name | Required | Description | Default |
|---|---|---|---|
| ano | No | Filtrar por exercício financeiro | |
| modo | No | Agregação (por-acao/por-grupo/por-fonte: despesas; por-origem: receitas) ou detalhe. Ignorado quando estatisticas=true | por-ano |
| tipo | No | despesas = dotação e execução; receitas = receitas próprias | despesas |
| topN | No | Tamanho do top/bottom nas estatísticas (padrão: 10) | |
| campo | No | Opcional: força a coluna de valor analisada; por padrão ela é escolhida conforme o tipo. Se a opção não se aplicar ao tipo, o padrão é usado automaticamente. | |
| limite | No | Máximo de linhas (padrão: 100) | |
| agruparPor | No | Opcional: agrupa e ranqueia os resultados por esta dimensão (as opções válidas dependem do tipo). | |
| estatisticas | No | Distribuição/ranking sobre as linhas: min/máx/média/mediana/percentis + top/bottom, ou grupos ranqueados por soma via agruparPor |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, non-destructive), the description discloses rich behavioral details: how `estatisticas` changes the response depending on `agruparPor`, ordering of aggregated results, automatic selection of the value column, the `limite` default of 100 with an `aviso` when truncating, and the structure of the response envelope. This is far beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and highly informative, but it is a single long paragraph without structural breaks (e.g., bullets or headings). Every sentence contributes useful detail, yet readability could be improved. Given the complexity, the length is justified, but a more structured layout would make it clearer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's full behavioral surface: input modes, output envelope, statistics behavior, aggregations, pagination/limits, and exceptions. It also clarifies the relationship to a sibling tool. With an output schema present, the description need not enumerate every return field, so the coverage is complete for this complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the input schema already has 100% coverage and detailed descriptions, the description adds extra meaning: it explains the interplay between `estatisticas` and `agruparPor`, that `modo` is ignored when `estatisticas=true`, how the analyzed column is chosen automatically, and the semantics of aggregation modes. This significantly enriches the schema's formal parameter definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb-resource relationship: it provides budget execution data for the Senate (expenses and own revenues), with clear detail on which measures and time ranges are covered. It also explicitly distinguishes itself from the sibling `senado_orcamento_parlamentar`, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers explicit guidance on when to use this tool and how to combine parameters: it tells users to use `tipo=despesas` with specific `modo` values, `tipo=receitas` with `por-origem`, and to filter by `ano` before requesting `detalhe`. It also names the alternative `senado_orcamento_parlamentar` and explicitly warns not to confuse them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_horas_extrasHoras extras de servidoresARead-onlyIdempotentInspect
Horas extras pagas a servidores do Senado em ano/mes de referência (a partir de 2013). Para perguntas de maior/menor/média/mediana/distribuição/ranking ('quem recebeu mais horas extras', 'valor mediano de hora extra', 'distribuição dos pagamentos') use estatisticas=true: computa min/máx/média/mediana/desvio/percentis sobre TODAS as linhas filtradas (valorTotal) e devolve top/bottom (padrão 10) com identificadores. Sem agruparPor → distribuicao das linhas individuais + top/bottom; com agruparPor (nome/competencia) → grupos[] ranqueados por soma decrescente (grupos[0] = quem mais recebeu; por nome soma as linhas do mesmo servidor no mês), cada um com sua mini-distribuição. Sem estatisticas: retorna { ano, mes, count, total, valorTotal, horasExtras[] }, onde valorTotal soma o gasto do mês e cada item traz nome, valorTotal, horasExtras, competencia e pagamento. Filtro opcional por nome (busca parcial) e limite (padrão 100, máx 500; ignorado quando estatisticas=true). Para a remuneração completa do servidor use senado_remuneracoes_servidores.
| Name | Required | Description | Default |
|---|---|---|---|
| ano | Yes | Ano de referência | |
| mes | Yes | Mês de referência | |
| nome | No | Nome do servidor (busca parcial) | |
| topN | No | Tamanho das listas top/bottom quando estatisticas=true sem agruparPor (padrão: 10, máx: 100) | |
| limite | No | Máximo de resultados (padrão: 100; ignorado quando estatisticas=true) | |
| agruparPor | No | Quando estatisticas=true, ranqueia os grupos por soma decrescente (grupos[0] = quem mais recebeu): `nome` soma as linhas do mesmo servidor no mês, `competencia` agrupa por mês de prestação. Cada grupo traz sua mini-distribuição | |
| estatisticas | No | Computa estatísticas (min/máx/média/mediana/percentis) + ranking top/bottom sobre todas as linhas filtradas. Use para 'quem recebeu mais/menos', 'média', 'mediana', 'ranking' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=true, destructiveHint=false, idempotentHint=true), the description richly discloses behavior: it details the exact return shapes in both estatisticas modes, explains how grouping and ranking work, notes that limite is ignored when estatisticas=true, and clarifies the meaning of top/bottom and mini-distributions. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured: it opens with the core purpose, then systematically explains the two operational modes, grouping, return structure, optional filters, and cross-reference. Every sentence earns its place given the tool's complexity, with no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all essential aspects: purpose, mode selection, parameter behavior, return shapes, limits, and an alternative tool. Even though an output schema exists, the description explains the response structure and mode-dependent variations, making it complete for an agent to select and invoke the tool correctly in various scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds extra value by explaining inter-parameter interactions (e.g., limite ignored when estatisticas=true), the effect of agruparPor on grouping and ranking, and the semantics of topN and default limits. This goes beyond the individual schema descriptions, earning a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists overtime paid to Senate employees for a given year/month, with a specific verb+resource+scope. It distinguishes from siblings by explicitly naming the alternative tool for complete remuneration (senado_remuneracoes_servidores) and describing its own specialized overtime-focused functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: it tells the agent to use estatisticas=true for ranking/distribution questions, explains when to use agruparPor with nome/competencia, and names an alternative tool for complete remuneration. This is clear, actionable context for selecting the right mode or falling back to a sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_licitacoesLicitações do SenadoARead-onlyIdempotentInspect
Busca licitações do Senado por número exato (ex: 19/2018) ou texto do objeto. Retorna { count, total, licitacoes } com os registros brutos da API administrativa, limitados a limite (padrão 50, máx 500). Exige ao menos numero ou objeto (sem filtro retorna erro). Para o contrato resultante de uma licitação, use senado_contratos.
| Name | Required | Description | Default |
|---|---|---|---|
| limite | No | Máximo de resultados (padrão: 50) | |
| numero | No | Número exato da licitação (ex: 19/2018) | |
| objeto | No | Texto no objeto da licitação |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds the output envelope ({ count, total, licitacoes }), the raw administrative API origin, the limit default/maximum (50/500), and the error behavior when no filter is provided. This goes well beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three dense sentences: main purpose first, then output and limit details, then the requirement and sibling alternative. Every sentence earns its place with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description need not enumerate return fields. It supplies the output envelope, limit constraints, minimal filter precondition, and a cross-reference to a related tool, making it complete for a search/list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all three parameters with descriptions, so the bar is already at baseline 3. The description reinforces semantics by explaining the two filter modes ('número exato' vs 'texto do objeto'), clarifying that one is required despite the schema listing zero required parameters, and restating the limit bounds. This adds meaningful nuance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Busca licitações do Senado', a specific verb and resource, and further specifies search by exact number or object text. It also distinguishes the tool from siblings by directing users to senado_contratos for the resulting contract, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the required input condition explicitly ('Exige ao menos numero ou objeto (sem filtro retorna erro)'), which is crucial since the schema lists zero required parameters. It also names the alternative tool for related needs: 'Para o contrato resultante de uma licitação, use senado_contratos.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_liderancasLideranças partidáriasARead-onlyIdempotentInspect
Lista as lideranças do Senado, da Câmara e do Congresso Nacional (líderes, vice-líderes etc.). Retorna { count, liderancas }, cada item com tipo, descricao, unidadeLideranca, casa, dataDesignacao, dataTermino, numeroOrdemViceLider, bloco (codigo/nome/sigla — preenchido quando a liderança é de bloco; o codigo serve em senado_obter_bloco), partido (codigo/sigla/nome — a unidade liderada, quando liderança de partido) e parlamentar (codigo, nome, partido de filiação, uf). A fonte NÃO publica a UF do parlamentar (vem sempre null) — obtenha-a via senado_obter_senador pelo codigo. Filtre por casa (SF/CN/CD), codigoParlamentar, vigente (S/N) ou siglaTipoLideranca; sem filtros retorna todas as casas. Para a composição de blocos use senado_listar_blocos.
| Name | Required | Description | Default |
|---|---|---|---|
| casa | No | Casa legislativa (SF=Senado, CN=Congresso, CD=Câmara dos Deputados) | |
| vigente | No | Apenas vigentes (S/N) | |
| codigoParlamentar | No | Código do parlamentar | |
| siglaTipoLideranca | No | Tipo de liderança (ex: LIDER, VICE-LIDER) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a critical behavioral trait beyond annotations: 'A fonte NÃO publica a UF do parlamentar (vem sempre null)', preventing confusion about null values. It also adds context about the default return of all houses when no filters are applied and the use of 'codigo' in another tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, and each subsequent sentence adds unique value: return structure, UF null caveat, filter options, and related tool pointers. There is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, the description covers all essential aspects: output shape, filter semantics, default behavior, known data gap (UF null), and related tools. It is complete enough that an agent could use it effectively even without the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage of all four parameters with descriptions. The tool description mostly restates these parameters in the filter summary and adds only the no-filter default behavior, which is more behavioral than semantic. Thus it does not significantly exceed the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Lista as lideranças do Senado, da Câmara e do Congresso Nacional' – a specific verb+resource that clearly defines the tool's purpose. It distinguishes from siblings like senado_listar_blocos and senado_obter_senador by focusing on leadership positions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit alternatives: 'Para a composição de blocos use senado_listar_blocos' and for obtaining the missing UF, 'obtenha-a via senado_obter_senador'. It also states the behavior with no filters: 'sem filtros retorna todas as casas', guiding when to omit filters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_listar_blocosListar blocos parlamentaresARead-onlyIdempotentInspect
Lista todos os blocos parlamentares do Senado e seus partidos membros. Retorna { count, blocos }, onde cada bloco traz codigo, nome, nomeApelido, dataCriacao, dataExtincao e a lista partidos (cada um com sigla, nome, dataAdesao, dataDesligamento). A lista inclui a composição HISTÓRICA de cada bloco: partido com dataDesligamento preenchida já saiu (a composição atual são os com dataDesligamento null) e o mesmo partido pode repetir com períodos de adesão distintos — sem esse filtro um partido parece estar em 2 blocos ao mesmo tempo. Use para descobrir o codigo de um bloco e depois detalhá-lo via senado_obter_bloco; para lideranças use senado_liderancas.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a critical behavioral nuance: the composition is historical, with 'dataDesligamento' indicating a party has left and the same party potentially appearing multiple times with distinct membership periods. This goes well beyond the readOnly/idempotent annotations and prevents a common misinterpretation of duplicate or contradictory data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence carries essential information: first the scope and return shape, then the historical-data caveat, and finally usage guidance. No filler or repetition of schema fields, making it both efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description appropriately avoids listing all fields. It provides the return envelope ({ count, blocos }), the key fields, the important data interpretation rule, and links to related tools. This is fully sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the input schema is empty. Per the rubric, a baseline of 4 applies to tools with no parameters because there is nothing to explain. The description adds no parameter details, but none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Lista') and identifies the exact resource ('todos os blocos parlamentares do Senado e seus partidos membros'). It distinguishes itself from siblings by specifying the return structure and explicitly naming alternative tools for different purposes (senado_obter_bloco, senado_liderancas), making its unique scope clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear guidance is provided: use this tool to discover a bloc's 'codigo' for later detail via 'senado_obter_bloco', and for leadership data use 'senado_liderancas'. This directly contrasts with two sibling tools, giving the agent explicit decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_listar_comissoesListar comissõesARead-onlyIdempotentInspect
Lista comissões (colegiados) ativas do Senado, com filtros por tipo (permanente, temporaria, cpi, mista) e ativa. Retorna { count, comissoes }, cada item com codigo, sigla, nome, tipo, casa e ativa. O endpoint só traz comissões ativas, logo ativa=false resulta em lista vazia. Use para descobrir a sigla exigida por senado_obter_comissao e senado_reunioes_comissao.
| Name | Required | Description | Default |
|---|---|---|---|
| tipo | No | Tipo: permanente, temporaria, cpi, mista | |
| ativa | No | Apenas comissões ativas |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, etc.), the description reveals an important behavioral trait: the endpoint only returns active commissions, so `ativa=false` yields an empty list. It also discloses the return shape (`{ count, comissoes }` and item fields), giving the agent a clearer expectation of what the call will produce.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: three sentences cover what the tool does, the result structure, a behavioral caveat, and a concrete use case. No redundant wording; every sentence serves a distinct purpose and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with two optional parameters, an output schema, and strong annotations, the description is complete: it states the filters, explains the active-only behavior, describes the response shape, and references downstream tools. Nothing essential is missing for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with enum values and descriptions for both parameters, so the baseline is 3. The description adds value by explaining the consequence of setting `ativa=false` (empty result) and corroborating the `tipo` filter values, which goes beyond the schema text alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description names the exact resource ('comissões (colegiados) ativas do Senado') and the action ('Lista'), and specifies key filters. It distinguishes itself from sibling tools by noting it returns the `sigla` needed by `senado_obter_comissao` and `senado_reunioes_comissao`, clearly marking it as a discovery/list tool rather than a detail/getter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use para descobrir a `sigla` exigida por `senado_obter_comissao`...', which provides a concrete use case. It also notes the active-only limitation. However, it does not mention when not to use it or name alternative listing tools, so it falls short of a full when/when-not/alternatives breakdown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_listar_senadoresListar senadoresARead-onlyIdempotentInspect
Use para pedidos como 'liste os senadores em exercício', 'senadores atuais', 'lista atual de senadores' ou filtros por UF/partido. Lista senadores em exercício ou de uma legislatura específica, com filtros opcionais por nome, uf e partido. Retorna { count, senadores }, cada item com codigo, nome, nomeCompleto, partido, uf, foto e emExercicio, mais proveniência oficial do endpoint /senador/lista/atual. Use emExercicio (padrão true) ou legislatura para escolher o conjunto; nome faz correspondência parcial ignorando acentos/maiúsculas (use quando você só tem o nome e precisa do codigo); uf/partido filtram localmente. Use o codigo em senado_obter_senador ou senado_votacoes_senador. Para senadores fora de exercício veja senado_senadores_afastados.
| Name | Required | Description | Default |
|---|---|---|---|
| uf | No | Sigla do estado (ex: SP, RJ, MG) | |
| nome | No | Nome ou parte do nome (busca parcial, sem acento) | |
| partido | No | Sigla do partido (ex: PT, PL, MDB); tolera formas curtas como PODE→PODEMOS | |
| emExercicio | No | Filtrar apenas senadores em exercício | |
| legislatura | No | Número da legislatura (ex: 57 para 2023-2027) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive traits. The description adds valuable behavioral context: return shape `{ count, senadores }`, item fields, partial name matching ignoring accents/case, local filtering for uf/partido, and the official endpoint `/senador/lista/atual` as provenance. This goes well beyond the annotation hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized, front-loaded with example queries, and every sentence adds value. It uses backticks for parameters, references sibling tools, and provides concrete examples without redundancy. A model of concise yet informative documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists and annotations cover safety, the description covers all critical aspects: what the tool does, how to invoke it (parameter semantics), what it returns, the source endpoint, and how to use the results with other tools. It even handles the edge case of out-of-exercise senators by directing to a sibling tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds meaningful semantics beyond schema: `emExercicio` default true, `legislatura` examples (57 for 2023-2027), `nome` partial matching and use case, and `uf`/`partido` local filtering. However, it does not clarify interactions between `emExercicio` and `legislatura` when both are provided, so a slight gap remains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists senators in exercise or from a specific legislature, with optional filters. It uses a specific verb ('Lista') and resource ('senadores'), and distinguishes from sibling tools by mentioning `senado_senadores_afastados` for out-of-exercise senators.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly enumerates example user intents ('liste os senadores em exercício', 'senadores atuais', 'lista atual de senadores') and provides an explicit alternative for senators out of exercise (`senado_senadores_afastados`). Also states downstream use of `codigo` in `senado_obter_senador` and `senado_votacoes_senador`, making usage context and alternatives clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_mesaMesa DiretoraARead-onlyIdempotentInspect
Lista os membros da Mesa Diretora (presidente, vice-presidentes, secretários). O parâmetro casa (padrão senado) escolhe entre senado (Mesa do Senado Federal) e congresso (Mesa do Congresso Nacional). Retorna { casa, mesa, count, membros }, cada membro com cargo, codigo, nome, partido e uf. Para lideranças partidárias use senado_liderancas.
| Name | Required | Description | Default |
|---|---|---|---|
| casa | No | senado (Mesa do SF) ou congresso (Mesa do CN) | senado |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds the return structure and parameter meaning, but no additional behavioral traits like pagination or data freshness. It does not contradict annotations, and the added value is moderate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: first sentence states the purpose, second explains the parameter, third gives the return format and an alternative tool. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and an output schema, the description fully covers the purpose, parameter behavior, return shape, and differentiation from a sibling. It is complete and self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides a description for the 'casa' parameter with enum values and a default, achieving 100% schema description coverage. The description reiterates the default and options but does not add meaning beyond what the schema offers, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Lista' (lists) and names the resource 'membros da Mesa Diretora' with the member roles. It clearly distinguishes itself from the sibling tool by explicitly pointing to 'senado_liderancas' for party leadership, which avoids ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains exactly when to use this tool and provides an explicit alternative: 'Para lideranças partidárias use senado_liderancas'. It also describes the two valid values of the 'casa' parameter, giving clear context for selecting the correct scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_notas_taquigraficasNotas taquigráficasARead-onlyIdempotentInspect
Transcrição oficial (notas taquigráficas) de uma sessão plenária ou reunião de comissão, em blocos sequenciais. Retorna { id, tipo, sessao, data, totalBlocos, aviso?, blocos }; id inexistente ou sem transcrição no acervo retorna totalBlocos 0 com aviso explicando. Cobertura: sessões plenárias do SF (deliberativas, não deliberativas, especiais) são transcritas em poucos dias; sessões CONJUNTAS do Congresso, canceladas/não realizadas e algumas solenes NÃO têm notas (a mídia pode existir em senado_videos_taquigrafia). modo governa o payload: resumo (padrão) traz por bloco sequencia, dataInicio/Fim, trecho (200 chars), caracteres e linkAudio, limitado a limite (padrão 20; pagine com sequenciaInicio, aviso sinaliza corte); texto traz o conteúdo integral de até 20 blocos por chamada (janela sequenciaInicio→sequenciaFim) e inclui intervalo. sequenciaFim só atua em modo=texto. Obtenha o id via senado_agenda_plenario/senado_resultado_plenario (sessão) ou senado_reuniao_comissao (reunião); orador filtra blocos pelo nome citado. Para a mídia (vídeo/áudio) use senado_videos_taquigrafia, não esta.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Código da sessão plenária ou da reunião de comissão | |
| modo | No | resumo = blocos com trecho inicial; texto = transcrição integral dos blocos selecionados | resumo |
| tipo | No | sessao = plenário (padrão); reuniao = comissão | sessao |
| limite | No | modo=resumo: máximo de blocos por chamada (padrão 20); o excedente é sinalizado em aviso | |
| orador | No | Retorna só blocos cujo texto menciona este nome (busca parcial no conteúdo) | |
| sequenciaFim | No | Último bloco no modo texto (ignorado no modo resumo); a janela é capada em 20 blocos por chamada | |
| sequenciaInicio | No | Primeiro bloco a retornar (base 1); pagina o modo resumo e abre a janela do modo texto (padrão: 1) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses important behaviors: invalid or absent IDs return `totalBlocos` 0 with an explanatory `aviso`; coverage excludes joint sessions and some solemn sessions; the `modo` parameter changes the payload shape; `aviso` signals truncation. These are non-obvious runtime behaviors that materially affect invocation and interpretation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured, front-loading the core purpose, then return shape, coverage constraints, mode semantics, and finally related-tool guidance. Every clause earns its place: no filler, and the use of semicolons and parentheses keeps it compact despite covering many contingencies.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 parameters, 2 enums, and complex mode-dependent behavior, the description is remarkably complete. It explains return fields, coverage exceptions, pagination, parameter interactions, and how to obtain the required `id`. The output schema exists, but the description still gives enough behavioral context to avoid common mistakes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema already covers parameters 100%, the description adds meaningful semantics beyond the field descriptions: it explains that `modo=resumo` returns 200-character excerpts limited by `limite`, while `modo=texto` returns full content in a window capped at 20 blocks; it clarifies that `sequenciaFim` only acts in `texto` mode; and it states that `orador` performs a partial name search. These details are not inferable from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Transcrição oficial (notas taquigráficas) de uma sessão plenária ou reunião de comissão, em blocos sequenciais.' It clearly distinguishes the tool from siblings by naming complementary tools like `senado_videos_taquigrafia` and stating that media should be obtained there, not here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance and alternatives: it says to obtain the `id` via `senado_agenda_plenario`/`senado_resultado_plenario` for sessions or `senado_reuniao_comissao` for meetings, and explicitly states 'Para a mídia (vídeo/áudio) use `senado_videos_taquigrafia`, não esta.' It also clarifies coverage gaps where transcriptions are not available.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_obter_blocoDetalhar bloco parlamentarARead-onlyIdempotentInspect
Obtém detalhes de um bloco parlamentar específico pelo seu código. Retorna um objeto com codigo, nome, nomeApelido, dataCriacao, dataExtincao e partidos (array com sigla, nome, dataAdesao, dataDesligamento); dataExtincao é null para blocos vigentes. partidos é a composição HISTÓRICA: quem tem dataDesligamento preenchida já saiu do bloco (composição atual = dataDesligamento null). Obtenha o parâmetro codigo primeiro via senado_listar_blocos; código inexistente retorna erro ("Bloco parlamentar não encontrado").
| Name | Required | Description | Default |
|---|---|---|---|
| codigo | Yes | Código do bloco parlamentar |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, non-destructive), the description reveals key behavioral nuances: the 'partidos' field is a HISTORICAL composition (with 'dataDesligamento' indicating departed members), 'dataExtincao' is null for active blocs, and invalid codes produce an error message. These are non-obvious behaviors that significantly aid the agent in interpreting results and handling failures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured: opening sentence states the core function, then lists the exact return fields, then explains two important interpretations (historical membership and null for active blocs), and closes with parameter acquisition and error behavior. Every sentence carries essential information with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with one parameter, an output schema (which defines the return structure), and annotations covering safety, the description covers all necessary context: purpose, required input source, output composition, historical semantics, and error behavior. Nothing essential is missing for an agent to correctly select and invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes 'codigo' as 'Código do bloco parlamentar' (100% coverage). The description adds value by explaining how to obtain this parameter (via senado_listar_blocos) and what happens if an invalid code is provided (error). This is beyond the schema's descriptive content, earning a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Obtém detalhes de um bloco parlamentar específico pelo seu código' – a specific verb (obtém) with a specific resource (bloco parlamentar) identified by code. It distinguishes from sibling tools like senado_listar_blocos (which lists) and other 'obter' tools by focusing on the bloc entity and its detailed structure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: it instructs the agent to first obtain the 'codigo' via 'senado_listar_blocos' and notes that an inexistent code returns an error. This guides the agent on tool sequencing and error handling. However, it doesn't explicitly state when not to use this tool or name alternative tools beyond the prerequisite, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_obter_comissaoDetalhar comissãoARead-onlyIdempotentInspect
Obtém dados de uma comissão pela sigla, conforme secao (padrão resumo): resumo → { codigo, sigla, nome, tipo, finalidade, presidente, vicePresidente, totalMembros, titulares, suplentes } (presidente/vice com nome/codigo/bancada). finalidade só vem preenchida para colegiados temporários (CPIs, comissões temporárias e de medida provisória); para comissões permanentes (CCJ, CAE etc.) a fonte não a publica e o campo vem nulo com um aviso — as competências estão no Regimento Interno. membros → { sigla, secao, count, membros }, cada membro com codigo, nome, tipoVaga (titular/suplente), ativo e dataInicio. A sigla é resolvida internamente para código numérico; descubra-a via senado_listar_comissoes.
| Name | Required | Description | Default |
|---|---|---|---|
| secao | No | resumo (mesa/totais) ou membros (composição completa) | resumo |
| sigla | Yes | Sigla da comissão (ex: CCJ, CAE) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnly/idempotent/non-destructive; the description adds behavioral nuances: finalidade only populated for temporary committees, null+aviso for permanent ones, and sigla internally resolved to numeric code. These details go beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but relatively long; however, it is front-loaded and every sentence conveys a distinct fact (output shapes, edge cases, resolution). No fluff, but it could be slightly restructured for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema available and strong annotations, the description still adds critical context: exact return structures for each secao, null/aviso behavior, and source attribution. It is complete for a moderately complex detail tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters. The description adds value by explaining how secao maps to output structures, reinforces the default, and clarifies that sigla is resolved internally and should come from senado_listar_comissoes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the verb 'Obtém dados' and the resource 'comissão', parameterized by sigla and secao, with output shapes for each section. It clearly distinguishes from sibling senado_listar_comissoes, which is referenced for discovering valid siglas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use resumo vs membros, notes the default secao, and directs the user to senado_listar_comissoes for finding a valid sigla. It also sets expectations for permanent vs temporary commissions, which prevents misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_obter_legislacaoDetalhar norma legalARead-onlyIdempotentInspect
Obtém o detalhe de uma norma federal já promulgada pelo seu codigo interno. Somente leitura, sem efeitos colaterais; consulta ao vivo à base oficial de dados abertos. Retorna um objeto com codigo, tipo, descricaoTipo, numero, ano, data (ISO AAAA-MM-DD), norma, apelido, ementa, indexacao (termos temáticos) e url do texto integral — campos ausentes na norma vêm null, e codigo inexistente retorna erro "Norma não encontrada", não um objeto vazio. Obtenha o codigo antes via senado_buscar_legislacao (é o identificador interno da norma, não o número da lei). Para localizar normas por tipo/número/ano use senado_buscar_legislacao; esta serve só para o detalhe de uma norma já identificada.
| Name | Required | Description | Default |
|---|---|---|---|
| codigo | Yes | Identificador interno da norma no acervo do Senado (inteiro > 0) — o campo `codigo` retornado por senado_buscar_legislacao. Não confundir com o número da lei: a Lei n. 14.133/2021 tem numero=14133, mas seu codigo interno é outro valor. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly, idempotent, non-destructive), the description discloses concrete behavioral details: fields missing in the norm come as null, and a nonexistent `codigo` returns an error 'Norma não encontrada' rather than an empty object. It also states it's a live query to the official open data base, adding useful context not in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded: it starts with purpose, then behavior, output fields, error/null semantics, and usage alternatives. It is longer than minimal but each sentence carries essential information, with only minor redundancy around the 'codigo vs law number' point that appears in the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one parameter, solid annotations, and an output schema present, the description fills all remaining gaps: it explains the return format, error behavior, null handling, data source, and how to obtain the required identifier. The tool is fully contextualized, leaving nothing ambiguous for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides a detailed description of `codigo`, including the warning not to confuse it with the law number. The tool description reinforces this and adds a procedural pointer to obtain the code from `senado_buscar_legislacao` before calling this tool, giving workflow context beyond the schema's static definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Obtém o detalhe de uma norma federal já promulgada pelo seu codigo interno.' It clearly distinguishes itself from sibling `senado_buscar_legislacao`, stating that this tool is solely for the detail of an already identified norm, while the sibling is for locating norms.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly guides the agent: obtain `codigo` via `senado_buscar_legislacao` first, and use `senado_buscar_legislacao` to locate norms by type/number/year, while this tool serves only for detail. This gives clear when-to-use and alternatives, fully satisfying the dimension.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_obter_materiaDetalhar matéria legislativaARead-onlyIdempotentInspect
Obtém dados de uma matéria pelo codigoMateria, conforme secao (padrão detalhe): detalhe → objeto com identificacao, apelido, ementa, autor, situacao, localAtual, dataApresentacao, indexacao, classificacoes[], tramitando, relator (nome/partido/uf/comissão), deliberacao e normaGerada. tramitacao → histórico de tramitação cronológico em tramitacoes[] (data, local, descricao), com count/total (mantém os mais recentes ao truncar). textos → documentos da matéria em textos[] (tipo, formato, identificacao, data, autoria, url), do mais recente ao mais antigo. limite aplica-se a tramitacao/textos (padrão 100 e 50; ao truncar inclui aviso). Obtenha o codigoMateria via senado_buscar_materias.
| Name | Required | Description | Default |
|---|---|---|---|
| secao | No | detalhe (situação/relator), tramitacao (histórico) ou textos (documentos) | detalhe |
| limite | No | Máximo de itens em tramitacao/textos (padrão: 100 tramitacao, 50 textos) | |
| codigoMateria | Yes | Código único da matéria |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the readOnly/idempotent annotations by disclosing return-field structure per section, chronological ordering, truncation behavior with aviso, and default limite values (100 and 50). This gives the agent accurate expectations for side-effect-free reads and edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-organized: the main purpose is front-loaded, and each subsequent clause earns its place by specifying return shapes, defaults, ordering, or truncation behavior. No filler or repetition of annotation data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-mode read tool with configurable limits, the description covers all necessary context: how to get the prerequisite codigoMateria, what each section returns, default and max limits, truncation warnings, and ordering. Combined with the output schema and annotations, the agent has a complete operational picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even though schema coverage is 100%, the description adds essential meaning: it maps each secao enum to concrete output structures, defines limite defaults and scope, and clarifies that codigoMateria must come from senado_buscar_materias. This significantly exceeds the schema's short property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Obtém dados de uma matéria pelo codigoMateria'. It distinguishes this detail-oriented tool from the sibling search tool by instructing users to obtain codigoMateria via senado_buscar_materias, and it enumerates three distinct data sections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear workflow guidance ('Obtenha o codigoMateria via senado_buscar_materias') and explains when each secao value is appropriate (detalhe vs tramitacao vs textos). It does not explicitly state when not to use this tool relative to other senado_obter_* siblings, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_obter_processoDetalhar processoARead-onlyIdempotentInspect
Obtém detalhes completos de um processo legislativo específico pelo seu id. Retorna um objeto com id, codigoMateria, identificacao, sigla, numero, ano, objetivo, ementa, tipoConteudo, dataApresentacao, autoria, indexacao, urlDocumento, tramitando (boolean) e o estado atual do processo: situacaoAtual (+siglaSituacaoAtual/dataSituacaoAtual), deliberacao (data, tipo, destino) e normaGerada (quando o processo virou norma). Obtenha o idProcesso antes via senado_search_processos ou senado_buscar_materias; para emendas, relatorias ou prazos use senado_processo_detalhe (parâmetro secao).
| Name | Required | Description | Default |
|---|---|---|---|
| idProcesso | Yes | ID do processo legislativo |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value by detailing the return object structure, including `tramitando` (boolean), `situacaoAtual`, `deliberacao`, and `normaGerada`, which goes beyond the structured annotations. However, it does not mention error behavior or edge cases, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: first sentence states purpose, second lists return fields, and third gives usage prerequisites and alternatives. Every sentence earns its place. The field list is verbose but highly informative and necessary for agent expectation-setting.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given only one parameter, an output schema exists, and rich annotations, the description is complete. It explains the return structure in detail, tells how to obtain prerequisite IDs, and clearly differentiates from the overlapping sibling. No critical information seems missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter `idProcesso` (described as 'ID do processo legislativo'). The description reinforces this by saying 'pelo seu `id`' and adds practical guidance on where to obtain the id (`senado_search_processos` or `senado_buscar_materias`), which is beyond bare schema semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: 'Obtém detalhes completos de um processo legislativo específico pelo seu `id`.' It clearly distinguishes from siblings by explicitly directing to `senado_processo_detalhe` for emendas, relatorias, or prazos, and mentions how to get the id first via search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit when-to-use guidance: obtain `idProcesso` via `senado_search_processos` or `senado_buscar_materias` before calling, and for specific sub-details use `senado_processo_detalhe` with `secao` parameter. This is exactly the kind of alternative distinction expected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_obter_senadorDetalhar senadorARead-onlyIdempotentInspect
Obtém o detalhe biográfico de um senador específico. Retorna um objeto com codigo, nome, nomeCompleto, nomeCivil, sexo, dataNascimento, naturalidade/ufNaturalidade, partido, uf, foto, email e a lista mandatos (legislatura, uf, participacao, dataInicio, dataFim). Requer codigoSenador — obtenha-o via senado_listar_senadores (filtro nome). Para filiações, profissões, licenças, comissões ou cargos use senado_senador_historico (parâmetro tipo).
| Name | Required | Description | Default |
|---|---|---|---|
| codigoSenador | Yes | Código único do senador no sistema do Senado |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, and the description does not contradict them. It adds useful boundary information by detailing the exact biographical fields returned and explicitly excluding historical categories that are directed to another tool, though it does not mention error behavior or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states purpose and return shape, the second covers input sourcing and alternative tool usage. Every sentence earns its place, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only tool with strong annotations and an output schema, the description comprehensively covers purpose, input acquisition, output fields, and exclusions. It is complete and actionable without unnecessary redundancy.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes codigoSenador with 100% coverage, but the description adds operational provenance by telling the agent to obtain it via senado_listar_senadores. This is extra value beyond the schema, even though it does not deepen the semantic meaning of the code itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Obtém o detalhe biográfico de um senador específico', a specific verb and resource, and enumerates the returned fields. This clearly distinguishes it from sibling tools like senado_listar_senadores and senado_senador_historico.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs how to obtain the required codigoSenador via senado_listar_senadores (filtro nome) and when to use senado_senador_historico for affiliations, professions, licenses, commissions, or positions. This provides clear when-to-use and alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_obter_votacaoDetalhar votaçãoARead-onlyIdempotentInspect
Obtém detalhes de uma votação de plenário pelo codigoVotacao (que é o codigoSessao da sessão plenária), incluindo votos nominais. Retorna o objeto da votação (placar, resultado legível + resultadoCodigo bruto, secreta) com votos[] (codigoSenador, nomeSenador, partido, uf, voto); se a sessão tiver várias votações, retorna { codigoSessao, count, votacoes }. Obtenha o codigoSessao via senado_search_votacoes antes de chamar. Atenção: este endpoint só aceita códigos de votação de plenário — códigos de senado_votacao_comissao pertencem a outro espaço de numeração e NÃO são válidos aqui (podem coincidir numericamente, mas apontam para outra votação).
| Name | Required | Description | Default |
|---|---|---|---|
| codigoVotacao | Yes | Código único da votação (codigoSessao da sessão plenária) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/idempotentHint annotations, the description reveals detailed return structures (single vote object vs. {codigoSessao, count, votacoes} for multiple votes), lists the exact fields, and highlights a critical namespace collision gotcha. This goes well beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence contributes essential information: purpose, return shapes, prerequisite, and a warning. It is well-structured with bold and semicolons, making it readable without unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, the description covers purpose, both return variants, the prerequisite call to another tool, and a critical exception. It is complete enough that an agent can select and invoke the tool correctly even before consulting the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully describes the parameter (100% coverage), so baseline is 3. The description adds meaningful disambiguation by explaining that codigoVotacao is codigoSessao from a plenary session and explicitly warns against using committee codes, enriching the semantic context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves details of a plenary vote ('Obtém detalhes de uma votação de plenário') using codigoVotacao, including nominal votes. It also distinguishes itself from sibling tools by explicitly noting this is for plenary votes only, unlike senado_votacao_comissao.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs to obtain codigoSessao via senado_search_votacoes before calling, and provides a strong exclusion: committee vote codes from senado_votacao_comissao are not valid here, even if they coincide numerically. This gives clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_orcamento_parlamentarOrçamento parlamentar (emendas)ARead-onlyIdempotentInspect
Emendas parlamentares ao orçamento da União, conforme tipo (padrão emendas). tipo: emendas (proposição) → { tipo, count, emendas }, cada item (lote de emendas de um autor) com autor, codigoAutor, quantidadeEmendas, anoExecucao, materia (peça orçamentária, p.ex. LOA 29/2023), tipoPl, dataOperacao e ativo. tipo: oficios (execução — indicação de destino de emendas já aprovadas) → { tipo, ano, count, total, aviso?, oficios }, cada ofício com id, autor, protocolo, dataInclusao e quantidadeEmendas; filtre pelo ano do orçamento da emenda (recomendado — a base cobre vários anos), pagine com limite/pagina, e use incluirEmendas: true para o detalhe de cada emenda (favorecido, CNPJ, órgão, nota de empenho). Nota: no modo oficios, o ofício é o documento de execução que indica o destino do recurso de uma emenda já aprovada (posterior à proposição); a data do ofício difere do ano do orçamento. Para a execução do orçamento interno do próprio Senado (despesas/receitas) use senado_execucao_orcamentaria.
| Name | Required | Description | Default |
|---|---|---|---|
| ano | No | Ano do orçamento da emenda (filtra tipo=oficios pelo ano das emendas) | |
| tipo | No | emendas (lotes de emendas propostas) ou oficios (ofícios de indicação de destino) | emendas |
| limite | No | Máximo de ofícios por página (tipo=oficios; padrão 50) | |
| pagina | No | Página de ofícios (tipo=oficios; padrão 1) | |
| incluirEmendas | No | tipo=oficios: incluir o detalhe das emendas (favorecido, CNPJ, nota de empenho) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
A descrição explica a diferença entre proposição e execução, a estrutura da resposta, o significado da data do ofício em relação ao ano orçamentário, e a cobertura multi-anual da base. Complementa as annotations (readOnlyHint, idempotentHint) com detalhes operacionais relevantes sem contradizê-las.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
O texto é longo, mas a complexidade da ferramenta (dois modos, múltiplos campos de resposta) justifica o comprimento. Cada sentença entrega informação essencial, sem redundância com o schema, e usa estrutura clara com exemplos code-like.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Considerando a complexidade da ferramenta e a presença de output schema, a descrição é completa: cobre os dois modos, os parâmetros, as estruturas de retorno, notas sobre datas e recomendações de uso. Não há lacunas significativas para o agente executar corretamente.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Embora o schema já descreva todos os parâmetros (cobertura 100%), a descrição adiciona contexto crucial: como 'ano' filtra ofícios pelo ano das emendas, como 'limite' e 'pagina' controlam a paginação, e como 'incluirEmendas' expande o retorno. Isso torna o uso dos parâmetros mais intuitivo.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A descrição declara explicitamente que a ferramenta trata de 'Emendas parlamentares ao orçamento da União' e diferencia os dois modos de operação ('emendas' e 'oficios'). O escopo é específico e a distinção da ferramenta irmã 'senado_execucao_orcamentaria' está clara.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Fornece diretrizes diretas: recomenda filtrar pelo 'ano' do orçamento, paginar com 'limite'/'pagina', usar 'incluirEmendas' para detalhes, e explicitamente orienta usar 'senado_execucao_orcamentaria' para orçamento interno do Senado. Isso define quando usar esta ferramenta versus alternativas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_orientacao_bancadaOrientação de bancadaARead-onlyIdempotentInspect
Orientação de bancada nas votações de plenário: como cada liderança partidária orientou o voto, com placar — essencial para análise de disciplina partidária. Retorna { count, votacoes }, com cada votação trazendo codigoVotacao, descricao, materia, dataInicio, dataTermino, sessao, totais (totalSim, totalNao, totalAbstencao, obstrucoes), quorumInicial/quorumFinal e orientacoes (partido, voto). Informe data (um dia) ou o período dataInicio/dataFim. Para o resultado das sessões use senado_resultado_plenario.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Data da sessão (YYYYMMDD) | |
| dataFim | No | Data fim do período (YYYYMMDD) | |
| dataInicio | No | Data início do período (YYYYMMDD) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context by detailing the exact return structure (`{ count, votacoes }` with nested fields) and explicitly naming the alternative tool for session results, which goes beyond the annotations. It does not disclose potential edge-case behaviors (e.g., what happens when no orientations exist), but that is a minor gap given the rich annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with purpose, and efficiently packs in the return schema and usage instructions. Every sentence adds value, with no filler or repetition of the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description still provides a detailed field-by-field breakdown of the return payload, which is helpful for an agent. It explains the two alternative date input modes and explicitly names the alternative tool for related but distinct needs. The description is complete for a read-only, idempotent query tool with no required parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema description coverage is 100% (each parameter has a description), the tool description adds crucial semantic guidance by explaining the relationship between the parameters: 'Informe data (um dia) ou o período dataInicio/dataFim.' This clarifies that `data` and the `dataInicio`/`dataFim` pair are alternative ways to specify the time window, which is not evident from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reports party leadership voting orientations in plenary sessions with vote tallies, using a specific verb ('Orientação de bancada') and resource ('votações de plenário'). It explicitly distinguishes itself from the sibling tool `senado_resultado_plenario` by pointing users there for session results, and the focus on 'disciplina partidária' sets it apart from other voting tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: it is essential for party discipline analysis, and it directly instructs the user to use `senado_resultado_plenario` when they need session results instead. It also clarifies the date parameter options ('Informe data (um dia) ou o período dataInicio/dataFim'), making the tool's intended invocation clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_pessoal_tabelasTabelas de gestão de pessoasARead-onlyIdempotentInspect
Tabelas de pessoal do Senado conforme o parâmetro tabela. Quantitativos agregados: pessoal (força de trabalho por classe/escolaridade), cargos-funcoes (cargos em comissão e funções de confiança), previsao-aposentadoria, senadores. Listas nominais: estagiarios (ativos), pensionistas, lotacoes (setores), cargos (nomes de cargos). Retorna { tabela, count, total, aviso?, registros[] } — registros agregados (nos quantitativos) ou nominais (nas listas), conforme a tabela, limitados por limite (padrão 100, máx 2000); count 0 e lista vazia quando a tabela não tem registros. O filtro textual opcional casa contra qualquer campo do registro. Para o cadastro nominal de servidores efetivos/comissionados use senado_servidores.
| Name | Required | Description | Default |
|---|---|---|---|
| filtro | No | Filtro textual (nome, curso, setor...) | |
| limite | No | Máximo de registros (padrão: 100) | |
| tabela | Yes | Qual tabela de pessoal consultar (quantitativo agregado ou lista nominal) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent behavior, so the description adds valuable behavioral context: the exact return shape `{ tabela, count, total, aviso?, registros[] }`, the default and maximum `limite`, the empty-result behavior (`count` 0 and empty list), and that `filtro` matches any field. This goes well beyond the annotation safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-organized paragraph that front-loads the resource and parameter, then logically enumerates table categories, return format, limits, filter behavior, and the alternative tool. Every sentence carries substantive information with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully equips an agent to select and invoke the tool correctly: it covers all 8 enum values, return format, limit/pagination behavior, filter semantics, empty results, and the alternative tool for a related case. With a robust schema and this description, no critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema already provides 100% parameter descriptions, the description supplements it with essential semantics: it maps each enum value of `tabela` to aggregate vs. list categories, clarifies the default/max for `limite`, and explains the `filtro` matching behavior against any record field. This adds meaning beyond the structured schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (Senate personnel tables) and the parameter-driven behavior via `tabela`. It enumerates the specific table types (aggregate and nominal) and distinguishes the tool from the sibling `senado_servidores` for nominal server registry, making the purpose explicit and non-overlapping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly directs users to `senado_servidores` for the nominal registry of effective/commissioned servers, which serves as a clear when-not and alternative. It also delineates the two categories of tables (quantitative aggregates vs. nominal lists), helping the agent choose the right table and tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_processo_detalheDetalhes do processoARead-onlyIdempotentInspect
Detalha um aspecto de processos legislativos conforme o parâmetro secao: emendas → emendas apresentadas (id, identificacao, numero, tipo, autoria, data, colegiado, descricao, decisoes (objetos com casa/data/tipo/comissao/nomeComissao), url; aceita filtro codigoParlamentarAutor); relatorias → relatorias designadas (idProcesso, processo, relator, partido, uf, tipoRelator, comissao, dataDesignacao, dataDestituicao, motivoEncerramento; aceita codigoParlamentar/codigoColegiado/dataReferencia); prazos → prazos regimentais/constitucionais (registros brutos da API; aceita dataReferencia). Todos aceitam idProcesso e/ou codigoMateria e período dataInicio/dataFim (YYYYMMDD ou ISO) — informe pelo menos um filtro. Retorna { secao, count, total, aviso?, itens }, limitado a limite (padrão 100, máx. 500). Obtenha o idProcesso via senado_search_processos; tipos de prazo via senado_tabelas_processo. Ex.: { secao: 'emendas', codigoMateria: 137999 } ou { secao: 'relatorias', codigoParlamentar: 4994, dataReferencia: '2025-06-01' }.
| Name | Required | Description | Default |
|---|---|---|---|
| secao | Yes | Qual aspecto detalhar: emendas, relatorias ou prazos | |
| limite | No | Máximo de resultados (padrão: 100) | |
| dataFim | No | Até esta data (YYYYMMDD ou YYYY-MM-DD) | |
| dataInicio | No | A partir desta data (YYYYMMDD ou YYYY-MM-DD) | |
| idProcesso | No | ID do processo | |
| codigoMateria | No | Código legado da matéria | |
| dataReferencia | No | secao=relatorias/prazos: vigentes nesta data (YYYYMMDD ou YYYY-MM-DD) | |
| codigoColegiado | No | secao=relatorias: código do colegiado | |
| codigoParlamentar | No | secao=relatorias: código do parlamentar relator | |
| codigoParlamentarAutor | No | secao=emendas: código do parlamentar autor |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although annotations already declare readOnlyHint=true and destructiveHint=false, the description adds meaningful behavioral context: it discloses the return structure `{ secao, count, total, aviso?, itens }`, the `limite` default and maximum, and that `prazos` returns raw API records. It also notes the conditional applicability of `dataReferencia` for specific secões, going beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but highly structured, using semicolons, arrows, and lists to pack a large amount of necessary detail into a compact form. It is front-loaded with the main purpose, and every clause contributes useful information, though the density could be considered slightly overwhelming. Given the tool's complexity (10 parameters, 3 modes), the length is justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all key aspects for a complex tool: the three sections with their specific outputs and filters, common parameters, return format, limits, examples, and how to obtain prerequisites from sibling tools. Despite the presence of an output schema, the description provides enough contextual completeness to understand the tool's operation without redundant detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, satisfying the baseline. The description enriches parameter understanding by grouping parameters by `secao` (e.g., `codigoParlamentarAutor` for emendas, `codigoParlamentar`/`codigoColegiado`/`dataReferencia` for relatorias) and explaining that all sections share common filters (`idProcesso`, `codigoMateria`, `dataInicio`/`dataFim`). This adds value beyond the individual schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb and resource: 'Detalha um aspecto de processos legislativos conforme o parâmetro `secao`', immediately distinguishing three sub-modes (emendas, relatorias, prazos) with detailed field lists. This clearly differentiates it from sibling tools like senado_obter_processo, which likely fetches a whole process rather than a specific aspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is given: 'Obtenha o `idProcesso` via `senado_search_processos`; tipos de prazo via `senado_tabelas_processo`', and the requirement to provide at least one filter is clearly stated. It also illustrates valid calls with examples, making it easy for an agent to know exactly when and how to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_remuneracoes_servidoresRemuneração de servidoresARead-onlyIdempotentInspect
Remunerações dos servidores do Senado em ano/mes de referência (a partir de 2013). Para perguntas de maior/menor/média/mediana/ranking ('quem ganhou mais em junho/2026', 'remuneração média') use estatisticas=true: computa min/máx/média/mediana/desvio/percentis sobre a folha INTEIRA e devolve top/bottom (padrão 10) identificados por nome (com idInternoFolha só para desambiguar homônimos, não para citar) — o modo resumo/detalhe só vê uma fatia e não acha o extremo real. Cada percentil vem com um rotulo legível e a coluna analisada tem rótulo legível em campoAnalisado. campo escolhe a verba analisada (padrão: remuneração bruta); consolidarPorServidor (padrão true) soma as linhas Normal+Suplementar da mesma pessoa antes das estatísticas; agruparPor='tipoFolha' devolve estatísticas por grupo (implica não-consolidado). Sem estatisticas: modo=resumo (padrão) retorna { ano, mes, totalRegistros, resumo[] } agregado por tipoFolha; modo=detalhe retorna { count, total, remuneracoes[] } com a composição individual, limitada por limite (padrão 50, máx 500). Filtros nome/tipoFolha aplicam antes de tudo. Para o cadastro de servidores use senado_servidores.
| Name | Required | Description | Default |
|---|---|---|---|
| ano | Yes | Ano de referência | |
| mes | Yes | Mês de referência | |
| modo | No | resumo = totais por tipo de folha (padrão); detalhe = composição individual. Ignorado quando estatisticas=true | resumo |
| nome | No | Nome do servidor (busca parcial) | |
| topN | No | Tamanho das listas top/bottom quando estatisticas=true (padrão: 10, máx: 100) | |
| campo | No | Verba analisada quando estatisticas=true (padrão: remuneração bruta). O resultado traz o rótulo legível em campoAnalisado. | bruto |
| limite | No | Máximo de linhas no modo detalhe (padrão: 50) | |
| tipoFolha | No | Filtrar por tipo de folha (busca parcial) | |
| agruparPor | No | Quando estatisticas=true, devolve estatísticas por grupo (só `tipoFolha`); implica dados por linha (não consolidados) | |
| estatisticas | No | Computa estatísticas (min/máx/média/mediana/percentis) + ranking top/bottom sobre a folha inteira. Use para 'quem ganhou mais/menos', 'média', 'ranking' | |
| consolidarPorServidor | No | Soma as linhas (Normal+Suplementar) do mesmo servidor antes das estatísticas (padrão: true). Ignorado — forçado a false — quando agruparPor está definido |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, but the description adds substantial behavioral context: full-payroll computation, top/bottom default size, consolidarPorServidor summing Normal+Suplementar lines, agruparPor forcing non-consolidated data, and output shapes for each mode. It also clarifies that idInternoFolha should not be cited publicly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One densely packed paragraph, but perfectly structured with bolded keywords, parenthetical examples, and clear separations between statististical and non-statistical modes. Every sentence earns its place; no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter, multi-mode tool, the description covers all behaviors, filters, output contracts, defaults, and cross-tool references. It even notes edge cases like homonym disambiguation and the restriction that resumo/detalhe cannot find the true extreme. With output schema present, nothing significant is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds meaning beyond property descriptions: explains how consolidarPorServidor interacts with agruparPor, that campoAnalisado provides readable labels, the semantics of topN/bottom, and output limits. This is essential for correct invocation and interpretation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb+resource+scope: 'Remunerações dos servidores do Senado em ano/mês de referência'. It also distinguishes itself from the sibling tool for employee data by stating 'Para o cadastro de servidores use senado_servidores', and internally differentiates the estatisticas, resumo, and detalhe modes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use estatisticas=true for rank/average questions ('quem ganhou mais/menos', 'remuneração média') and warns that resumo/detalhe only see a slice. It also directs to senado_servidores for the employee registry, providing clear alternatives and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_requerimentos_cpiRequerimentos de CPIARead-onlyIdempotentInspect
Lista requerimentos de uma CPI (Comissão Parlamentar de Inquérito) em atividade, pela siglaCpi, com paginação por pagina (índice baseado em 0, definido pelo upstream). Retorna { siglaCpi, pagina, count, requerimentos }, onde requerimentos é a lista de registros brutos da página (campos conforme a API: tipicamente número, data, ementa, autor e situação do requerimento). count é o tamanho da página; uma página além do total retorna count 0 — use isso para saber que as páginas acabaram. Descubra as siglas via senado_listar_comissoes com tipo=cpi. Limitação conhecida: o endpoint upstream costuma responder vazio mesmo para CPIs em atividade, e não há fonte alternativa limpa na API; nesses casos o retorno traz count 0 e um campo aviso explicando — não interprete lista vazia como certeza de que a CPI não possui requerimentos.
| Name | Required | Description | Default |
|---|---|---|---|
| pagina | No | Página da lista (padrão: 0) | |
| siglaCpi | Yes | Sigla da CPI (ex: CPIVD, CPIPED) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, but the description goes beyond by disclosing the 0-based pagination, the `count` semantics, and the known upstream limitation where empty results may not reflect reality. This adds significant behavioral context for safe interpretation of results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, each earning its place: purpose, output structure, pagination behavior, and known limitation. It is front-loaded with the primary action and remains appropriately concise despite covering complex edge cases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description does not need to repeat return fields, but it still covers essential context: input parameters, pagination termination, prerequisite discovery, and a critical limitation. No important operational detail is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, but the description adds important nuance: `pagina` is explicitly 0-based and defined by upstream, which is not in the schema. It also clarifies how `count` and `requerimentos` relate to the parameters, enhancing parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists requerimentos (requests) of an active CPI by siglaCpi, with pagination. It distinguishes itself from sibling tools by specifying the exact resource and action, and even mentions how to discover valid siglas via `senado_listar_comissoes`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on discovering siglaCpi via `senado_listar_comissoes` and explains pagination termination (count 0). It doesn't explicitly state when not to use the tool, but the known limitation warning offers clear context about expected behavior and caution.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_resultado_plenarioResultados do plenárioARead-onlyIdempotentInspect
Resultado das sessões plenárias numa data: itens de pauta apreciados, pareceres e resultados. Retorna { data, escopo, count, sessoes } (todas as sessões da data, sem paginação), com cada sessão trazendo codigoSessao, numeroSessao, data, hora, tipo, casa e itens (codigoMateria, identificacao, ementa, resultado, parecer — resultado/parecer podem vir null em itens ainda não deliberados). Sem sessão na data, count é 0 e sessoes vem vazio. escopo: sf (Senado), cn (Congresso) ou mes (resumo do mês). Para a pauta prévia use senado_agenda_plenario; orientação de bancada via senado_orientacao_bancada.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Data da sessão (YYYYMMDD); para escopo=mes, qualquer dia do mês | |
| escopo | No | sf = Senado no dia; cn = Congresso no dia; mes = resumo do mês | sf |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, non-destructive), the description discloses important behavioral details: no pagination, exact return structure, null values for undeliberated items, and empty 'sessoes' array when no session exists. This adds significant context that annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence earns its place: purpose, return structure, edge cases, scope meanings, and alternatives. It is front-loaded with the main purpose and organized logically. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema and only 2 parameters, the description is complete. It covers edge cases (no session, null items), explains the 'escopo' options, and provides alternatives. The description fully equips an agent to select and invoke the tool correctly without needing additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'data' and 'escopo' fully described in the schema. The description restates the 'escopo' meanings but adds no new parameter semantics beyond what the schema already provides. Baseline of 3 is appropriate when schema carries the full burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns plenary session results ('Resultado das sessões plenárias numa data') with specific content (agenda items, pareceres, results). It explicitly distinguishes from sibling tools by naming senado_agenda_plenario and senado_orientacao_bancada as alternatives for different needs. The verb 'Retorna' is specific and the resource is well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool vs alternatives: 'Para a pauta prévia use senado_agenda_plenario; orientação de bancada via senado_orientacao_bancada.' It also clarifies that it returns all sessions for a date without pagination and handles empty results, giving clear context for expected usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_resultado_vetoResultado de vetoARead-onlyIdempotentInspect
Obtém o resultado da apreciação de um veto presidencial. Retorna { codigo, tipo, resultado }, onde resultado é o objeto bruto da API (sem wrappers), com campos variáveis — tipicamente identificação do veto, situação por dispositivo (ex.: "Rejeitado"/"Mantido") e link do PDF do resultado nominal (PdfsResultadoVotacao). A API não fornece placar numérico (sim/não) aqui — o detalhamento nominal está no PDF; vem objeto vazio quando o veto ainda não foi votado e retorna erro se o codigo não existir. tipo define o que codigo representa: veto (código do veto, padrão), materia (código do projeto vetado) ou dispositivo (dispositivo de veto parcial) — as três chaves apontam para o mesmo veto. Obtenha o código via senado_vetos. Para listar vetos (não o resultado de um) use senado_vetos.
| Name | Required | Description | Default |
|---|---|---|---|
| tipo | No | Define a chave em codigo: veto = código do veto (padrão); materia = código do projeto vetado; dispositivo = dispositivo de veto parcial | veto |
| codigo | Yes | Código do veto, da matéria vetada ou do dispositivo — qual deles depende de `tipo` |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond readOnly/idempotent annotations by specifying raw return shape, variable fields, PDF link, empty object for unvoted vetos, error for nonexistent code, and lack of numeric tally. This is rich behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and each sentence provides essential information—return format, edge cases, parameter semantics, usage. No filler; bold text highlights key exceptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even though an output schema exists, the description thoroughly covers variable return fields and edge cases; it also covers param mapping and data source. For a tool with three lookup modes and ambiguous result shapes, it is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers both params with 100% descriptions, so baseline is 3. The description adds the nuance that all three 'tipo' values point to the same veto and instructs to obtain the code from senado_vetos, earning a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Obtém o resultado da apreciação de um veto presidencial', naming a specific verb and resource. It distinguishes from sibling senado_vetos by explicitly noting that listing vetos is handled there, and the 'veto' qualifier separates it from plenary result tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs how to obtain the code via 'senado_vetos' and states that to list vetos (not a result), one should use 'senado_vetos'. This gives clear when-to-use and an alternative, though it doesn't mention other result tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_reuniao_comissaoDetalhar reunião de comissãoARead-onlyIdempotentInspect
Detalha uma reunião de comissão pelo codigoReuniao. Retorna um objeto com codigo, titulo, comissao, data, hora, local, situacao, realizada, secreta, tipoPresenca (presencial/semipresencial), presidente, links urlPauta/urlResultado/urlAta e partes (cada parte com evento e itens apreciados: identificacao, ementa, autoria, relatoria, resultado, codigoMateria). A API NÃO publica lista de presença da reunião (só presidente e eventuais convidados): reconstrua a presença pelos votos nominais (senado_votacao_comissao), por quem falou na transcrição (senado_notas_taquigraficas com tipo=reuniao) ou pela ata oficial (urlAta, quando publicada). Obtenha o codigoReuniao em senado_agenda_comissoes ou senado_reunioes_comissao.
| Name | Required | Description | Default |
|---|---|---|---|
| codigoReuniao | Yes | Código da reunião (campo 'codigo' na agenda de comissões) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive. The description adds significant behavioral context beyond these hints: it explicitly states the API does NOT publish an attendance list (disclosing a limitation) and explains how to work around it using other tools. It also details the structure of the returned object, which helps the agent set expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured: first sentence states the core action, second lists return fields, third discloses a critical limitation and alternatives, fourth tells where to get the argument. Every sentence earns its place, and the information is front-loaded with the purpose. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description provides enough context to understand what the tool returns and what it does not. It covers the parameter source, returns all key fields, and explicitly addresses a gap (attendance) with fallback strategies. The tool's complexity is fully addressed for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers the single parameter `codigoReuniao` with a description, so the baseline is 3. The tool description adds extra meaning by explicitly telling the agent to obtain the code from `senado_agenda_comissoes` or `senado_reunioes_comissao`, providing provenance and usage clarity. This is a meaningful addition beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Detalha uma reunião de comissão pelo codigoReuniao'. It clearly distinguishes itself from sibling list tools by focusing on retrieving a single meeting's details, and explicitly mentions how to obtain the code from other tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides direct guidance on when to use this tool versus alternatives: the description specifies where to obtain `codigoReuniao` (senado_agenda_comissoes or senado_reunioes_comissao) and recommends alternative tools (senado_votacao_comissao, senado_notas_taquigraficas, urlAta) for reconstructing attendance, which is not provided by this API. This is clear, actionable usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_reunioes_comissaoReuniões de comissãoARead-onlyIdempotentInspect
Lista reuniões de uma comissão (pela sigla) num intervalo dataInicio/dataFim (YYYYMMDD); sem datas, usa os últimos 14 dias. Atenção: o upstream devolve a agenda de TODAS as comissões do período (o filtro por sigla é local), então janelas amplas (mensais/anuais) podem estourar o limite de tamanho da resposta (erro de payload): prefira janelas de até 2 semanas e divida períodos maiores em chamadas sucessivas. Retorna { sigla, periodo, count, reunioes }, cada reunião com codigo, descricao, data, hora, local, tipo e situacao. Intervalos entre anos são divididos por ano internamente. Descubra a sigla via senado_listar_comissoes; use o codigo retornado em senado_reuniao_comissao para os detalhes da pauta.
| Name | Required | Description | Default |
|---|---|---|---|
| sigla | Yes | Sigla da comissão | |
| dataFim | No | Data fim (YYYYMMDD) | |
| dataInicio | No | Data início (YYYYMMDD) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, but the description adds critical behavioral context: the upstream returns ALL committees' agenda for the period (filter is local), the default 14-day window when dates are omitted, and internal year-splitting. This warns of payload errors and rate-limit-like constraints beyond what annotations express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph with every sentence earning its place: purpose, date defaults, the upstream warning, return structure, internal year handling, and cross-references to sibling tools. The 'Atenção' warning is appropriately flagged, and the information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description still explains the return shape ({ sigla, periodo, count, reunioes } with key fields), which aids agent expectations. It fully covers default behavior, edge cases (year boundaries), and tool relationships, making the description self-sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds meaning: the default behavior when dataInicio/dataFim are omitted (last 14 days), the YYYYMMDD format confirmation, and the significance of sigla as a local filter with potential payload implications. This goes well beyond a simple field list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Lista reuniões de uma comissão (pela sigla)', a specific verb+resource construction. It clearly distinguishes from siblings by referencing senado_listar_comissoes for sigla discovery and senado_reuniao_comissao for pauta details, while the tool itself focuses on listing meetings by committee.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises using windows of up to 2 weeks and splitting larger periods into successive calls ('prefira janelas de até 2 semanas e divida períodos maiores em chamadas sucessivas'). It also names alternative tools for discovering the sigla and obtaining pauta details, giving clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_search_processosPesquisar processosARead-onlyIdempotentInspect
Busca processos legislativos no endpoint v3 /processo (parâmetros complementares ao senado_buscar_materias). Retorna { count, total, aviso?, processos }, cada item com id, codigoMateria, identificacao, ementa, tipoDocumento, dataApresentacao, autoria (compactada: primeiros autores + total), totalAutores, tramitando (boolean) e normaGerada. É obrigatório ao menos um filtro (sigla, número, ano, autor ou período). Limitado a limite (padrão 20, máx. 200), com aviso ao truncar. Use o id retornado em senado_obter_processo para detalhes. Ex.: { sigla: 'PL', ano: 2025, dataInicioApresentacao: '2025-03-01' } (datas em YYYYMMDD ou ISO).
| Name | Required | Description | Default |
|---|---|---|---|
| ano | No | Ano do processo | |
| autor | No | Nome do autor | |
| sigla | No | Sigla do tipo de processo (ex: PL, PEC) | |
| limite | No | Máximo de resultados (padrão: 20) | |
| numero | No | Número do processo | |
| tramitando | No | Em tramitação (S/N) | |
| dataFimApresentacao | No | Data fim da apresentação (YYYYMMDD ou YYYY-MM-DD) | |
| codigoParlamentarAutor | No | Código do parlamentar autor | |
| dataInicioApresentacao | No | Data início da apresentação (YYYYMMDD ou YYYY-MM-DD) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses the response envelope, field-level structure, compacted autoria, boolean tramitando, pagination limits, truncation warning via aviso, and accepted date formats. This is substantial behavioral context that the annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded with the core purpose and endpoint. It packs in return fields, an example, and cross-tool guidance without excessive fluff, though the enumeration of returned fields makes it slightly longer than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters, output schema, many siblings), the description covers mandatory filters, limit behavior, response shape, and relationships to related tools. The critical 'at least one filter' rule is not present in the schema, and the description supplies it, making the tool fully usable from the description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers all 9 parameters with descriptions, so the baseline is 3. The description adds value by naming the key filter groups (sigla, numero, ano, autor, período), clarifying the default and maximum for limite, and providing a practical example that demonstrates which parameters can be combined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Busca processos legislativos' (searches legislative processes) and specifies the exact endpoint v3 /processo. It also distinguishes itself from senado_buscar_materias by noting complementary parameters and points to senado_obter_processo for details, making the tool's scope and differentiation clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states the mandatory requirement of at least one filter, lists acceptable filter types, and provides a concrete example. It also guides the user to senado_obter_processo for details via the returned id, establishing a clear when-to-use and when-to-use-alternative boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_search_votacoesPesquisar votaçõesARead-onlyIdempotentInspect
Busca e lista votações do plenário combinando critérios opcionais. Janela temporal: informe dias (últimos N dias, 1-365) para atividade recente, OU dataInicio/dataFim (YYYYMMDD) para um período arbitrário — para um ano inteiro use dataInicio: "AAAA0101" e dataFim: "AAAA1231". Demais filtros: idProcesso, codigoMateria, sigla/numero/ano da matéria, codigoParlamentar e siglaVotoParlamentar. Retorna { count, votacoes } ordenadas da mais recente para a mais antiga; cada item traz codigoSessao, data, materia, codigoMateria, resultado e placar (totalSim/totalNao/totalAbstencao), sem votos nominais. Use senado_obter_votacao com o codigoSessao para os votos de cada senador.
| Name | Required | Description | Default |
|---|---|---|---|
| ano | No | Ano da matéria | |
| dias | No | Janela: votações dos últimos N dias (ignorado se dataInicio/dataFim forem informados) | |
| sigla | No | Sigla do tipo de matéria | |
| numero | No | Número da matéria | |
| dataFim | No | Data fim (YYYYMMDD) | |
| dataInicio | No | Data início (YYYYMMDD) | |
| idProcesso | No | ID do processo legislativo | |
| codigoMateria | No | Código da matéria | |
| codigoParlamentar | No | Código do parlamentar | |
| siglaVotoParlamentar | No | Tipo de voto do parlamentar |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive hints. The description adds valuable behavioral context beyond that: results are ordered newest-to-oldest, include a specific set of fields, omit nominal votes, and ignore 'dias' when absolute dates are supplied. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose. It uses structured sections for time window, other filters, and output shape, making it easy to scan. Every sentence contributes useful information without redundancy beyond a minor repetition of the 'ignored if' rule from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 10 optional parameters and an output schema, the description covers all essential aspects: filter combinations, temporal modes with examples, return shape, ordering, and the follow-up sibling tool for nominal votes. It is complete enough for an agent to decide when to invoke it and what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaningful semantics on top: it clarifies the temporal exclusivity between 'dias' and date range, provides a full-year example, and groups filters into logical categories. It also repeats some schema notes, but the added examples and interaction rules justify a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Busca e lista votações do plenário combinando critérios opcionais', naming a specific verb and resource. It clearly distinguishes this list/search tool from sibling tools like senado_obter_votacao by stating it returns a list and explicitly pointing to the sibling for individual vote details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on the two mutually exclusive temporal modes ('dias' OR 'dataInicio'/'dataFim') and includes a concrete example for full-year searches. It also directs the agent to use senado_obter_votacao when per-senator votes are needed, though it does not systematically enumerate when not to use this tool versus other search variants.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_senadores_adminSenadores (dados administrativos)ARead-onlyIdempotentInspect
Dados administrativos dos senadores conforme o parâmetro tipo: auxilio-moradia → { tipo, count, senadores } (nome, uf, partido, auxilioMoradia, imovelFuncional; legislatura atual). escritorios-apoio → { tipo, count, escritorios } (senador, uf, partido, setor, endereco, telefone). aposentados → { tipo, count, aposentados } ex-senadores aposentados pelos planos de previdência do Congresso (IPC e PSSC), com nome, tipo do plano, dataInicial, remuneracao. Filtros opcionais uf e nome (busca parcial) aplicam-se a auxilio-moradia e escritorios-apoio; nome também filtra aposentados. Cada tipo retorna count 0 e lista vazia quando não há registros. Para gastos de cota parlamentar use senado_ceaps. Ex.: { tipo: 'auxilio-moradia', uf: 'SP' } ou { tipo: 'aposentados' }.
| Name | Required | Description | Default |
|---|---|---|---|
| uf | No | Filtrar por estado (auxilio-moradia/escritorios-apoio) | |
| nome | No | Filtrar por nome do senador (busca parcial) | |
| tipo | Yes | Qual dado administrativo consultar |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only/idempotent annotations, it details the exact return structure for each `tipo`, including empty-list behavior (`count` 0, empty array) and filter scope. This significantly increases transparency about what the tool does and returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured, using backticks and clear sections for each tipo. Every sentence adds essential information, and the inline example improves usability without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has three enum options, optional filters, and distinct return shapes—all adequately covered. The description even notes the empty-response behavior and explicitly excludes a related sibling, making it complete for a developer to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even though the schema describes each parameter, the description adds cross-parameter semantics: which filters apply to which tipos, partial-name search behavior, and the meaning of each enum value. It also provides a concrete example, enriching the schema's coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides administrative data about senators, structured by a `tipo` parameter with three specific options. It explicitly distinguishes itself from the `senado_ceaps` sibling by directing quota expense queries there, making its scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names `senado_ceaps` as the alternative for different data, providing a clear when-not. It also gives usage examples and clarifies filter applicability, leaving no doubt about when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_senadores_afastadosSenadores afastadosARead-onlyIdempotentInspect
Lista os senadores atualmente afastados (fora de exercício). Retorna { count, senadores }, cada item com codigo, nome, nomeCompleto, partido, uf, foto e emExercicio (sempre false). Não requer parâmetros. Atenção: é a lista BRUTA do upstream, sem recorte de legislatura — pode conter registros históricos (ex.: senadores falecidos) e inconsistências pontuais com o detalhe do parlamentar; também não traz o vínculo titular↔suplente (para saber quem assumiu a vaga, consulte os mandatos em senado_obter_senador). Use codigo em senado_obter_senador para o detalhe; para os senadores em exercício (e busca por nome) use senado_listar_senadores.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the raw upstream nature, possible historical records and inconsistencies, and the absence of titular↔suplente linkage. This goes beyond the readOnlyHint/openWorldHint annotations, providing concrete behavioral expectations and not contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences front-load purpose and return shape, then caveats and alternatives. No wasted words; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, return structure (count and fields), parameter requirement, data caveats, and cross-references to sibling tools. Given the output schema exists, return details are not over-explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the description states 'Não requer parâmetros', which is clear and sufficient. With no parameters, the baseline is 4, and the description adds no confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Lista os senadores atualmente afastados', a specific verb+resource combination. It clearly distinguishes from siblings by directing to senado_listar_senadores for active senators and senado_obter_senador for details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is given: 'para os senadores em exercício (e busca por nome) use senado_listar_senadores' and 'Use codigo em senado_obter_senador para o detalhe'. It also tells when to use another tool for successor information, covering alternatives and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_senador_historicoHistórico do senadorARead-onlyIdempotentInspect
Histórico funcional de um senador conforme o parâmetro tipo. Valores: licencas (itens com dataInicio/dataFim/descricao), comissoes (sigla/nome/casa/participacao/datas), cargos (comissao/cargo/datas), historico-academico (cursos, registros brutos da API), filiacoes (partido/nomePartido/dataFiliacao/dataDesfiliacao) e profissoes (nome). Retorna { codigoSenador, tipo, count, itens }, com a forma de cada item dependente do tipo; tipos sem registros para o senador retornam count 0 e itens vazio. Requer codigoSenador (obtenha via senado_listar_senadores). Para dados biográficos e mandatos use senado_obter_senador. Ex.: { codigoSenador: 4994, tipo: 'filiacoes' } → histórico de partidos do senador.
| Name | Required | Description | Default |
|---|---|---|---|
| tipo | Yes | Qual histórico consultar | |
| codigoSenador | Yes | Código único do senador |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, etc.), the description discloses the exact return contract: `{ codigoSenador, tipo, count, itens }`, the shape of items per `tipo`, and the empty-case behavior (count 0, empty `itens`). It also notes that `historico-academico` returns raw API records, adding behavioral nuance not visible in annotations. No contradictions exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured: it opens with the core purpose, then systematically details the enum variants, return shape, empty behavior, a required parameter source, an explicit alternative, and a concrete example. Each sentence conveys essential information without filler; the length is justified by the parameter's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity—six distinct `tipo` values each producing different item structures—the description is complete. It covers all enum cases, specifies output structure, explains what happens when there are no records, and even includes an example. The presence of an output schema does not reduce the value here because the description already fully contextualizes the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema already covers both parameters descriptively, the description adds substantial meaning: it explains each `tipo` enum value with the expected item fields, specifies how `codigoSenador` should be sourced, and provides a concrete example (`{ codigoSenador: 4994, tipo: 'filiacoes' }`). This goes far beyond the schema's terse 'Qual histórico consultar' and 'Código único do senador'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Histórico funcional de um senador conforme o parâmetro tipo' and enumerates the six specific types of history (licencas, comissoes, cargos, historico-academico, filiacoes, profissoes). It distinguishes itself from the sibling `senado_obter_senador` by explicitly directing biographical and mandate queries to that tool, making the scope unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: it requires `codigoSenador` and tells the agent to obtain it via `senado_listar_senadores`. It also explicitly says 'Para dados biográficos e mandatos use senado_obter_senador', which names an alternative tool and clarifies when not to use this one. This fully covers usage context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_servidoresServidores do SenadoARead-onlyIdempotentInspect
Lista servidores do Senado por situacao (ativos, efetivos, comissionados ou inativos), com filtros opcionais por nome, lotacao e cargo. Retorna { situacao, count, total, servidores[] }, cada item com nome, vinculo, situacao, cargo, funcao, lotacao, anoAdmissao etc. Aplica limite (padrão 50, máx 500) e inclui aviso quando há truncamento — refine os filtros. Também conta e lista TODOS os servidores de TODA a estrutura subordinada a uma diretoria/secretaria (não só a lotação direta), cruzando a lotação de cada servidor com o organograma até o nível de serviço: informe a unidade (sigla ou nome, ex.: 'DGER') em subordinadasA — use isso para 'quantas pessoas estão sob a Diretoria-Geral', pois filtrar lotacao pela sigla-mãe retorna 0 (os servidores ficam em serviços/núcleos subordinados). Nesse modo o retorno traz a unidade resolvida, o total (um piso), os servidores, as unidades não reconhecidas no organograma (naoClassificados, com nota explicativa) e os afastados/em trânsito (afastadosOuEmTransito); ao responder, verbalize esses conceitos em português corrente — não cite nomes de parâmetros ou campos. Para o organograma em si use senado_estrutura_organizacional; para remuneração use senado_remuneracoes_servidores.
| Name | Required | Description | Default |
|---|---|---|---|
| nome | No | Nome do servidor (busca parcial) | |
| cargo | No | Cargo (busca parcial) | |
| limite | No | Máximo de resultados (padrão: 50) | |
| lotacao | No | Lotação/setor imediato (busca parcial, ex: SEGRAF). Para toda a estrutura subordinada a uma diretoria/secretaria, use `subordinadasA`. | |
| situacao | No | Qual lista consultar (padrão: ativos) | ativos |
| subordinadasA | No | Sigla ou nome de uma unidade (ex.: 'DGER', 'Diretoria-Geral'): conta/lista servidores de TODA a estrutura subordinada a ela (organograma até o nível de serviço), não só a lotação direta. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses pagination behavior (default 50, max 500), truncation warnings via aviso, the hierarchical subordinadasA expansion, and the response shape including edge cases like naoClassificados and afastadosOuEmTransito. No contradiction with the readOnlyHint or destructiveHint annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured: it front-loads the basic listing behavior, then details the special subordinadasA mode, and ends with sibling-tool pointers. Every sentence earns its place, but the density and length prevent a perfect conciseness score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the presence of an output schema, and rich annotations, the description covers response structure, truncation, the hierarchical search mode, edge cases, and alternatives. It is fully sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% description coverage for all parameters, so the baseline is 3. However, the description adds crucial practical context for lotacao vs subordinadasA and explains the meaning of limite and situacao defaults, raising the value above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists Senado servers by situacao with optional filters, and specifies the return structure. It distinguishes itself from sibling tools by explicitly referencing senado_estrutura_organizacional and senado_remuneracoes_servidores for related but different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on when to use the subordinadasA mode versus the lotacao filter, warns that using the parent unit sigla in lotacao returns 0, and names alternative tools for organizational structure and remuneration. This makes the usage context exceptionally clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_suprimento_fundosSuprimento de fundosARead-onlyIdempotentInspect
Suprimento de fundos do Senado (adiantamentos a supridos): relação anual de supridos, atos de concessão, empenhos, movimentações ou transações de cartão corporativo, conforme tipo. Retorna { ano, tipo, count, total, registros } (snake_case da API administrativa), filtrável por filtro textual e limitado por limite (padrão 100, máx 500); ao truncar, inclui aviso. Para maior/menor/média/mediana/distribuição/ranking ('quem mais recebeu', 'fornecedor com maior gasto', 'valor mediano') use estatisticas=true (só nos tipos transacoes, empenhos, atos-concessao — os demais não têm coluna de valor): SEM agruparPor = distribuição das linhas (min/máx/média/mediana/percentis) + top/bottom; COM agruparPor = grupos ranqueados por soma decrescente (grupos[0]=maior). A coluna de valor analisada é escolhida automaticamente conforme o tipo; o resultado já traz o rótulo legível dela em campoAnalisado. Registros sem valor são excluídos das estatísticas. Em atos de concessão, cada beneficiário é identificado pelo NOME (cruzado com o cadastro de supridos) e pode-se usar agruparPor='suprido' para ranquear por beneficiário. Informe o ano (>=2010); use os mesmos códigos administrativos vistos em senado_contratacoes_lista ou senado_execucao_orcamentaria para cruzar gastos.
| Name | Required | Description | Default |
|---|---|---|---|
| ano | Yes | Ano de referência | |
| tipo | No | Qual relação consultar (padrão: supridos) | supridos |
| topN | No | Tamanho do top/bottom nas estatísticas (padrão: 10) | |
| campo | No | Opcional: força a coluna de valor analisada; por padrão ela é escolhida conforme o tipo. Se a opção não se aplicar ao tipo, o padrão é usado automaticamente. | |
| filtro | No | Filtro textual (nome, unidade...) | |
| limite | No | Máximo de resultados (padrão: 100) | |
| agruparPor | No | Opcional: agrupa e ranqueia os resultados por esta dimensão (as opções válidas dependem do tipo; em atos de concessão, `suprido` agrupa por beneficiário, com o nome). | |
| estatisticas | No | Distribuição/ranking sobre as linhas: min/máx/média/mediana/percentis + top/bottom, ou grupos ranqueados por soma via agruparPor. Só para tipo transacoes/empenhos/atos-concessao |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations already declare readOnlyHint=true and destructiveHint=false, the description adds substantial behavioral details: it returns a specific structure, truncates with an `aviso`, excludes records without value from statistics, automatically chooses the value column and includes a readable label in `campoAnalisado`, and identifies beneficiaries by name in atos de concessão. This significantly surpasses annotation-only info and contains no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and information-rich; every sentence earns its place, but it's a single large paragraph that could benefit from bullet points or line breaks for scanability. It is front-loaded with the core purpose, and no filler or repetition exists, but the structure is slightly unwieldy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (8 parameters, enums, statistics mode, grouping options), the description is exhaustively complete. It covers return format, pagination, truncation warning, statistics behaviors, grouping semantics, value column selection, filtering, and cross-referencing with other tools. The presence of an output schema doesn't detract, and the description even summarizes the return shape for convenience.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While the schema already has 100% coverage, the description enriches parameter meaning: it explains how `tipo` selects different relations, how `estatisticas` changes behavior with and without `agruparPor`, that `limite` defaults to 100 with max 500, and that `campo` can override the auto-chosen value column. It also clarifies that `agruparPor='suprido'` works specifically in atos de concessão, adding semantics far beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Suprimento de fundos do Senado (adiantamentos a supridos): relação anual de supridos, atos de concessão, empenhos, movimentações ou transações de cartão corporativo, conforme `tipo`.' This clearly states what the tool does and differentiates it from siblings like senado_contratacoes_lista by mentioning cross-referencing those tools. It fully covers the resource, scope, and adjustable type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use `estatisticas=true` and only for specific `tipo` values ('só nos tipos `transacoes`, `empenhos`, `atos-concessao`'), and explains the difference between with and without `agruparPor`. It also tells the user to reuse administrative codes from `senado_contratacoes_lista` or `senado_execucao_orcamentaria`, providing clear guidance on how this tool relates to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_tabelas_plenarioTabelas de referência do plenárioARead-onlyIdempotentInspect
Consulta tabelas de referência do plenário para resolver códigos/domínios, conforme tabela: tipos-sessao (espécies de sessão plenária), tipos-comparecimento (situações de presença) ou legislaturas (períodos legislativos com datas). Retorna { tabela, count, total, linhas } — count é o nº após o corte por limite e total o disponível; count < total indica truncagem (aumente limite); count 0 quando o filtro não casa. Cada linha traz o código/sigla e a descrição do domínio (campos conforme a API). Use para interpretar campos como tipo de senado_agenda_plenario/senado_resultado_plenario. Para tabelas do processo legislativo (assuntos, classes, situações) use senado_tabelas_processo. Ex.: { tabela: 'legislaturas' } ou { tabela: 'tipos-sessao', filtro: 'deliberativa' }.
| Name | Required | Description | Default |
|---|---|---|---|
| filtro | No | Busca textual sobre qualquer campo da linha; count 0 se nada casar | |
| limite | No | Máximo de linhas (padrão 100, máx 500); count < total sinaliza corte | |
| tabela | Yes | Domínio a consultar: tipos-sessao (espécies de sessão); tipos-comparecimento (situações de presença); legislaturas (períodos com datas) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond the annotations: it explains the return object shape, count/total semantics, truncation behavior when count < total, filter behavior (count 0 when no match), and row contents. This goes well beyond the readOnlyHint and idempotentHint annotations, enriching the agent's understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but every sentence contributes: purpose, table list, return semantics, usage guidance, alternative tool reference, and examples. It is well-structured with specific details, avoiding fluff and front-loading the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the description covers all essential aspects: output format, edge cases (truncation, zero results), usage context, alternative tools, and practical examples. With an output schema already present, the description does not need to reiterate return fields, but it still enriches the context sufficiently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds significant meaning by explaining the interplay between 'limite' and the returned count/total values, clarifying that 'filtro' performs a textual search, and giving concrete examples for the 'tabela' enum values. This goes beyond mere schema repetition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool queries reference tables for the plenary (plenário) to resolve codes/domains, listing the exact supported tables (tipos-sessao, tipos-comparecimento, legislaturas). This specific verb+resource definition distinguishes it from related tools like senado_tabelas_processo.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to use: to interpret fields like 'tipo' in senado_agenda_plenario/senado_resultado_plenario, and points to an alternative (senado_tabelas_processo) for legislative process tables. Examples are included, providing clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_tabelas_processoTabelas de referência de processosARead-onlyIdempotentInspect
Consulta tabelas de referência do processo legislativo para resolver códigos/siglas, conforme tabela. Domínios de entidade: siglas (siglas de proposição), assuntos, classes, destinos, entes. Domínios de tipo (código→descrição): tipos-situacao, tipos-decisao, tipos-autor, tipos-atualizacao, tipos-documento, tipos-conteudo-documento, tipos-prazo. Retorna { tabela, count, total, linhas } — count é o nº após o corte por limite e total o disponível; count < total indica truncagem (aumente limite); count 0 quando o filtro não casa. Cada linha traz código/sigla e descrição (campos conforme a API). Use antes de filtrar em senado_search_processos/senado_processo_detalhe. Para as tabelas do plenário (tipos de sessão, legislaturas) use senado_tabelas_plenario. Ex.: { tabela: 'tipos-prazo' } ou { tabela: 'siglas', filtro: 'PEC' }.
| Name | Required | Description | Default |
|---|---|---|---|
| filtro | No | Busca textual sobre sigla/descrição; count 0 se nada casar | |
| limite | No | Máximo de linhas (padrão 200, máx 1000); count < total sinaliza corte | |
| tabela | Yes | Tabela a consultar — entidades (siglas, assuntos, classes, destinos, entes) ou tipos (tipos-situacao, tipos-decisao, tipos-autor, tipos-atualizacao, tipos-documento, tipos-conteudo-documento, tipos-prazo) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, the description goes beyond by explaining the return shape ({tabela, count, total, linhas}), the semantics of count vs total, truncation behavior when count < total, and zero results when filtro doesn't match. This fully discloses edge-case behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured, starting with the main purpose, then listing table domains, return format, usage guidance, and examples. Every sentence adds value, though the length is above average; it might benefit from slight trimming but remains clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (12 possible tables, 3 parameters) and an output schema already present, the description fully explains the return contract, intended use before process search/detail tools, the distinction from plenary tables, and provides examples. No important context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage for all parameters. The description adds practical semantics not in the schema: explains that count=0 when filtro doesn't match, count<total indicates truncation and suggests increasing limite, and gives concrete usage examples. This enriches the schema's baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Consulta tabelas de referência do processo legislativo para resolver códigos/siglas'. It enumerates all available tables (entities and types), and explicitly distinguishes itself from the sibling 'senado_tabelas_plenario', making the distinction unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance: 'Use antes de filtrar em senado_search_processos/senado_processo_detalhe' and directs users away from this tool for plenary tables: 'Para as tabelas do plenário ... use senado_tabelas_plenario'. This is clear when-to-use and when-not-to-use guidance with named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_tabelas_referenciaTabelas de referênciaARead-onlyIdempotentInspect
Consulta tabelas de referência do Senado pelo parâmetro tabela. Valores: tipos-materia → { count, tipos } (sigla/nome/descricao dos tipos de proposição, p.ex. PEC, PL, MPV) — catálogo curado mantido neste servidor (12 tipos mais comuns, não é a lista viva do upstream processo/siglas, que tem ~184 siglas); use para achar a sigla correta antes de senado_buscar_materias/senado_search_processos; partidos → { count, totalSenadores, partidos } (partidos com bancada atual, ordenados por nº de senadores); ufs → { count, totalSenadores, ufs } (as 27 UFs com a contagem de senadores em exercício); legislatura-atual → { numero, periodo, dataInicio, dataFim } da legislatura vigente; tipos-norma → { count, tipos } (sigla/descricao dos tipos de norma para senado_buscar_legislacao); tipos-uso-palavra → { count, tipos } (codigo/descricao para interpretar tipoUsoPalavra em senado_discursos_senador). Toda resposta inclui o campo tabela. Para a relação nominal de parlamentares use senado_listar_senadores.
| Name | Required | Description | Default |
|---|---|---|---|
| tabela | Yes | Qual tabela de referência consultar: tipos-materia, partidos, ufs, legislatura-atual, tipos-norma ou tipos-uso-palavra |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, the description adds essential behavioral context beyond the annotations. It details the exact return structure for every table value (e.g., `{ count, tipos }`), notes that every response includes the `tabela` field, and reveals that `tipos-materia` is a curated static subset rather than a live list. This is far richer than the annotation alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence is purposeful. It front-loads the general resource, then uses a structured, semicolon-separated enumeration with bold values and arrows to compactly convey a large amount of information. No filler or redundancy exists; each phrase adds a distinct fact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple one-parameter input and the output schema, this description is complete. It covers all enum values, their output contracts, the curation caveat, the universal `tabela` field, and cross-references to related tools. There is no missing information an agent would need to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of the parameter with an enum and a brief description, but the tool description goes much further. For each enum value, it specifies the output format and links it to the intended downstream tool (e.g., `tipos-norma` for `senado_buscar_legislacao`, `tipos-uso-palavra` for `senado_discursos_senador`). This gives the agent a complete semantic understanding of each option.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb+resource: 'Consulta tabelas de referência do Senado pelo parâmetro `tabela`.' It then enumerates each table value with its purpose and output shape, and explicitly distinguishes it from siblings by noting the curated nature of `tipos-materia` (12 most common vs the upstream ~184). This clearly differentiates the tool from other Senado query tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'use para achar a `sigla` correta antes de `senado_buscar_materias`/`senado_search_processos`'. It also gives an alternative for a different need: 'Para a relação nominal de parlamentares use `senado_listar_senadores`.' This makes the decision boundary very clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_terceirizadosTerceirizadosARead-onlyIdempotentInspect
Lista colaboradores terceirizados do Senado, filtráveis (busca parcial, sem acento) por nome, empresa contratada ou lotação. Retorna { count, total, terceirizados }, cada item com nome, cpf, situacao, empresa, lotacao e numeroContrato. A lista completa é baixada e filtrada no Worker; resultados limitados a limite (padrão 50, máx 500), com aviso ao truncar. Para a empresa contratante e seus contratos, use senado_empresas_contratadas.
| Name | Required | Description | Default |
|---|---|---|---|
| nome | No | Nome do colaborador (busca parcial) | |
| limite | No | Máximo de resultados (padrão: 50) | |
| empresa | No | Nome da empresa contratada (busca parcial) | |
| lotacao | No | Lotação/setor (busca parcial) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only annotations, the description discloses practical behavior: accent-insensitive partial search, worker-side full list download/filtering (performance implication), result truncation with 'aviso' when reaching limit. This adds significant value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences pack the essential information: purpose, return format, behavior, limitations, and alternative tool reference. Every sentence earns its place without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully covers what the tool does, how it filters, performance characteristics, parameter limits, return structure, and points to the relevant sibling tool for other needs. With an output schema present, the description still exceeds completeness expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% coverage, but the description enriches it by specifying that all filters are 'busca parcial, sem acento' and by explaining the 'limite' default, maximum, and truncation behavior. This goes beyond the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Lista colaboradores terceirizados do Senado' with specific filtering capabilities. It distinguishes itself from the sibling tool senado_empresas_contratadas by explicitly pointing to it for company-level queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when-to-use and alternative guidance: 'Para a empresa contratante e seus contratos, use senado_empresas_contratadas.' Also clarifies filtering options and result limits, making usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_vetosVetos presidenciaisARead-onlyIdempotentInspect
Lista vetos presidenciais em apreciação pelo Congresso Nacional, por ano ou por status de tramitação. Retorna { count, total, aviso?, vetos }, com cada veto trazendo codigo, identificacao, ementa, emTramitacao, materiaVetada, tipo (total/parcial), assunto e dataLimiteVotacao (prazo de sobrestamento de pauta). limite controla o corte (padrão 100; aviso indica truncagem). Informe ano OU status (tramitando/antes-rcn/encerrados). Para o resultado da votação de um veto use senado_resultado_veto.
| Name | Required | Description | Default |
|---|---|---|---|
| ano | No | Vetos do ano informado | |
| limite | No | Máximo de resultados (padrão: 100) | |
| status | No | tramitando = pós-RCN 1/2013 em tramitação (padrão); antes-rcn = anteriores à RCN; encerrados = tramitação encerrada |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint and idempotentHint, so description adds beyond that: describes return shape `{ count, total, aviso?, vetos }`, truncation behavior via `limite`/`aviso`, and field semantics like `tipo` and `dataLimiteVotacao`. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: purpose, return structure/fields, and parameter/alternative guidance. No wasted words, front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param list tool with annotations and output schema, description covers usage, return shape, truncation, and sibling alternative. Sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage, but description adds mutual exclusivity of ano/status and explains `limite` controls cutoff with `aviso` indicating truncation. This is meaningful beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Lista vetos presidenciais em apreciação pelo Congresso Nacional', a specific verb (Lista) and resource (vetos presidenciais) with scope. It distinguishes from sibling senado_resultado_veto by noting that tool for voting results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Informe ano OU status', guiding parameter selection. Clearly points to alternative: 'Para o resultado da votação de um veto use senado_resultado_veto'. This provides when-to-use vs alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_videos_taquigrafiaVídeos da taquigrafiaARead-onlyIdempotentInspect
Lista os vídeos e áudios (unidades descritivas) de uma sessão plenária ou reunião de comissão. Retorna { id, tipo, count, total, aviso?, videos } (sessão sem mídia no acervo → count/total 0 com aviso; ao passar de limite inclui aviso). A cobertura de mídia é mais ampla que a das notas: sessões conjuntas do Congresso costumam ter vídeos mesmo sem transcrição, cada item com codigo, data, descricao, orador, duracaoSegundos e os links urlVideo, urlAudio, urlThumbnail. Obtenha o id via senado_agenda_plenario/senado_resultado_plenario (sessão) ou senado_reuniao_comissao (reunião). Para a transcrição textual correspondente use senado_notas_taquigraficas, não esta.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Código da sessão plenária ou da reunião de comissão, conforme `tipo` | |
| tipo | No | sessao = plenário (padrão); reuniao = comissão | sessao |
| limite | No | Máximo de unidades (padrão 50, máx 200); o excedente é sinalizado em aviso | |
| orador | No | Retorna só unidades cujo orador contém este nome (busca parcial) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint, the description discloses return shape `{ id, tipo, count, total, aviso?, videos }`, behavior for sessions without media (count/total 0 with aviso), the effect of exceeding `limite` (aviso included), and that joint Congressional sessions often have videos even without transcription. This adds significant behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: purpose first, then return shape and edge cases, then source of id, then alternative tool. Every sentence is informative; no filler. It is long but justified given the tool's complexity and the need to differentiate from related tools.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, usage context, output structure, edge cases, and cross-tool integration. The output schema exists, but the description still explains return values and aviso behavior, making it complete for an agent to select and invoke correctly. Combined with rich annotations, this tool is fully specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already describes id, tipo, limite, and orador clearly. The description does not add much parameter-level detail; it mentions using `id` from other tools, but this is more about workflow than parameter semantics. Baseline 3 is appropriate because the schema carries the parameter documentation burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Lista os vídeos e áudios (unidades descritivas) de uma sessão plenária ou reunião de comissão.' This clearly distinguishes it from sibling tools like senado_notas_taquigraficas (textual transcription) and senado_reuniao_comissao (meeting data).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent where to obtain the required `id` (via senado_agenda_plenario, senado_resultado_plenario, or senado_reuniao_comissao) and explicitly says to use senado_notas_taquigraficas for the corresponding textual transcription, not this tool. It also mentions coverage differences, helping with when-to-use decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_votacao_comissaoVotações em comissãoARead-onlyIdempotentInspect
Lista votações em comissões. O parâmetro por (padrão comissao) define o eixo da consulta: por: comissao → exige siglaComissao; lista as votações daquela comissão. por: senador → exige codigoSenador; lista os votos do senador em comissões (filtro opcional comissao). por: materia → exige sigla, numero e ano (ex.: PL 2630/2020); lista as votações da proposição em comissões (filtro opcional comissao). Em todos os casos aceita período opcional dataInicio/dataFim (YYYYMMDD, filtrado pela data da reunião) e retorna { por, ...contexto, count, votacoes }, cada votação com codigo, data, comissao, reuniao, materia, descricao, totais computados dos votos (totalSim/totalNao/totalAbstencao) e votos (senador, partido, voto). Sem paginação. Períodos amplos podem estourar o tempo-limite da consulta (erro de timeout): prefira janelas de até 3 meses e divida períodos maiores em chamadas sucessivas. Obtenha siglas via senado_listar_comissoes, codigoSenador via senado_listar_senadores; para votações no plenário use senado_votos_materia. Atenção: o codigo de cada votação de comissão pertence a um espaço de numeração próprio e NÃO é válido em senado_obter_votacao (que é exclusivo de plenário) — podem coincidir numericamente, mas apontam para votações diferentes.
| Name | Required | Description | Default |
|---|---|---|---|
| ano | No | Ano da proposição (obrigatório quando por=materia) | |
| por | No | Eixo da consulta: comissao, senador ou materia | comissao |
| sigla | No | Sigla do tipo da proposição (obrigatório quando por=materia; ex: PL, PEC) | |
| numero | No | Número da proposição (obrigatório quando por=materia) | |
| dataFim | No | Data fim (YYYYMMDD) | |
| comissao | No | Sigla da comissão para filtrar (por=senador ou por=materia) | |
| dataInicio | No | Data início (YYYYMMDD) | |
| codigoSenador | No | Código do senador (obrigatório quando por=senador) | |
| siglaComissao | No | Sigla da comissão (obrigatório quando por=comissao; ex: CCJ, CAE) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent. The description adds critical behaviors: no pagination, timeout risk on broad periods, a recommended 3-month window, and a warning that `codigo` values share a namespace with plenary but are incompatible with senado_obter_votacao. This goes well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Though long, the description is densely informative and organized: one paragraph with clear branches and caveats. The first sentence states the core purpose, and every subsequent clause adds essential operational detail, including a valuable caution about naming collisions. It is well-structured and waste-free.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 9 parameters, conditional logic, and sibling tools; the description covers all modes, ID resolution, payload shape, limits, and caveats. It even explains the return structure and parameter effects, making the description self-sufficient despite the presence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 9 parameters have schema descriptions, yielding 100% coverage (baseline 3). The description adds substantial value by explaining conditional requirements per mode, the meaning of the `por` enum, the optional `comissao` filter in two modes, date format semantics, and the composed response shape. This far exceeds the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb and resource ('Lista votações em comissões'), then details three query axes (comissao, senador, materia). It explicitly distinguishes from plenary vote tools by naming senado_votos_materia and senado_obter_votacao, making its scope unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides exhaustive when-to-use guidance: for each `por` mode it lists required and optional parameters, gives examples (PL 2630/2020), and tells the user how to obtain prerequisites via senado_listar_comissoes and senado_listar_senadores. It also states exclusions (plenary votes belong to other tools) and recommends 3-month windows to avoid timeout.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_votacoes_senadorVotações de um senadorARead-onlyIdempotentInspect
Lista as votações nominais de um senador, mostrando como votou em cada matéria. Retorna { periodo, count, votos }, cada voto com codigoVotacao, data, materia, descricao, voto e resultado, ordenados da mais recente para a mais antiga. Sem período usa o ano corrente; informe ano ou o par dataInicio/dataFim (YYYYMMDD). Requer codigoSenador (obtenha via senado_listar_senadores); para detalhes de uma votação específica use senado_obter_votacao.
| Name | Required | Description | Default |
|---|---|---|---|
| ano | No | Ano das votações | |
| dataFim | No | Data fim (YYYYMMDD) | |
| dataInicio | No | Data início (YYYYMMDD) | |
| codigoSenador | Yes | Código único do senador |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations declare readOnlyHint, the description adds behavioral details: return format { periodo, count, votos }, each vote's fields, ordering from most recent to oldest, and default to current year when no period is provided. These go beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: purpose, return structure, and usage/parameters. Zero waste, front-loaded with the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, return format, parameter options, defaults, and related tools. Output schema is present, so return values are already structured; the description provides additional ordering and fallback context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter has a description, but the tool description adds important usage semantics: the fallback to current year when no period is given, and that ano is an alternative to dataInicio/dataFim. This clarifies the relationship between parameters beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Lista as votações nominais de um senador', providing a specific verb and resource. It distinguishes itself from sibling tools by naming senado_obter_votacao for details of a specific vote and senado_listar_senadores for obtaining the code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states that senado_obter_votacao should be used for details of a specific vote, and that codigoSenador is obtained via senado_listar_senadores. This gives clear when-to-use and alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_votos_materiaVotos de uma matériaARead-onlyIdempotentInspect
Obtém as votações de uma matéria pelo codigoMateria. Retorna { codigoMateria, count, votacoes }, cada item com data, descricao, resultado e placar (totalSim/totalNao/totalAbstencao); com incluirVotos: true (padrão false) acrescenta votos[] (nome, partido, uf e voto de cada senador). Obtenha o codigoMateria via senado_buscar_materias ou senado_obter_materia.
| Name | Required | Description | Default |
|---|---|---|---|
| incluirVotos | No | Incluir votos nominais de cada senador | |
| codigoMateria | Yes | Código único da matéria |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds valuable behavioral detail beyond that, including the return shape (`{ codigoMateria, count, votacoes }`), per-item fields, and the conditional effect of `incluirVotos: true` which appends `votos[]` with specific senator attributes. It does not mention potential errors or pagination, but the annotations lower the bar.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, leading with the core purpose and then detailing the return format and optional parameter behavior in a compact way. The follow-up sentence about obtaining `codigoMateria` is relevant and earns its place. No filler words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, output schema available, strong annotations), the description is complete enough. It explains the return structure, the optional parameter's effect, and how to source the required input. It covers all key aspects needed for correct invocation and result interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both parameters already described. The description adds extra meaning for `incluirVotos` by specifying the exact content of the added `votos[]` array (nome, partido, uf, voto) and the default false behavior. It also provides guidance on obtaining `codigoMateria` from sibling tools, which goes beyond the schema's simple 'unique code' description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool obtains the votes of a matter (`votações de uma matéria`) using `codigoMateria`. It specifies the verb, resource, and input, and implicitly differentiates from siblings like `senado_obter_votacao` (single vote) and `senado_search_votacoes` (search). The added note on obtaining `codigoMateria` from other tools further clarifies its usage context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: it is for retrieving all votes tied to a specific matter, and it explicitly mentions how to obtain the required `codigoMateria` via `senado_buscar_materias` or `senado_obter_materia`. However, it does not explicitly exclude alternatives or state when not to use it, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- AlicenseAqualityFmaintenanceMCP server for Brazilian Federal Senate open data (legislators, bills, votes, committees)33189MIT
- AlicenseAqualityAmaintenanceMCP server for the Brazilian Chamber of Deputies open-data API, enabling search and retrieval of federal legislative bills and their status.141Apache 2.0
- AlicenseAqualityDmaintenanceAn MCP server that provides access to the Brazilian Chamber of Deputies open data API. It enables users to search for deputies, track their expenses, and query legislative information such as bills and API endpoints.6MIT
- Alicense-qualityBmaintenanceMCP Server for accessing 36 Brazilian public data sources and 1 agent, enabling AI agents to query government data on economy, legislation, transparency, judiciary, elections, environment, health, and more.MIT
Your Connectors
Sign in to create a connector for this server.