Dados Abertos Senado BR MCP
Server Details
MCP server for Brazilian Federal Senate open data (legislative, administrative, e-Cidadania).
- Status
- Healthy
- Uptime
- 100.0% over 39 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- SidneyBissoli/senado-br-mcp-cloudflare
- GitHub Stars
- 6
- Server Listing
- Senado BR — Brazilian Federal Senate Open Data
TDQS
Scored across 69 tools
Each of the 69 tools targets a distinct resource/action, and the descriptions explicitly cross-reference each other to prevent confusion (e.g., senado_buscar_legislacao vs senado_buscar_materias, senado_obter_votacao vs senado_votacao_comissao). Even closely related tools like senado_agenda_plenario and senado_resultado_plenario have clear boundaries.
All tools share the 'senado_' prefix and use snake_case, but the verb/noun order is inconsistent: some are verb-first (senado_buscar_legislacao, senado_listar_senadores), others noun-first (senado_agenda_comissoes, senado_contratos). This mixed convention is readable but not a predictable verb_noun pattern throughout.
With 69 tools, the surface is far beyond the typical 3–15 for a well-scoped server. Even for a broad domain like the Brazilian Senate, this is heavy and likely to overwhelm agents, risking misselection despite clear descriptions.
The tool set covers a wide range of Senate data: senators, committees, sessions, legislation, processes, voting, budget, employees, contracts, and e-cidadania. Minor gaps exist (e.g., no full-text search of speeches, no tool to get a senator's committee assignments directly except via history), but these are workable.
Available Tools
69 toolsfetchDocumento para Deep ResearchARead-onlyIdempotentInspect
Returns the full document for an id obtained from search, as { id, title, text, url, metadata }: text is the readable content (Markdown) and url the canonical public page to cite.
Companion of search in the OpenAI Deep Research contract, over the Brazilian Federal Senate open data (senators in office and active committees of the Senate and the National Congress) catalog. Only ids returned by search are valid; an unknown id returns an error.
The senado_* tools remain the tools for data queries.
Behavior: read-only and idempotent — a live GET against the public source when the document needs it.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identificador de um documento devolvido por `search` |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover read-only, idempotent, open-world, and non-destructive behavior. The description adds useful extras: it performs a live GET against the public source, unknown ids return an error, and returns canonical citation URLs plus Markdown content. 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 well structured, front-loads the core behavior in the first sentence, and every sentence adds value: output shape, sourcing rule, valid-id constraint, sibling role, and live GET behavior. There is no 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 single-parameter fetch tool with annotations, an output schema, and a sibling list, the description is complete. It covers return contents, id provenance, error conditions, citation use, and the relationship to the broader tool suite.
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 documents the `id` parameter as the identifier returned by `search`. The description reinforces this and adds the unknown-id error behavior, but it does not materially extend the parameter meaning beyond what the schema already states.
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 and resource: 'Returns the full document for an id obtained from `search`' and defines the exact output shape. It also differentiates itself from siblings by naming itself as the companion of `search` and explicitly excluding the `senado_*` tools for data 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?
It clearly says this tool is the companion of `search`, that only ids returned by `search` are valid, and that `senado_*` tools remain the tools for data queries. This gives the agent explicit routing guidance and an exclusion condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchBusca para Deep ResearchARead-onlyIdempotentInspect
Searches the Brazilian Federal Senate open data (senators in office and active committees of the Senate and the National Congress) catalog and returns up to 10 matching documents as { id, title, url }, ordered by relevance (an empty list means nothing matched).
This tool exists for the OpenAI Deep Research contract: ChatGPT deep research, company knowledge and research workflows over the Responses API require exactly the tools search and fetch. Pass one of the returned ids to fetch to read the document.
For direct questions and for data (values, series, rankings) prefer the senado_* tools, which return the actual data with provenance — this is a catalog index, not a data query.
Query: natural language or keywords, Portuguese or English; accents and case are ignored.
Behavior: read-only and idempotent — the catalog comes from the public source and is cached in memory.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Termos de busca em linguagem natural ou palavras-chave (acentos e caixa são ignorados) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, and the description adds meaningful context beyond those: the catalog is cached in memory, the result is limited to 10 documents, an empty list means no match, and results are relevance-ordered. There is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and output contract, then adds routing guidance, query semantics, and behavioral notes. Every sentence carries distinct information, and there is no filler or redundant restatement of the tool title.
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 search tool with a huge sibling set, the description is complete: it defines the search domain, output shape, max results, empty-list behavior, language/accent handling, read-only/idempotent behavior, and how to continue with `fetch` or switch to `senado_*` tools. The presence of an output schema also means return values do not need to be re-explained, yet the description still gives useful semantics.
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 documents natural-language/keyword search with accent/case insensitivity. The description adds value by explicitly stating that queries can be in Portuguese or English and by framing query construction more usefully for an agent, which goes beyond the baseline of simply repeating 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: 'Searches the Brazilian Federal Senate open data ... catalog' and states the exact output shape, result limit, and ordering. It also explicitly distinguishes itself from the senado_* data tools by identifying itself as a catalog index rather than a data query, so an agent can tell it apart from its many siblings.
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 routing guidance: use this tool for Deep Research catalog lookups and pass returned ids to `fetch`, while preferring `senado_*` tools for direct questions and actual data. This is concrete when-to-use and when-not-to-use guidance, directly addressing the large sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
senado_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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds the default-date behavior ('padrão: hoje'), which is genuine added context, but says nothing about auth, rate limits, or result volume beyond the (schema-backed) return shape.
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?
Front-loaded with purpose, then parameters/defaults, then routing alternatives in a single tight paragraph. The full enumeration of return fields is somewhat redundant given an output schema exists, but it is organized and readable.
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, both parameters with defaults, return shape, and sibling routing. For a read-only list tool with an output schema and complete annotations, nothing an agent needs to call it correctly 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%, so baseline is 3, but the description adds meaning the schema omits: that `data` defaults to today when absent and that `siglaComissao` is an optional filter. That default-value disclosure is a real increment over the 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?
States a specific verb+resource+scope: 'Obtém a agenda de reuniões de todas as comissões numa data'. It explicitly names the two sibling tools it is not and the conditions that select them, so an agent can distinguish it without opening other schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit routing rules: use `senado_reunioes_comissao` for a single committee's history over a period, and `senado_reuniao_comissao` with the `codigo` for a meeting's details. When-to-use and alternatives are fully spelled out.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld/non-destructive, so the safety profile is covered. The description contributes useful behavior beyond that: the default assumption of today's date and the default escopo. It does add a return-shape enumeration that is largely redundant with the existing output schema, so it stops short of 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?
Front-loaded with purpose, then defaults, then alternatives — a logical order with no filler. It is slightly heavy because the return-shape enumeration duplicates the output schema, which keeps it from being maximally tight.
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 no-required-param read tool, the description covers purpose, defaults, scope enum, and sibling routing, and an output schema already documents the return. An agent has everything needed to call 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?
Schema description coverage is 100%, so the baseline is 3. The description reinforces the escopo choices and the no-data default, but adds little syntactic meaning beyond what the schema already provides (including the cn-only constraint on dataFim).
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?
States a specific verb (obtém) and resource (agenda de sessões de plenário), scoping it to Senado or Congresso Nacional, and explicitly distinguishes itself from senado_resultado_plenario (already-appreciated results) and senado_encontro_plenario (session details). An agent can identify the tool and its boundaries without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use conditions (escopo dia/mes/cn; no data → today) and names two alternatives with the exact condition that selects each. Nothing about routing between the three plenary tools is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the baseline is met there; the description adds genuinely non-obvious behavioral context: the counter-intuitive reading of 'atual' (em tramitação, not mandato vigente), the mixed population of the list, and possible duplicate rows for the same person under different `tratamento`. It does not cover pagination/truncation behavior beyond `limite`, which keeps it short of 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?
Front-loaded with purpose, then the semantic caveat, then return shape, then parameters — a sensible priority order with no filler. Dense, though the single long paragraph asks a fair amount of the reader at once.
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 goes further by naming the payload keys (`count`, `total`, `autores`) and per-author fields, and it resolves the biggest ambiguity an agent would face (the meaning of 'atual'). Nothing needed to call it correctly 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%, so the baseline is 3, but the description adds real semantics beyond the schema: `nome` is accent-insensitive partial matching and `limite` defaults to 50 with a 1000 ceiling. The `uf` filter adds little over the schema's example.
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?
States a precise verb+resource ('Lista parlamentares autores de processos em tramitação'), plus the ordering rule (by produção). It explicitly disambiguates itself from the sibling `senado_listar_senadores`, so an agent can pick the right tool without opening either schema.
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?
Gives explicit when-to-use, an explicit when-NOT-to-use ('não use como lista de senadores em exercício'), names the alternative for that case, and explains downstream usage of the returned `codigo` in `senado_obter_senador` and `senado_search_processos`.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/openWorld/idempotent/destructive, but the description adds real behavioral context beyond them: the live query against the official open-data base whose results may vary between calls, and the deterministic error (not an empty list) when no filter is supplied. The return-shape narration is largely redundant with the output schema, which keeps this from 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?
Front-loaded with the core purpose and the AND/at-least-one constraint before alternatives and return details. It is a dense but coherent single block; the sentence spelling out every returned field overlaps with the output schema and is the one piece of avoidable length.
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 4-param read-only search with an output schema already present, the description supplies everything else an agent needs: the at-least-one-filter rule, AND combination, live-data variability, sibling routing, and the follow-up tool for full text. Nothing required to invoke it correctly 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%, so the baseline is 3, but the description adds semantics the schema does not state: the four filters combine in AND mode, and at least one must be provided or the call fails deterministically. It also points to senado_tabelas_referencia for the tipo catalog, which the schema only mentions in passing.
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?
States a specific verb+resource (busca normas jurídicas federais já promulgadas) and enumerates the covered species (leis, decretos, LCP, EMC). It explicitly carves out the sibling boundary by naming senado_buscar_materias for proposições em tramitação, so the agent can distinguish it without opening either schema.
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?
Gives an explicit usage constraint ('informe ao menos um' filtro, com erro determinístico se omitido) and an explicit alternative with the selecting condition (proposições em tramitação → senado_buscar_materias). It also routes the follow-up step to senado_obter_legislacao via the returned codigo.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this readOnly/idempotent/openWorld/non-destructive, so the bar is lower; the description still adds operational behavior: default limite of 100 with a 500 cap and an 'aviso' field emitted when results are truncated. It doesn't cover error modes or deeper pagination beyond the limit, so it stops short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is long but front-loaded: purpose first, then usability guidance, then return shape, then routing, then defaults and examples. Nearly every clause carries actionable information, though the density is high enough that it slightly exceeds what an agent needs in one pass.
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 11 optional params and an output schema present, the description still supplies the essential context: at least one criterion required, result envelope and key field names, truncation signaling, and worked examples. An agent has everything needed to call and interpret 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?
Schema coverage is 100%, so baseline is 3; the description goes beyond by showing how parameters combine (palavraChave + ano + ordenarPor:'dataApresentacao' + ordem:'desc' + low limite) and by clarifying date formats (YYYYMMDD or ISO). It reinforces rather than introduces, keeping it at 4 rather than 5.
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?
It names a specific verb (Busca) and resource (matérias legislativas) and enumerates the searchable facets (tipo, número, ano, palavras-chave, autor, período, situação). It also distinguishes itself from the sibling senado_obter_materia by stating details/tramitação/textos should be fetched there instead.
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 gives an explicit precondition ('informe ao menos um critério'), concrete parameter recipes for the common 'matérias recentes sobre X' request, and a clear when-not rule ('não é necessário chamar detalhes para listar resultados'). The routing to senado_obter_materia is conditioned on the user asking for detail.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safe-read profile is covered. The description adds real behavioral context beyond that: limite is capped at 100 with an aviso on truncation, groups are ranked by descending sum with grupos[0] as the top spender, and topN defaults to 10. It stops short of noting pagination or performance limits on full-year scans.
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?
Purpose and the estatisticas routing are front-loaded, which is good, but the single dense paragraph then restates output field lists (mes, data, senador, tipoDespesa, fornecedor, cnpjCpf, valor) and enum semantics that already live in the schema and output schema. It is longer than needed, and some clauses duplicate structured data rather than adding value.
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 tool with two enums and an output schema, the description covers everything an agent must decide before calling: which mode, when statistics apply, how grouping changes results, how filtering interacts, truncation behavior, and where to get the senator code. Nothing essential to correct invocation 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%, so the baseline is 3, but the description goes beyond per-field docs by explaining cross-parameter behavior: estatisticas overrides modo, agruparPor switches the ranking output, and filters combine on the filtered set. The pointer to obtain codSenador via senado_listar_senadores also adds operational meaning the schema does not carry.
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 concrete verb+resource: CEAPS parliamentary-quota expenses for senators in a given year, and it enumerates the aggregation/statistics modes it returns. It is clearly distinguishable from generic budget siblings such as senado_orcamento_parlamentar and senado_execucao_orcamentaria by the CEAPS domain, though it never names an alternative tool to contrast against.
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 gives explicit question-to-parameter routing: for max/min/mean/median/distribution/ranking questions use estatisticas=true, otherwise pick an aggregate mode or modo='detalhe'. It explains precisely why the statistics path is needed ('the aggregate modes only sum by group and don't reveal distribution or the individual extreme') and how agruparPor changes the output, which is exactly the when/when-not guidance an agent needs.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly/openWorld/idempotent/non-destructive), yet the description adds substantial behavioral context beyond them: truncation signaled by `count < total`, empty-section behavior, error on invalid combinations, and the critical caveat that the source publishes no contract value in any section (only `aditivos.valor`, sometimes null).
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?
Purpose is front-loaded, followed by parameter semantics, return-shape/truncation behavior, data caveats, and routing. Despite its length, every sentence carries actionable information — no 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 four parameters, two enums, an output schema, and read-only annotations, the description covers everything an agent needs: valid combos, defaults, truncation, error cases, a non-obvious data limitation, and how to obtain the `id`.
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, but the description adds integrative meaning by spelling out which `secao` values are valid for which `tipo` and the default `limite`/truncation semantics. It mostly reinforces rather than extends the per-parameter schema text, so it exceeds baseline only modestly.
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?
States a specific verb (detalha) and resource (uma seção de uma contratação identificada por `id`), and explicitly distinguishes itself from the sibling locating tools `senado_contratos`/`senado_contratacoes_lista`. An agent can tell it apart without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use (detalhar a seção de uma contratação já identificada) and when-not (para localizar a contratação, use as ferramentas de lista). Also states the valid `secao`×`tipo` combinations and that invalid combos error out.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior, but the description adds substantial context: return shape, per-tipo normalization differences, ordering semantics, truncation warning, empty-list behavior, and routing to detail. 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?
Front-loaded with purpose and return shape, then covers ordering, pagination, limits, and routing in a single dense paragraph. Every clause appears to earn its place, with no 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 5-parameter read-only list tool with an output schema and rich annotations, the description covers return shape, per-tipo quirks, ordering, pagination, truncation, empty results, and escalation to detail. Nothing material for correct invocation 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%, so the schema already documents each parameter, making 3 the baseline. The description adds meaning beyond the schema by explaining that the textual filter is applied in the Worker over all fields, that tipo changes the record format, that offset paginates the tail after ordering, and that limite truncation triggers an aviso.
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?
States a specific verb ('Lista') and resource (atas de registro de preço, notas de empenho, menores aprendizes) and distinguishes itself from the detail sibling by directing deeper lookups to senado_contratacao_detalhe. An agent can identify the tool's scope immediately.
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?
Routes the agent to senado_contratacao_detalhe for deepening an ata/empenho and explains ordering, filtering, and pagination context. However, it does not explicitly compare this tool with other list-oriented siblings such as senado_contratos or senado_licitacoes.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, non-destructive), yet the description adds substantial non-obvious behavior: the full base is downloaded and filtered in the Worker, search is accent-insensitive partial on objeto/fornecedor/numero, results are truncated at `limite` with an `aviso`, and the source publishes no monetary value (only `aditivos` in the detail tool does). These are real gotchas an agent could not infer from structured fields.
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?
It is dense and front-loads the search capability before the detail-routing and the 'valor' caveat. Most sentences earn their place, though the description is long and the return-shape enumeration is partly redundant with the existing output 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?
For a 7-parameter, read-only search tool with an output schema, the definition is more than sufficient: it covers filters, matching semantics, pagination limit, subespécie ambiguity, the missing-value trap, and the follow-up tool. An agent has everything needed to call it correctly without 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 coverage is 100%, so the baseline is 3, but the description adds meaning beyond it: partial and accent-insensitive matching for objeto/fornecedor/numero versus the exact-match cnpj, and the default/max behavior of `limite` with truncation warning. This clarifies matching semantics the schema alone does not 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 states a specific verb and resource ('busca contratos administrativos do Senado') and enumerates the filters (fornecedor, CNPJ, ano, número, objeto, mão de obra). It also differentiates from siblings by naming senado_contratacao_detalhe as the drill-down target and warning that the list mixes subespécies. An agent can tell what this returns and how it differs from the licitações/contratações 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 gives clear operational guidance: use the returned `id` in `senado_contratacao_detalhe` for items, payments, guarantees or aditivos, and explicitly says not to spend calls hunting for the contract 'valor'. However it does not explicitly contrast with close siblings like senado_contratacoes_lista, senado_licitacoes or senado_empresas_contratadas, so the when-to-use routing is strong but incomplete.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description adds the mandatory date-range constraint with format and sketches the returned payload shape, which is genuine extra context; it stops short of pagination or result-size behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: scope first, then output shape, then sibling routing. No filler, and the most decision-relevant 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?
An output schema exists, so return values need not be explained in depth, yet the description still names the top-level keys. Combined with full parameter documentation and explicit sibling routing, nothing needed to call this tool correctly 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% and both parameters already carry type, pattern and format descriptions. The description's mention of dataInicio/dataFim as required in YYYYMMDD restates what the schema already says, adding no new semantics, so the baseline 3 applies.
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?
States a specific verb and resource ('Lista todos os discursos realizados em plenário') plus the scoping dimension (date range). It explicitly distinguishes itself from the two closest siblings, senado_discursos_senador and senado_discurso_texto, so an agent can route without opening schemas.
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?
Gives explicit alternatives and the condition that selects each: use senado_discursos_senador for a specific parliamentarian, senado_discurso_texto for the full text. This is exactly the when/when-not routing an agent needs.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnly/idempotent/openWorld safety, which says nothing about the operational behavior disclosed here: tipo swaps the upstream source, results are unpaginated, empty periods yield count 0 with an empty list, and the return omits the integral text. The 30-day default window for tipo=discursos is a critical non-obvious gotcha that no annotation or schema field conveys on its own.
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?
Front-loaded with the core summary, then the return shape, then the period caveat and routing hints — a sensible order. It is a dense single block and the 30-day warning is partially duplicated between prose and schema, but nearly every sentence carries distinct operational 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 5 params, an enum, an output schema, and a crowded sibling namespace, the description supplies everything an agent needs: data source, return shape, non-pagination behavior, the period pitfall, prerequisite tool for the senator code, and follow-up tool for the full text.
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, and individual param docs are largely mirrored here. Above baseline because the description explains the cross-parameter interaction (tipo silently changes what dataInicio/dataFim mean and which upstream source is queried), which per-field schema descriptions do not capture.
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?
Specific verb+resource (lista pronunciamentos de um senador) with explicit scope modifiers (período, casa). It also names the exact siblings it is not: senado_discursos_plenario for all senators and senado_discurso_texto for full text, so an agent can route without opening schemas.
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 when-to-use chain: get codigoSenador via senado_listar_senadores, get full text via senado_discurso_texto, use senado_discursos_plenario for all senators in a period. It also states the when-not condition (this tool is only for one senator's own pronunciamentos).
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld). The description adds genuinely useful behavioral context beyond them: the returned text is not truncated nor paginated and may reach tens of KB, and invalid codes or text-less speeches return an error. The return-shape sentence partly duplicates the output schema, keeping this from a full 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?
Purpose and scope are front-loaded, followed by return shape, error behavior, and routing guidance. Every sentence earns its place, though the density of several packed clauses in one paragraph slightly reduces 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?
An output schema exists, so the description need not re-explain return values, and it still supplements them with size and error expectations. Combined with clear usage routing and a fully documented parameter, an agent has everything needed to call 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?
Schema coverage is 100% and the schema already documents the single integer parameter, so baseline is 3. The description adds real value by explaining the parameter's provenance — it is the `codigo` field obtained from the two listing tools — which helps the agent source a valid value.
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?
States a specific verb (obtém) and resource (texto integral de um único pronunciamento) keyed by `codigoPronunciamento`. It explicitly distinguishes itself from `senado_discursos_senador`/`senado_discursos_plenario`, telling the agent this tool returns text of an already-identified speech while those list/filter.
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 when-to-use (fetch the body of one identified speech) and when-not (use the listing tools for summary/date/author). It also gives the prerequisite workflow: obtain `codigoPronunciamento` first from the two sibling tools using the `codigo` field.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and non-destructive behavior, so the safety profile is covered. The description adds real behavioral context beyond that: no pagination, output ordered by quantidade descending, and count of 0 when the committee has no records. It also flags the non-obvious silent-ignore behavior of codigoParlamentar under relatoria.
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 but well-ordered paragraph: purpose first, then parameter semantics, then return shape, then discovery and alternative routing. Every sentence carries information, though the return-shape enumeration is somewhat heavy given an output schema already exists.
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 three parameters, an output schema, and full schema coverage, the description supplies everything an agent needs: purpose, the tipo/codigoParlamentar interaction, the empty-result case, and the sibling tools for discovery and for the alternate list-based task.
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, but the description goes further by explaining that tipo selects which workload axis is measured and by explicitly warning that codigoParlamentar is ignored in relatoria — a semantic caveat that prevents a plausible misinvocation.
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?
States a specific verb and resource ('Ranqueia parlamentares pela quantidade de matérias numa comissão') and immediately scopes it by the tipo axis (autoria vs relatoria), so an agent can distinguish it from list-oriented siblings. It explicitly names senado_buscar_materias as the tool for the underlying list rather than the count.
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 routes the agent: discover the sigla via senado_listar_comissoes, get the parlamentar codigo from senado_obter_senador, and use senado_buscar_materias when the raw list of matérias is wanted instead of a ranking. It also states the condition under which codigoParlamentar is useful (tipo=autoria) and when it is not (relatoria).
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false, covering safety. The description adds critical data-availability context: 'encerrada' only covers consultations closed since ingestion (grows over time), and those closed before the first load are not captured. This is valuable beyond annotations, though no rate limits or cache behavior are mentioned.
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 front-loaded, covering modes, defaults, status semantics, return shape, and sibling routing in a single paragraph. It is slightly long but every sentence adds value; no 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 6 parameters, output schema, and full schema coverage, the description covers the tool's purpose, modes, status behavior, defaults, and return fields (modo, criterio, count, consultas). It lacks edge cases like pagination for limite>50 or error handling, but is otherwise 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?
Schema description coverage is 100%, so the schema already documents each parameter. The description adds quantitative defaults (percentualMinimo 85%, margemPolarizacao 15 points, minimoVotos 1000, limite 10) and clarifies the sorting logic for each mode, going beyond the schema. It does not explain the parameters' interaction fully, so not a 5.
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 (analisa) and a precise resource (conjunto completo de consultas públicas abertas) and explains the two analysis modes. It explicitly differentiates from siblings senado_ecidadania_consultas_votos (historical archive with UF breakdown) and senado_ecidadania_obter_consulta (single consultation detail).
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?
Gives explicit conditions for each mode (consenso=high agreement, polarizada=~50/50) and names the alternative tools for other tasks. The final sentence directly instructs when to use this tool for 'most voted consultations, ranking, or current panorama'.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description adds genuinely useful operational context beyond them: the data source (CSV Arquimedes), volume (~15k matérias), refresh cadence (weekly), and the important caveat that `status` reads as `Descontinuado` in the source archive. It stops short of describing pagination or ranking tie-breaking 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?
Front-loaded with purpose and routing before any detail, and every sentence carries information. It is dense and long, with slight repetition of the 'acervo vs. opinião atual' contrast, but nothing is 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?
Despite an output schema existing, the description enumerates the return shape (`count`, `referencePeriod`, `consultas` and per-item fields including `votosPorUf`), covers all five optional parameters, and explains the data's provenance and freshness. Nothing an agent needs to call it correctly 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%, so baseline is 3, but the description adds real meaning beyond the schema: `uf` not only filters but re-ranks by that state and injects a `recorteUf` field on each item, and `materia` matches either a numeric code or a substring of the name/ementa. Defaults and enum semantics for `ordenarPor`/`ordem` are also restated in context.
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?
States a specific verb+resource+scope: historical archive of e-Cidadania public consultation votes, broken down by UF. It explicitly names and contrasts the two nearest siblings (`senado_ecidadania_consultas_analise` and `senado_ecidadania_listar_consultas`), so an agent can route without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use (requests about the historical archive or votes by state) and when-not-to-use (current opinion, rankings of most-voted consultations in progress), naming the alternative tool for each case. The distinction is reinforced by explaining that archived records carry `status: Descontinuado`.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/destructive/openWorld, so the bar is lower. The description still adds genuinely useful provenance context — that all consultas enter as 'aberta', transition to 'encerrada' over time, and that consultas closed before the first ingestion are never captured — which an agent cannot infer from annotations or schema.
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?
Front-loads the core purpose and scope, then routing instructions, in a dense but readable block. The enumerated return fields are somewhat redundant given an output schema exists, which is the only wasted material.
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 present, the description need not detail return values, and it doesn't overload on them. It covers scope, defaults, status semantics, ingestion limits, and sibling routing — everything needed to call 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 description coverage is 100%, so the baseline is 3. The description restates `limite` (padrão 20) and the status lifecycle, but adds little beyond the schema's own enum description, which already explains the encerrada growth caveat.
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?
States a specific verb (Lista) and resource (consultas públicas do e-Cidadania), scopes the default set as the complete 'abertas' collection (~7.7k) and identifies the underlying data (sim/não votes). It is clearly distinguishable from senado_ecidadania_obter_consulta and senado_ecidadania_consultas_analise, which it names explicitly.
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 routes the agent: use senado_ecidadania_obter_consulta for per-consulta detail with an id, and senado_ecidadania_consultas_analise for analytical cuts. The status filter's purpose (aberta/encerrada/todas) is explained, giving clear when-to-use conditions.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, openWorld. The description adds valuable non-annotation context: the data source (D1, weekly refresh), the rough size (thousands, including closed events), and the return shape. It does not cover rate limits, but this is solid extra context beyond the 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?
Front-loaded with the core purpose, then return shape, then filters and the ranking tip, then the sibling routing. Dense but every sentence earns its place; slightly long with a couple of parenthetical asides, yet no 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?
An output schema exists, and the description still summarizes the returned fields and status enum values, plus the data source and freshness. It tells the agent what it gets, how to filter, how to rank, and where to go for details. Complete for its role.
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 parameters are already documented; baseline is 3. The description does mention filters by status, comissao, and limite and describes the comentarios ranking via ordenarPor/ordem, which maps to what the schema already carries, adding little beyond it.
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?
States a specific verb+resource: lists interactive e-Cidadania events (public hearings, sabatinas, lives) with the scope explicitly called out as the complete corpus. It also names the sibling senado_ecidadania_obter_evento for detail and scopes itself as the list counterpart.
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 routes the agent: use this for the full list and for a ranking of most-commented events; use senado_ecidadania_obter_evento for full detail of a single event. No explicit when-not beyond that, but clear context and a named alternative.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: the corpus is persisted in D1, updated weekly, includes closed/converted ideas, has a fixed size (~114 mil), and clarifies that `autor`/`dataPublicacao` are null in list results. This is beyond what annotations alone provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose and scope, then data shape, then usage guidance — every sentence earns its place with no waste.
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?
Complete for a filtered list tool: annotations cover safety, an output schema exists (so return format needn't be explained), schema covers parameters, and the description adds corpus/persistence context and sibling routing. Nothing an agent needs to call it correctly 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%, so the schema already documents all five parameters including enums and defaults. The description adds a note about filtering by status/limite and how to use ordernarPor/ordem for ranking, which corroborates but doesn't materially extend the schema. 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?
States a specific verb ('Lista') and resource ('ideias legislativas') with precise scope ('conjunto completo', ~114 mil ideias incluindo encerradas e convertidas). Explicitly routes to sibling senado_ecidadania_obter_ideia for detail, distinguishing what this tool returns 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?
Explicit guidance: use this for the complete list, use obter_ideia for full detail of one idea, and use ordenarPor:'apoios' with ordem:'desc' for a ranking. Names the alternative and the condition that selects it.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent/openWorld annotations by disclosing output-level gotchas: dataAbertura/dataEncerramento/comissao/linkMateria are always null because the portal does not publish the period, and `comentarios` is always null because the page lacks a comments feature. It also explains the semantic substitute for the missing dates (status transitions when the matéria enters/leaves tramitação), which prevents an agent from misinterpreting nulls as errors.
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?
Front-loads the purpose, then layers return fields, then null-field caveats, then the id-prerequisite tip. The middle sentences are dense but each carries non-obvious information; the field enumeration is slightly list-like, keeping it just short of maximal efficiency.
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 one required parameter, full schema coverage, and an output schema present, the description still adds the missing behavioral context an agent needs (which returned fields are permanently null and why, plus how to source the id). Nothing required to call it correctly is left unstated.
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 `id` parameter, so the baseline is 3; the description adds provenance value by specifying that the id must come from senado_ecidadania_listar_consultas or senado_ecidadania_consultas_analise. It does not add format or validation detail beyond the schema, so it stays just 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?
States a specific verb and resource ('Obtém o detalhe de uma consulta pública específica do e-Cidadania') and scopes it to a single record, which cleanly separates it from the sibling listing tools (senado_ecidadania_listar_consultas, senado_ecidadania_consultas_analise). An agent can tell what this returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the sibling tools to call first to obtain the required `id` ('Obtenha o `id` antes via senado_ecidadania_listar_consultas ou senado_ecidadania_consultas_analise'), giving a concrete alternative-and-prerequisite path rather than leaving lookup order to inference.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description still adds real behavioral context: unfilled fields return `null`, a non-existent `id` returns an error, `pauta` is capped at 15 items, and `videoUrl` is null when no YouTube embed exists. It does not state rate limits or auth needs, but on top of rich annotations this is substantial added value.
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?
Front-loaded with the core action, then the return shape, then the routing advice. Information-dense but every clause earns its place; the single long sentence is slightly heavy but not padded.
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-param, well-annotated read tool with an output schema, the description covers purpose, prerequisite, return shape, error behavior and sibling routing. Nothing an agent needs to call it correctly 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% and there is only one parameter, so the schema already documents `id` fully (constraint > 0, and where to source it). The description reinforces the id-sourcing rule but adds no syntax or format detail beyond the schema, so 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?
States a specific verb (obter/detalhar) and resource (evento interativo do e-Cidadania), enumerating the event subtypes (audiência, sabatina, live). It explicitly distinguishes itself from the sibling senado_ecidadania_listar_eventos, so an agent can disambiguate without opening either schema.
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 an explicit prerequisite (obtain the `id` first via senado_ecidadania_listar_eventos) and an explicit when-not clause (to only list/rank events without descrição/pauta/convidados, use listar_eventos instead). Both the condition and the alternative are named.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read-only, idempotent, non-destructive profile, so the description rightly focuses on data behavior. It adds useful quirks beyond annotations: the `descricao` is truncated at ~2000 characters, `comentarios` is always null because idea pages lack comments, and `plConvertido` indicates conversion into a bill. That is solid behavioral context, though some listed fields overlap with the output schema.
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, then adds output details and the prerequisite in a compact three-sentence block. It is slightly longer than strictly necessary because it enumerates return fields despite an existing output schema, but no sentence is wasted.
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 schema, existing output schema, and rich annotations, the description supplies everything an agent needs: purpose, prerequisite acquisition of the id, output field overview, and notable data caveats (truncation, null comments). No important operational detail appears to be 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 has 100% description coverage and already documents the sole `id` parameter as the legislative idea ID. The description reinforces where to obtain that id, but it adds no format, constraints, or validation semantics beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Obtém o detalhe de uma ideia legislativa do e-Cidadania') and immediately distinguishes its role from the sibling listing tool by telling the agent to obtain the id via `senado_ecidadania_listar_ideias`. An agent can identify this as the detail-fetching counterpart to the list endpoint without opening either schema.
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 names the prerequisite and the path to satisfy it: get the id first via `senado_ecidadania_listar_ideias`. There is no explicit when-not-to-use clause, but the routing context is clear enough that the agent knows this tool is for detail lookup rather than discovery.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read-only/idempotent profile, so the bar is met here by extra behavior: it discloses that it analyzes the full set of open consultas plus ideias, caps output at 10, filters by polarization/consensus thresholds and minimum participation, and orders results by participation. What it does not add is any note on cost, rate, or performance of the full-set analysis.
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?
It is dense but front-loaded: the purpose and scope lead, followed by the return shape, criteria defaults, and routing. Most sentences earn their place, though the detailed return-shape paraphrase is somewhat redundant given an output schema exists.
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 nested, single-object, zero-required-parameter tool, the description covers purpose, criteria defaults, output cardinality, ordering, and the handoff to detail tools. An agent has everything needed to call it correctly even before consulting the 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?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the enum stubs: it explains that `apenasEmTramitacao` (padrão true) considers only open consultas based on real status, and that `evitarPolarizacao`/`evitarConsenso` are on by default, clarifying the behavioral effect of each flag.
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?
It states a specific verb and resource ("Sugere temas para uma enquete pública mensal") plus the exact method (analisa o conjunto completo de consultas abertas e ideias, elege as de maior engajamento, filtrando por polarização/consenso e participação mínima), so an agent can distinguish it from listing/analysis siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for use and explicitly routes follow-up investigation to `senado_ecidadania_obter_consulta` or `senado_ecidadania_obter_ideia` by `tipo`. It does not, however, state when to prefer this selector over `senado_ecidadania_consultas_analise` or `senado_ecidadania_listar_consultas`, so the exclusion side is left implicit.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld), so the bar is lower. The description still adds operational context beyond them: the one-of-nome/cnpj requirement despite zero required params, the 30-contract cap per item, and the default 20 / max 100 limit — all useful for calling it correctly.
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?
Front-loads purpose, then return shape/fields, then input constraints, then routing to siblings — a logical order. Every sentence carries distinct information with no padding.
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?
An output schema exists so return values need not be re-described, yet the description usefully summarizes the envelope and per-item fields and caps. Combined with the constraint and routing notes, it is complete for a 3-param, read-only lookup 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 per-field meanings (nome minimum length, partial search, limite default) are already documented and the baseline is 3. The description adds genuine meaning the schema does not encode: that at least one of nome or cnpj must be supplied, preventing a param-less call the schema would otherwise permit.
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?
States a specific verb ("Busca") and resource ("empresas que contratam com o Senado") and narrows the search keys (nome mín. 3 caracteres ou CNPJ/CPF). It also names the siblings that own the detail view (senado_contratos, senado_contratacao_detalhe), so an agent can distinguish this list/lookup tool from them without opening schemas.
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 the selection condition ("Exige nome ou cnpj") and routes the agent to senado_contratos / senado_contratacao_detalhe for contract-level detail. It explains why the input is required ("a base completa é grande"), giving the agent a clear when-to-use and when-to-go-elsewhere rule.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld/non-destructive. Beyond that, the description discloses that encontro may be empty when a section has no data, that the call errors when the codigo does not exist, and that encontro's shape varies by section (object vs array). These are meaningful behavioral traits the annotations do not cover.
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?
Front-loads the core purpose and return shape, then details sections, failure modes, and sourcing. It is dense and somewhat run-on within the long middle sentence, but every clause carries actionable information with no 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 two-parameter read tool with an output schema, the description covers purpose, section semantics, return shape, empty-result behavior, error condition, and upstream sourcing. Nothing an agent needs to call it correctly 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% and both parameters are documented there, so a baseline of 3 applies. The description adds real meaning above the schema by spelling out what each enum value returns (detalhes general data, pauta planned items, resultado appreciated items, resumo synthesis) and where codigo comes from.
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?
States the specific resource (a legislative meeting / plenary session) and its scope, and explicitly contrasts the different data slices (detalhes/pauta/resultado/resumo). The named upstream siblings for obtaining the codigo make it clearly distinguishable from senado_agenda_plenario and senado_resultado_plenario.
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?
Gives explicit routing: obtain the codigo via senado_agenda_plenario or senado_resultado_plenario, and explains which section to pick depending on the desired data. There is no when-not, but the preconditions and alternatives are concrete enough for correct invocation.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description's added value is the provenance caveat: the open-data API does not publish the full tree, so this comes from the institutional portal. That is a genuinely useful disclosure about data trustworthiness and completeness. It stops short of mentioning pagination or how the limite cap interacts with totalSubordinadas, so it is 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 purpose, the accepted input forms, and the return-shape breakdown are all front-loaded before the routing advice, and the source caveat closes it. It is dense with backticked field names but every clause carries information; only the return-shape enumeration is partly redundant with the output 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?
For a two-parameter read tool with annotations and an output schema, the description supplies everything the structured fields do not: the semantic meaning of caminho (superiors from the top down to the immediate superior) and of subordinadas (the entire subtree, including nuclei), plus the data-source caveat. Nothing needed to call it correctly 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%, so both parameters are already documented, and the description's note that unidade accepts a sigla or a full name only restates the schema. The limite parameter and its interaction with totalSubordinadas is never mentioned. Baseline 3 is correct when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (the Senate's organizational chart down to service level) and the exact operation (given a unidade, return its superior path and full subordinate subtree). It explicitly names the sibling it is not — senado_servidores — and the different question that tool answers, so an agent can route without opening either schema.
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?
Gives concrete question shapes this tool answers ('o que está sob a DGER', 'quais secretarias/serviços pertencem a X') plus an explicit exclusion: to count or list servants under a unit, use senado_servidores with subordinadasA. When-to-use and when-to-use-something-else are both stated.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe, idempotent read profile, but the description goes well beyond them: it discloses the auto-selected value column surfaced as `campoAnalisado`, the returned envelope (`tipo, modo, ano, totalLinhas`, `agregado[]` ordered by value, `despesas[]`/`receitas[]`), and the truncation behaviour (`limite` default 100 with an `aviso` when truncated). These are real runtime behaviours an agent needs and none are in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense paragraph, but it is front-loaded with the resource definition and the statistics decision rule, and every clause carries operational information. Some content (return envelope fields, type/modo pairing) restates the schema, which is mild redundancy in an otherwise efficient block.
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 8-parameter, 4-enum tool with an output schema, the description covers what is missing elsewhere: when to prefer statistics vs detail mode, that filtering by `ano` is the volume-control lever, sibling disambiguation, and truncation signalling. Nothing an agent needs to call this correctly is absent.
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, but the description adds interaction semantics the schema entries only hint at: `modo` is ignored when `estatisticas=true`, `estatisticas` + `agruparPor` produces ranked groups with groups[0] as largest, and `campo` may be overridden and silently falls back to the type default. It stops short of explaining the type-to-modo validity matrix in full, which the schema leaves to the reader.
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 opening sentence states a specific resource (Senado budget execution) with the exact measures covered (dotação, empenhado, liquidado, pago / previstas, arrecadadas) and their temporal scope (desde 2013 / 2012). It explicitly positions itself against the closest sibling, `senado_orcamento_parlamentar`, removing ambiguity about which budget tool to pick.
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 gives concrete routing conditions: use `estatisticas=true` for maior/menor/média/mediana/distribuição/ranking, no `agruparPor` = line distribution, with `agruparPor` = ranked groups, and filter by `ano` to shrink volume before requesting `detalhe`. It also names the alternative tool it must not be confused with, which is the rare 'when-not-to-use' clause.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds substantial behavioral context the annotations cannot: the two distinct response shapes, that valorTotal sums the month's spend, and that estimated ranking semantics apply via agruparPor. It does not mention rate limits or failure modes, keeping it just short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose before branching into the estatisticas behavior, and every clause carries information. It is dense and somewhat run-on, but nothing is wasted; a minor trim would improve readability without losing 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?
For a 7-parameter tool with an output schema, this covers purpose, mode selection, filtering, pagination, and cross-tool routing. The two distinct return shapes are explained even though the output schema exists, leaving no ambiguity 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%, so the baseline is 3, but the description goes beyond restating fields: it clarifies that limite is ignored under estatisticas=true, that topN governs top/bottom when estatisticas=true without agruparPor, and elaborates the agruparPor ranking result. This adds interaction meaning the schema fields alone leave implicit.
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?
States a specific resource (overtime pay to Senate servants) with scope (ano/mes de referência, a partir de 2013) and explicitly distinguishes itself from senado_remuneracoes_servidores, which covers full remuneration. An agent can tell exactly what this returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing: for max/min/mean/median/distribution/ranking questions use estatisticas=true, with concrete example phrasings ('quem recebeu mais horas extras'). It also names the alternative tool for full remuneration, so when-to-use and when-not-to-use are both covered.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered; the description adds genuinely new behavior: the mandatory-filter error condition, the default and max page size, and the fact that raw unfiltered API records are returned. It does not describe pagination beyond 'limite' or ordering, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tightly packed sentences: purpose, return shape, limits, precondition, and alternative. No filler, and the search modes plus the error precondition are 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?
Covers purpose, required input constraint, result cap, and the sibling hand-off; the return payload is restated briefly and an output schema exists anyway, so nothing an agent needs to invoke this correctly 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%, so the baseline is 3, but the description contributes an extra constraint the schema cannot express with required:[] — that at least one of 'numero'/'objeto' must be supplied. It also restates default/max for 'limite' and clarifies 'numero' is an exact match.
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?
States a specific verb and resource ('Busca licitações do Senado') and enumerates the two supported lookup modes (exact 'numero' or 'objeto' text), which lets an agent distinguish it from the many other senado_* list/search tools. It also explicitly routes to the related sibling senado_contratos.
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?
Gives a hard precondition ('Exige ao menos numero ou objeto (sem filtro retorna erro)') and an explicit alternative with its selecting condition ('Para o contrato resultante de uma licitação, use senado_contratos'). Both when-to-use and when-not-to-use are covered.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive, and the description goes well beyond by disclosing a real data caveat: the source never publishes the parliamentarian's UF (always null) and the agent must resolve it via senado_obter_senador. It also explains conditional field population (bloco filled only for bloc leaderships, partido only for party leaderships).
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?
Front-loaded with the purpose, then return shape, then filters, then alternatives — a logical order. It is dense and somewhat long, enumerating many fields that an output schema already carries, but each clause carries actionable information (field semantics, the UF null caveat, routing hints).
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 an output schema, the description supplies everything an agent needs: return structure, conditional field meaning, filtering semantics, a known data-quality trap with its workaround, and sibling routing. Nothing material 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%, so the baseline is 3, but the description adds value the schema lacks: it defines the default when no filters are supplied (all houses) and clarifies the casa abbreviations in context of filtering. It does not add syntax beyond the schema for codigoParlamentar or siglaTipoLideranca.
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?
States a specific verb ("Lista") and resource ("lideranças") and scopes it precisely to Senate, Chamber and National Congress, with examples (líderes, vice-líderes). An agent immediately knows what entity is returned and can distinguish it from sibling 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?
Explicitly enumerates the four filter options (casa, codigoParlamentar, vigente, siglaTipoLideranca), states the default behavior (no filters returns all houses), and routes the agent to alternatives: senado_listar_blocos for bloc composition, senado_obter_bloco/senado_obter_senador for follow-up lookups.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, but the description adds real behavioral context beyond them: the list is HISTORICAL, a filled 'dataDesligamento' means the party left, current composition is entries with null 'dataDesligamento', and the same party may appear repeatedly across distinct adhesion periods. It even warns that without this filter a party looks like it belongs to two blocos at once — a genuine misinterpretation trap.
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?
Front-loaded with purpose, then return shape, then the caveat, then routing — a sensible order. Slightly redundant to enumerate '{ count, blocos }' and all block fields when an output schema already exists, which is the only thing keeping this from a 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?
For a no-parameter, read-only listing tool with full annotation coverage and an output schema, the description supplies everything left over: the historical-composition gotcha and the follow-up tools. Nothing needed to invoke or correctly interpret it 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 tool takes zero parameters (empty object schema, additionalProperties false), so the baseline is 4. There is no parameter meaning to add; the description instead spends its budget on response semantics, which is the right trade-off.
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?
Names a specific verb+resource ('Lista todos os blocos parlamentares do Senado e seus partidos membros') and immediately distinguishes itself from senado_obter_bloco (single-block detail) and senado_liderancas (leadership). The response envelope '{ count, blocos }' with the field list makes the 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?
Explicit routing: use this to discover a bloco's 'codigo' and then call senado_obter_bloco for detail, and use senado_liderancas for leadership data. This is exactly the when-to-use/when-to-use-something-else guidance an agent needs.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive). The description adds genuinely useful non-obvious behavior: the endpoint only returns active commissions, so ativa=false yields an empty list. That quirk is not derivable from annotations and prevents a wasted call.
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 tight sentences, front-loaded with purpose then caveat then routing. No filler; each sentence carries distinct 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?
Complete for a two-param list tool: purpose, filter semantics, the empty-list edge case, and sibling routing are all present. The return-shape sentence partially duplicates the existing output schema, a minor 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?
Schema coverage is 100%, so baseline is 3, but the description earns extra credit by explaining the enum values and the counterintuitive ativa=false behavior. It adds meaning beyond the terse 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?
States a specific verb (Lista) and resource (comissões/colegiados ativas do Senado) with explicit scope, and distinguishes itself from the sibling senado_obter_comissao. An agent can tell exactly what this returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: "Use para descobrir a `sigla` exigida por `senado_obter_comissao` e `senado_reunioes_comissao`." It names the downstream alternatives and the condition that selects this tool, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered; the description adds real behavioral context beyond that: default `emExercicio=true`, that `uf`/`partido` are filtered locally rather than server-side, that `nome` matching is partial and accent/case-insensitive, and the official provenance endpoint. It does not discuss pagination or result limits, so not a full 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?
Front-loaded with trigger phrases and filter guidance in dense sentences; nearly every clause adds information. Slightly long and run-on, and restating the return shape is partly redundant given the output schema, which keeps it off 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?
With zero required params, a fully documented schema, an output schema, and rich annotations, the description supplies everything else an agent needs: trigger contexts, filter semantics, default behavior, and sibling routing. Nothing material is missing 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 already 100%, so the baseline is 3; the description earns above baseline by explaining the match semantics of `nome` (partial, accent-stripped) and the local-filtering behavior of `uf`/`partido`, plus the `emExercicio` vs `legislatura` tradeoff for choosing the result set.
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?
States a specific verb and resource (list senators in office or a given legislature) and explicitly names the sibling it is not for ('Para senadores fora de exercício veja senado_senadores_afastados'). An agent can distinguish it from senado_obter_senador and senado_senadores_afastados without inspecting schemas.
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?
Opens with concrete user phrasings that should trigger it, then prescribes when each optional filter matters ('use `nome` quando você só tem o nome e precisa do `codigo`') and routes onward to `senado_obter_senador`/`senado_votacoes_senador` for follow-up. Both when-to-use and alternatives are stated.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds a return-shape summary, but that information is also available in the output schema, and no additional behavioral context such as auth needs, rate limits, or pagination is provided.
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 efficient sentences with no filler: purpose first, then parameter behavior, then return shape, then the sibling alternative. Every sentence contributes to selecting or invoking the tool correctly.
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 read-only tool with one optional parameter, 100% schema coverage, rich annotations, and an output schema, the description covers purpose, parameter semantics, return shape, and the nearest sibling alternative. Nothing needed to call it correctly 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%, so the single parameter is already documented in the schema, including its enum values and default. The description restates the same choices and expands 'SF'/'CN' to 'Senado Federal'/'Congresso Nacional', adding only marginal meaning beyond the structured field.
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?
States a specific verb and resource ('Lista os membros da Mesa Diretora') and clarifies the exact subset with parenthetical roles. It also names a sibling tool for a related but different need, letting an agent distinguish this from senado_liderancas without opening either schema.
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?
Explains how the `casa` parameter selects between the Senate and Congress Mesa, and explicitly routes party-leadership queries to senado_liderancas. It does not give broader when-not-to-use guidance, but the alternative for the closest adjacent need is clear.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations: it discloses the empty-result contract (unknown id or no transcript returns totalBlocos 0 with an `aviso`), the coverage/timing characteristics of each session type, truncation behavior (`aviso` signals a cut, 20-block cap in texto mode) and the cross-parameter rule that `sequenciaFim` only acts in modo=texto.
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?
Dense but front-loaded: identity, return shape, coverage caveats, then mode/pagination semantics, then sourcing and the sibling hand-off. It is long for one paragraph, and some coverage detail (e.g. the several session-type enumerations) could be trimmed, but every sentence carries operative 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?
For a 7-parameter tool with an output schema, annotations and a large sibling set, the description covers sourcing of the id, mode semantics, pagination, truncation signaling, empty results and the media alternative — nothing an agent needs to invoke it correctly 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% and the schema already documents each parameter, but the description adds meaning the schema does not: how `modo` reshapes the whole payload, that pagination in resumo mode runs through `sequenciaInicio`, and that `orador` matches partial names in the block text. These cross-parameter interactions are genuinely additive rather than restated.
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?
States a specific verb+resource: the official transcription (notas taquigráficas) of a plenary session or committee meeting, returned in sequential blocks. It explicitly distinguishes itself from the closest sibling, senado_videos_taquigrafia, which covers media rather than text transcripts.
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?
Gives explicit prerequisites (obtain the `id` via senado_agenda_plenario/senado_resultado_plenario for sessions or senado_reuniao_comissao for meetings) and an explicit exclusion (for video/audio use senado_videos_taquigrafia, not this). It also states coverage limits — joint Congress sessions, cancelled/non-held sessions and some solemn sessions have no notes.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, non-destructive and openWorld, so the safety profile is free. The description still adds real behavioral context beyond them: the exact error condition for a nonexistent code and the semantic rule that `partidos` is a HISTORICAL composition where a non-null `dataDesligamento` means the party has left.
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, front-loaded with the purpose and ending with the prerequisite and error behavior. The enumeration of return fields partially duplicates the output schema, which is the only slightly wasteful element.
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 present, the description need not restate return fields, yet it still supplies the interpretive nuance the schema cannot (null dataExtincao = active block, historical vs current party composition) plus the prerequisite and error path. Nothing needed to call it correctly 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?
Only one parameter with 100% schema coverage, so the baseline is 3. The description adds value above the schema by telling the agent how to source the value ('obtenha o parâmetro codigo primeiro via senado_listar_blocos'), which the schema cannot express.
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?
States a specific verb ('Obtém detalhes') plus resource ('bloco parlamentar') and the lookup key ('pelo seu código'). It is immediately distinguishable from the sibling senado_listar_blocos, which enumerates rather than 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?
Explicitly routes the agent: obtain `codigo` first via `senado_listar_blocos`, and warns that an unknown code returns an error. It names the prerequisite sibling tool but does not spell out the inverse exclusion (e.g. 'do not use this to enumerate blocks'), so it falls just short of a full when/when-not statement.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description adds real behavior: `finalidade` is only populated for temporary colegiados and comes back null with an `aviso` for permanent commissions, and sigla is internally resolved to a numeric code. That edge-case disclosure goes meaningfully 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?
Front-loaded with the verb and primary resource, then branches cleanly into the two sections. The field-by-field enumeration is dense and somewhat long, but each clause carries routing or edge-case information rather than 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?
An output schema exists so return values need not be spelled out, yet the description still explains the shape and the null-`finalidade` caveat. Combined with the sigla-discovery pointer, an agent has enough to call the tool correctly, though it omits explicit pagination/error notes.
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, but the description enriches both parameters: it enumerates the fields returned under `resumo` vs `membros` and annotates subfields (presidente/vice with nome/codigo/bancada, tipoVaga titular/suplente). This is well above a bare schema restatement.
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?
States a specific verb and resource ('Obtém dados de uma comissão pela `sigla`') and immediately scopes the two modes via `secao`. It is clearly distinguishable from `senado_listar_comissoes`, which it explicitly frames as the discovery counterpart.
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 routes the agent to `senado_listar_comissoes` when the sigla is unknown, and the `secao` values indicate which view to request. It stops short of stating when this detail tool is preferable to other committee-related siblings (e.g. agenda/voting tools), so it is clear context rather than full when/when-not guidance.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the 'somente leitura, sem efeitos colaterais' line is largely redundant. The description does add real value beyond annotations: a live query against the official open-data base, null semantics for absent fields, and an explicit error contract ('Norma não encontrada' rather than an empty object).
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?
Front-loaded with purpose, then behavior/return contract, then sibling routing — a logical order where each sentence earns its place. It runs slightly long, with some overlap between the return-field enumeration and the output schema plus a repeated warning about codigo vs. numero.
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?
An output schema exists and annotations cover the safety profile, yet the description still supplies the error case, null handling, and upstream dependency on the search tool. Nothing an agent needs to invoke this correctly 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% and the schema's own codigo description already explains the internal-ID vs. law-number distinction, which the description merely restates. It adds only that the value should be sourced from senado_buscar_legislacao, so the baseline of 3 applies.
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?
States a specific verb and resource ('Obtém o detalhe de uma norma federal já promulgada pelo seu codigo interno') and explicitly distinguishes itself from senado_buscar_legislacao, which it names as the lookup tool. An agent can tell the two apart without opening either schema.
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 routing: get the codigo first via senado_buscar_legislacao, and use that tool for locating norms by tipo/numero/ano, while 'esta serve só para o detalhe de uma norma já identificada.' The when-to-use and the alternative are both stated.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/openWorld, yet the description adds substantive behavior: ordering (cronológico, most-recent-first), truncation semantics (`count`/`total`, keeps the most recent, emits an `aviso`) and per-section default limits. These are the operational traits an agent needs and they are not derivable from 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?
One dense paragraph, front-loaded with the primary purpose and the source of the ID. Every clause maps to a distinct behavior or return shape, though the wall-of-backticks format is heavy to parse.
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 fully characterizes each section's payload and the truncation contract, and routes the agent to the search tool for the required ID. Nothing needed to invoke it correctly 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% so the baseline is 3, but the description adds per-section meaning for `secao` (what each mode returns) and the different default `limite` values per mode plus the truncation notice, going meaningfully beyond the schema strings.
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?
States a specific verb (obter/detalhar) and resource (matéria legislativa) and immediately distinguishes itself from the search sibling by noting that `codigoMateria` comes from `senado_buscar_materias`. The three `secao` modes are enumerated, so an agent knows exactly what this retrieval tool returns.
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?
Gives a clear prerequisite/workflow: obtain `codigoMateria` via `senado_buscar_materias`, then call this to detail it. It explains which `secao` to pick for which need (situação/relator, histórico, documentos). It does not state explicit when-not-to-use cases, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered by structured data. The description's added behavioral value is limited to enumerating returned fields, which overlaps the existing output schema rather than disclosing new traits like auth needs or rate limits. Adequate but not additive.
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?
Front-loaded with the purpose and followed by an efficient routing sentence. The long enumeration of ~15 return fields is somewhat redundant given an output schema exists, but it is structured and the final clause earns its place by preventing misuse of a sibling tool.
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-param read tool with full schema coverage and an output schema, the description covers the essential precondition and the sibling boundary, which is what an agent needs to invoke it correctly. The return-field list is redundant with the output schema but not harmful.
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 param and the schema already documents 'ID do processo legislativo'. The description adds the precondition that idProcesso must be obtained from a search tool first, which is useful context, but no format or value semantics beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Obtém detalhes completos') plus resource ('processo legislativo específico pelo seu id') and it explicitly names the sibling it is NOT for emendas/relatorias/prazos. An agent can distinguish this from senado_processo_detalhe without opening either schema.
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?
States the prerequisite workflow explicitly ('Obtenha o idProcesso antes via senado_search_processos ou senado_buscar_materias') and routes to the correct alternative with its discriminating parameter ('para emendas, relatorias ou prazos use senado_processo_detalhe (parâmetro secao)'). When-to-use, how-to-obtain-the-id, and the alternative are all covered.
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, emExercicio e a lista mandatos (legislatura, uf, participacao, dataInicio, dataFim). emExercicio é derivado dos exercícios do mandato (aberto = em exercício) e vem null — nunca afirmado — quando os mandatos não puderam ser lidos. Código inexistente retorna erro ("Senador com código N não encontrado"), nunca um registro vazio. 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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/non-destructive annotations, the description discloses two important edge behaviors: emExercicio is derived and returns null—never affirmatively stated—when mandate data cannot be read, and a nonexistent code returns an explicit error rather than an empty record. These are exactly the behaviors an agent needs to interpret responses correctly.
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 purpose is front-loaded and each subsequent sentence adds nontrivial information, but the field-by-field return enumeration partly duplicates what an output schema would describe. Still, it is compact and uses code formatting effectively; nothing is wordy.
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 lookup with one required parameter, the description covers how to obtain the parameter, the returned object shape, tricky null behavior, error semantics, and the relevant alternative tool. An agent has everything it needs to select and invoke the tool correctly without opening the 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 documents codigoSenador at 100%, so the baseline is 3. The description adds value by telling the agent where to get the value (senado_listar_senadores with nome filter) and what happens for an unknown code. It does not add format or type details, but for a single parameter this is more than sufficient.
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 biográfico de um senador específico') and clarifies scope by naming the sibling tool senado_senador_historico for other biographical/historical dimensions. This makes the tool distinguishable from the large sibling set.
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 how to obtain the required codigoSenador via senado_listar_senadores and when to use senado_senador_historico instead (for filiações, profissões, licenças, comissões, cargos). This is direct when/when-not guidance rather than implied.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond that: it discloses the returned vote fields, the multi-votação response shape, and the critical namespace-collision warning. It does not discuss auth or rate limits, but with annotations present the bar is lower.
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?
It is front-loaded with the tool's purpose and then the critical constraints, so the important warning is not buried. However, it spends several clauses enumerating return fields even though an output schema exists, which slightly dilutes conciseness.
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 idempotent read endpoint with an output schema, the description supplies exactly the missing context: the prerequisite search tool, the accepted plenary code space, and the invalid committee numbering space. Return values are covered by the output schema, so the description is complete enough 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% and the schema already documents the single parameter as the votação code and plenary session code. The description reinforces that alias and, more importantly, tells the agent where to obtain the value and which code space is invalid, adding operational meaning 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?
States a specific verb and resource ('Obtém detalhes de uma votação de plenário') and names the exact parameter. It also distinguishes itself from the sibling tool senado_votacao_comissao by explicitly limiting valid codes to the plenary space.
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 an explicit prerequisite ('Obtenha o codigoSessao via senado_search_votacoes antes de chamar') and a clear exclusion: comissão voting codes are not valid here. The alternative path for committee votes is named, so the agent can route correctly.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds non-obvious data behavior: the base spans multiple years so `ano` filtering is recommended, and that the ofício's date differs from the budget year of the emenda. It stops short of describing rate limits or pagination 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?
Front-loads the resource and its two modes before descending into per-mode return shapes, filtering and pagination guidance. It is dense and long, but every clause conveys operational detail (field names, mode semantics, year caveat) rather than filler; the single unbroken paragraph is the main structural weakness.
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 (so return values need not be described), the description covers mode semantics, the ano caveat, pagination, drill-down behavior and sibling routing. For a two-mode, five-parameter tool this leaves nothing an agent needs in order to call 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?
Schema description coverage is 100%, so the baseline is 3, but the description adds rationale the schema lacks: why `ano` should be set ('a base cobre vários anos') and what `incluirEmendas: true` actually surfaces (favorecido, CNPJ, órgão, nota de empenho). It also clarifies that `limite`/`pagina` only govern the oficios mode, going marginally beyond the schema text.
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?
States a specific resource (emendas parlamentares ao orçamento da União) with two explicitly differentiated modes: emendas (proposição) and oficios (execução/indicação de destino). It names the sibling it is not ('Para a execução do orçamento interno do próprio Senado... use senado_execucao_orcamentaria'), so an agent can separate it from senado_execucao_orcamentaria without opening either schema.
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?
Explains which mode to use (emendas = proposta, oficios = documento de execução posterior à proposição), recommends filtering by `ano` because 'a base cobre vários anos', and points to the correct alternative tool for internal Senate budget execution. When-to-use, mode selection and the alternative are all explicit.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety bar is low. The description goes further by describing the return envelope and its fields, adding useful behavioral context beyond the annotations, though it omits pagination/rate-limit 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?
Purpose is front-loaded and the sentences are dense with useful content. It is a bit long because it enumerates return fields, some of which the output schema already covers, but nothing is truly wasted.
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, explaining return values is optional, yet the description does so anyway, which is mildly redundant but harmless. Filter semantics and the sibling escape hatch are covered, leaving it complete for an agent to call 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%, so the baseline is 3. The description adds the relational semantic that the caller supplies either a single day OR a start/end period, a constraint not obvious from the schema's three independent optional fields.
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?
States a specific verb+resource: how each party leadership oriented its vote in plenary votes, with tallies. It explicitly differentiates from the sibling `senado_resultado_plenario`, so an agent can distinguish it without opening either schema.
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?
Gives clear operating context ('Informe `data` (um dia) ou o período `dataInicio`/`dataFim`') and routes to the alternative tool for session results. It does not state when-not to use it versus other vote-related siblings (e.g. `senado_obter_votacao`, `senado_search_votacoes`), so it stops short of a perfect 5.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety (readOnlyHint, idempotentHint, destructiveHint, openWorldHint), so the bar is lower. The description still adds real behavioral context beyond what annotations provide: it discloses the return envelope `{ tabela, count, total, aviso?, registros[] }`, the default and maximum limit (100/2000), empty-list behavior when a table has no records, and that aggregated vs. nominal records depend on the table. It does not detail pagination beyond `limite` or the meaning of `aviso`, minor gaps.
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?
Front-loaded with the core purpose, then efficiently organized into verb+resource, enum enumeration, return shape, and sibling routing. It is fairly dense with three clauses packed per sentence in places, but every sentence carries information an agent needs. Slight density costs a point versus a crisper version.
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 3 parameters, an enum, an output schema, and rich annotations, the description covers purpose, enum semantics, return shape, limit behavior, filter behavior, and sibling routing. It is essentially complete; the only omissions are the semantics of the `aviso` field and explicit pagination guidance, both minor against an existing 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?
Schema description coverage is 100%, so baseline is 3. The description adds value beyond the schema: it explains what each `tabela` enum actually returns (aggregated quantitative vs. nominal list, with per-value examples), which is far richer than the schema's one-line enum description. It also restates `limite` behavior (default 100, max 2000) and clarifies `filtro` matches any field of the record — a small but genuine addition to the schema's example 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 states exactly what the tool does — returns Senate personnel tables according to the `tabela` parameter — and explicitly enumerates all eight enum values with parenthetical explanations (e.g., `pessoal` = workforce by class/education). It also names the sibling `senado_servidores` for nominal staff records, clearly distinguishing this tool from that alternative.
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 routes the agent: use this tool for personnel tables driven by the `tabela` parameter, and use `senado_servidores` for the nominal register of permanent/commissioned servers. The enumerated `tabela` values tell the agent which value to pick for each data need, so both when-to-use and the alternative are given.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the bar is lower. The description adds real behavioral context beyond that: the return envelope `{ secao, count, total, aviso?, itens }`, the default cap of 100 with a maximum of 500, the requirement of at least one filter, and the caveat that `prazos` returns raw API records.
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 section-by-section breakdown is front-loaded and every clause carries operational information, but the exhaustive enumeration of output field names (autoria, colegiado, decisoes, motivoEncerramento, etc.) is arguably redundant given an output schema exists, adding length without new decision value.
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 10-parameter, multi-mode tool with an output schema, the description covers mode selection, applicable filters, date formats, pagination limits, return envelope, prerequisite lookups, and concrete call examples. An agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is already 100%, the description adds cross-parameter meaning the schema cannot express: which filters apply to which section (`codigoParlamentarAutor` only for emendas; `codigoParlamentar`/`codigoColegiado`/`dataReferencia` for relatorias), the accepted date formats, and the shared `idProcesso`/`codigoMateria`/period filters. This is genuine value beyond the per-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 states a specific verb (detalha) over a specific resource (aspectos de processos legislativos) and, crucially, explains that the operation is a sectioned lookup controlled by `secao`, spelling out what each of the three modes returns. An agent can tell this apart from a plain process fetch without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It routes the agent explicitly: get `idProcesso` via `senado_search_processos` and prazo types via `senado_tabelas_processo`, and mandates at least one filter. It does not, however, distinguish this tool from the sibling `senado_obter_processo`, which is the most likely point of confusion for an agent choosing between them.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: statistics scan the entire folha, top/bottom are identified by `nome`, `idInternoFolha` is only for disambiguating homônimos, and `agruparPor` forces non-consolidated data. It does not cover performance/rate considerations, but the disclosure is substantial.
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?
Front-loaded with purpose and mode definitions, and nearly every clause carries new information (examples, defaults, interactions). The single dense paragraph with heavy backtick/parenthetical nesting makes it harder to scan than it could be, costing it the top 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 11 parameters, three modes, and an output schema that handles return shapes, the description covers the remaining gaps: which mode to pick, why statistics differ, defaults, and filter ordering ('Filtros nome/tipoFolha aplicam antes de tudo'). Nothing an agent needs to call it correctly 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%, so the baseline is 3, but the description adds meaning the schema does not: defaults (top=10, limite=50, consolidarPorServidor=true), the interaction where `agruparPor` forces `consolidarPorServidor=false`, and that `campo` selects the analyzed verba. This goes beyond restating the schema fields.
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?
States a specific resource (remunerações dos servidores do Senado) with a reference year/month and explicitly separates the aggregation modes (estatisticas vs resumo/detalhe). It also names the sibling `senado_servidores` as the tool for the cadastro, so an agent can distinguish it from related tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly prescribes when to set `estatisticas=true` (maior/menor/média/mediana/ranking) with concrete example questions, and warns that resumo/detalhe 'só vê uma fatia e não acha o extremo real'. It also routes the agent to `senado_servidores` for the registry case, giving 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_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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/safe, and the description goes well beyond them: it discloses a known upstream limitation where the endpoint returns empty even for active CPIs, and that such responses carry count 0 plus an 'aviso' field. This is high-value behavioral context that cannot be inferred from 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?
Front-loaded with purpose, then pagination, then routing, then the caveat — a logical order. It is somewhat long and partially restates the return shape that the output schema already covers, which is the only reason it is not a 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?
For a two-parameter paginated list tool with an output schema, the description covers everything an agent needs: how to get the sigla, how pagination terminates, and how to interpret the misleading empty-result case. No material gap remains.
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, but the description adds meaning the schema lacks: pagina is a 0-based index whose semantics are defined by the upstream, and siglaCpi values must be discovered via a sibling tool. It stops short of adding format/syntax details beyond the schema example.
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?
States a specific verb+resource ('Lista requerimentos de uma CPI') with scope ('em atividade') and keyed identifier ('pela siglaCpi'). It distinguishes itself from siblings by routing sigla discovery to senado_listar_comissoes, so an agent can place it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use: call it with a sigla obtained from senado_listar_comissoes with tipo=cpi, paginate with pagina, and treat count 0 as end-of-pages. It also gives an explicit when-not-to-conclude rule (empty list ≠ CPI has no requerimentos), which is exactly the guidance an agent needs.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds real value beyond them: no pagination (all sessions returned), null semantics for non-deliberated items, and the empty-result behavior (count 0, sessoes empty). It stops short of auth/rate-limit notes, 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?
Front-loaded with the purpose before the return shape, and every sentence carries substantive information (return fields, null behavior, empty case, enum meanings, alternatives). Dense but not padded, though the long single paragraph is slightly heavy.
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 fully characterizes the return shape and edge cases (null resultado/parecer, count=0 empty result), and covers both parameters and sibling alternatives. Nothing an agent needs to call it correctly 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% — both parameters (data pattern YYYYMMDD, escopo enum) are fully documented in the schema. The description restates escopo meanings (sf/cn/mes) and the data format but adds no syntax beyond what the schema already provides, so baseline 3 applies.
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?
States a specific verb and resource (plenary session results for a date), and explicitly names sibling tools it is not (senado_agenda_plenario for prior agenda, senado_orientacao_bancada for bench orientation). An agent can distinguish it from siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: prior agenda → senado_agenda_plenario, bench orientation → senado_orientacao_bancada. It also clarifies that escopo=mes is a monthly summary, giving clear when-to-use conditions for each mode.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/idempotent/non-destructive profile, yet the description adds substantial behavior: the result is the raw unwrapped API object, no numeric sim/não score is available here (nominal detail lives in the PDF), an empty object is returned for unvoted vetos, and an error occurs for a nonexistent codigo. This is exactly the edge-case disclosure 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?
Well front-loaded: it opens with the action, then the return shape, then the edge cases, then the tipo semantics, then the sibling redirect. Some return-shape detail overlaps with the existing output schema, keeping it just short of fully wasteful-free, but each sentence still carries weight.
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 2-parameter read tool with an output schema, the definition is complete: it explains the return semantics, the three tipo modes, and the failure modes. No ambiguity remains 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%, so the enum and the codigo definition are already documented, giving a baseline of 3. The description goes further by clarifying the drei-value interplay ('as três chaves apontam para o mesmo veto') and restating what codigo means under each tipo, adding real interpretive value.
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?
States a specific verb+resource ('Obtém o resultado da apreciação de um veto presidencial') and explicitly distinguishes itself from the sibling senado_vetos, which only lists vetos. An agent can tell the two apart without opening either schema.
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?
Names the alternative explicitly ('Para listar vetos use senado_vetos'), tells the agent where to obtain the required codigo ('Obtenha o código via senado_vetos'), and documents the boundary conditions (empty object when not yet voted, error when codigo does not exist). Full when-to-use and when-not-to-use routing.
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. Aceita DOIS caminhos: o codigoReuniao direto, ou sigla da comissão mais data (YYYYMMDD) — neste segundo caso a ferramenta resolve o código sozinha, e devolve as candidatas quando o dia tem mais de uma reunião. 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). Sem código à mão, prefira sigla + data; o codigoReuniao também sai de senado_agenda_comissoes ou senado_reunioes_comissao.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Data da reunião (YYYYMMDD) — usada com `sigla`; sem ela, os últimos 14 dias | |
| sigla | No | Sigla da comissão (ex.: CAE) — alternativa ao código | |
| codigoReuniao | No | Código da reunião (campo 'codigo' na agenda). Sem ele, informe sigla e data. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent safety, but the description adds substantive behavior: multi-meeting days return candidate lists, and the API does not publish attendance lists, with three concrete reconstruction strategies (votos nominais, notas taquigráficas, urlAta). This is real operational context beyond structured fields.
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?
Front-loaded with purpose, then paths, then return shape, then caveats. The long enumeration of return fields is somewhat redundant given a formal output schema exists, but the overall density is high and little is 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?
Covers lookup paths, resolution behavior, absence of attendance data, and cross-tool workarounds. With the output schema handling return structure and annotations handling safety, nothing an agent needs to invoke this correctly 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%, so the baseline is 3, but the description adds the interaction logic the schema only hints at: sigla+data triggers automatic code resolution, and the fallback window when data is used alone. It goes beyond field-level 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?
States a specific verb+resource ('Detalha uma reunião de comissão'), immediately distinguishing it from list-oriented siblings like senado_reunioes_comissao and senado_agenda_comissoes. An agent can tell this is a single-record detail fetch without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes two accepted lookup paths and states a preference ('Sem código à mão, prefira sigla + data'). It also names where the codigoReuniao comes from (senado_agenda_comissoes, senado_reunioes_comissao), routing the agent between siblings.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial behavioral context on top: the default 14-day window when dates are omitted, the fact that the upstream returns all committees and the sigla filter is applied locally, the resulting payload-size error risk, and internal per-year splitting. That is exactly the operational detail 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?
Purpose and scoping come first, then the payload-limit warning, then the return shape and cross-tool routing — well front-loaded with no filler. It is a dense single paragraph, so a reader must parse several clauses to extract the window-size rule, but every sentence carries 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?
Covers the default window, the local-filter pitfall, the error mode and mitigation, cross-year handling, and cross-tool discovery/routing. With an output schema present it did not need to enumerate return fields, yet doing so costs nothing and reinforces the codigo handoff to senado_reuniao_comissao.
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 all three parameters (baseline 3). The description adds real meaning beyond it: the YYYYMMDD format reminder, the omitted-date default of the last 14 days, and the crucial note that sigla filtering happens client-side rather than upstream.
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?
States a specific verb and resource ('Lista reuniões de uma comissão') scoped by sigla and a date range, and explicitly names the two sibling tools it relates to (senado_listar_comissoes for the sigla, senado_reuniao_comissao for details). An agent can place it among the ~60 siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use routing: discover the sigla via senado_listar_comissoes and feed the returned codigo into senado_reuniao_comissao for agenda details. It also states a when-to-split rule (windows ≤2 weeks) and what to do for longer periods, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, open-world; the description adds the mandatory-filter constraint, the 200 cap with a truncation 'aviso', and the compacted autoria behavior. These are meaningful behaviors not visible in annotations or schema. It does not explain the weekday/format handling beyond dates, but overall it adds real value.
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?
Front-loads the core purpose and constraint well, but the middle sentence is a dense enumeration of every return field, which is redundant given an output schema exists. Format guidance and example are useful but the field list bloats the description.
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 the mandatory-filter rule, pagination truncation, date formats, and sibling routing – enough for an agent to call correctly. An output schema exists so return-value explanations aren't required; the list of returned fields is a minor completeness trade-off rather than a gap.
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 already 100%, so baseline is 3. The description adds the required-at-least-one-filter rule (a semantic constraint no single parameter documents), the 20 default / 200 max for limite, the date format options (YYYYMMDD or ISO), and a worked example. That exceeds 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?
States a specific verb (Busca) and resource (processos legislativos) and explicitly scopes to the v3 /processo endpoint with complementary parameters to senado_buscar_materias. An agent can distinguish it from the sibling search tool without opening either schema.
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 the mandatory condition (at least one filter among sigla, número, ano, autor, or período), names the sibling it complements, and routes to senado_obter_processo for details. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds real behavior beyond that: result ordering (most recent first), the absence of nominal votes, and the exact returned fields. It stops short of mentioning pagination or result-size limits if any 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?
One dense paragraph, front-loaded with purpose then temporal modes then filters then return shape. Every sentence carries information, though the run-on structure with many inline backticked field names is slightly heavy for a single block.
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 10-parameter, all-optional filter tool with a full output schema and rich annotations, the description covers purpose, argument precedence, return fields, and the drill-down path. Nothing an agent needs to select and call this correctly 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%, so the baseline is 3, but the description genuinely adds meaning: the precedence rule that `dias` is ignored when dataInicio/dataFim are supplied (schema only says it in the `dias` doc), the YYYYMMDD format intent, and a grouping of the remaining filters by entity (matéria, parlamentar, voto).
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?
States a specific verb ('Busca e lista') and resource ('votações do plenário') plus the combination-of-optional-criteria behavior, which separates it from senado_votacao_comissao and senado_votacoes_senador. It also names the sibling senado_obter_votacao for drill-down, so an agent can route without opening a schema.
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 frames the two mutually exclusive temporal modes ('informe `dias` ... OU `dataInicio`/`dataFim`'), gives a concrete year-wide example, and states when to switch to senado_obter_votacao for nominal votes. Both the when and the alternative are spelled out.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the read-only, idempotent, non-destructive, open-world profile, so the safety burden is offloaded. The description adds genuinely useful edge behavior: each `tipo` returns `count` 0 and an empty list when there are no records, and it details the response envelope per query.
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?
Front-loaded by `tipo`, with a logical field-by-field breakdown and a trailing alternative pointer plus examples. It is dense but every clause carries information; the only mild redundancy is restating return fields that the output schema already covers.
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 is more than sufficient: it covers all three query modes, filter applicability, empty-result behavior, and routes related spending queries to `senado_ceaps`. Nothing an agent needs to select and invoke this tool 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 already 100% (baseline 3), but the description adds meaning by mapping each enum value to its specific output shape and by clarifying the filter scoping — `uf`/`nome` apply to auxilio-moradia and escritorios-apoio, and `nome` also filters aposentados. This goes beyond the schema on the cross-parameter interactions.
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?
States a specific resource (dados administrativos dos senadores) and enumerates all three `tipo` values with their exact return shapes, so an agent can tell exactly what data comes back without reading the schema. It also distinguishes itself from the sibling `senado_ceaps` by name.
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?
Gives a clear usage rule ('Para gastos de cota parlamentar use senado_ceaps') and explains which filters apply per `tipo`, plus concrete call examples. It lacks explicit guidance on when to prefer this over sibling senator tools like `senado_obter_senador` or `senado_listar_senadores`, so it stops short of a full when/when-not map.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), yet the description adds substantial non-obvious context: it is the raw upstream list with no legislature filtering, may include historical/deceased records and inconsistencies, and lacks the titular↔suplente link. These caveats go well beyond what the annotations disclose.
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?
Front-loads purpose, then return shape, then caveats, then routing alternatives. It is dense but every sentence carries functional value (return fields, caveats, sibling routing), with little waste despite its length.
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, return-value explanation is optional, yet the description adds the shape, field list, and the `emExercicio` (always false) invariant. Combined with the caveats and routing, an agent has everything needed to call and interpret this 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?
Zero parameters, so baseline is 4; the description confirms 'Não requer parâmetros' but adds no further semantic detail beyond what the empty schema already conveys. Nothing more is needed or possible here.
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?
States a specific verb and resource ('Lista os senadores atualmente afastados (fora de exercício)') and explicitly distinguishes the tool from its closest siblings (senado_listar_senadores for in-exercise senators, senado_obter_senador for detail). An agent can identify the resource and its scope without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternatives and the condition selecting each: use `codigo` in `senado_obter_senador` for detail, and `senado_listar_senadores` for senators in exercise plus name search. This gives explicit routing rather than leaving the agent to infer.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, open-world), but the description goes further by disclosing the empty-result edge case (count 0, empty itens) and that item shape varies by `tipo`. It stops short of auth/rate-limit or pagination context, so it is strong but not exhaustive.
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?
Front-loaded with the purpose, then the enum semantics, then return shape, then the sibling pointer, then an example — a logical progression. Some of the per-`tipo` field listing overlaps with the output schema, which is mild redundancy in an otherwise dense single paragraph.
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?
An output schema exists, so return values need not be restated, yet the description supplies the edge case (no records) and the shape-shifting item semantics that the schema alone would not convey. Together with the sibling routing and prerequisite, an agent has everything needed to call 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?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning beyond the schema's terse 'Qual histórico consultar' by mapping each enum value to the fields it returns (e.g. `filiacoes` → partido/nomePartido/datas) and giving a worked example. That is genuine semantic value over the enum 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?
States a specific verb+resource combination (functional history of a senator, parameterized by `tipo`) and enumerates exactly which histories are covered. It also distinguishes itself from the sibling `senado_obter_senador`, so the agent can route correctly without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative and its condition: biographical data and mandates go to `senado_obter_senador`, while this tool serves functional history. It also tells the agent how to source `codigoSenador` (via `senado_listar_senadores`). No inference required.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), yet the description still adds substantive behavior: default and maximum `limite`, truncation signaled via `aviso`, the aggregate-count mode returning a floor `total`, plus `naoClassificados` and `afastadosOuEmTransito` buckets with their caveats.
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?
Front-loaded with the core purpose and every sentence carries information, but the third sentence is a dense run-on packing mode behavior, field names, and answering instructions. It is efficient in content yet heavier than needed for scanning.
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 an output schema existing, the description deliberately summarizes the return shape and the edge-case buckets, which is the extra an agent needs given the dual-mode (filter vs. subordinadasA) behavior. Nothing required to call it correctly 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 already 100%, but the description goes beyond it by explaining the semantic trap that `lotacao` on a parent sigla returns 0 and that `subordinadasA` traverses the organograma down to service level. It also spells out the `situacao` categories in prose and the response field set.
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?
Opens with a specific verb and resource ('Lista servidores do Senado') and immediately scopes it by `situacao` with named filters. It also distinguishes itself from siblings by naming senado_estrutura_organizacional and senado_remuneracoes_servidores as the tools for those adjacent needs.
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?
Gives explicit routing rules: use `senado_estrutura_organizacional` for the org chart and `senado_remuneracoes_servidores` for pay. It also tells the agent exactly when to switch from `lotacao` to `subordinadasA` ('quantas pessoas estão sob a Diretoria-Geral') and warns that filtering `lotacao` by the parent sigla returns 0.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, and the description adds real behavioral context beyond them: truncation surfaces an `aviso`, default limit 100 / max 500, rows without a value are excluded from statistics, and the analyzed value column is auto-selected per `tipo` with its label returned in `campoAnalisado`. It does not mention permissions, auth, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, but the body is a dense run-on of semicolons, parentheses, and nested conditionals that is hard to scan. It also restates content already present in the schema descriptions for `estatisticas`, `campo`, and `agruparPor`, so not every sentence earns new 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?
With 8 parameters, 1 required, three enums, and an output schema present, the description covers the key constraints an agent needs: required `ano` (>=2010), limit bounds, statistics eligibility, and grouping behavior. The distinctions between similar `tipo` values (movimentacoes vs transacoes) and the exact meaning of each `agruparPor` option are left partly implicit.
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 still adds meaning the schema does not: `agruparPor` groups are ranked by descending sum with groups[0] as largest, `suprido` groups atos-concessao by beneficiary name, `campo` falls back to the type default when inapplicable, and `estatisticas` toggles between row distribution and grouped ranking. This is genuine semantic enrichment rather than restating field docs.
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?
States a specific verb+resource (annual fund-advance data) and enumerates the exact sub-relations available via `tipo` (supridos, atos de concessão, empenhos, movimentações, transações), so an agent can tell what data comes back. It also names the sibling tools (`senado_contratacoes_lista`, `senado_execucao_orcamentaria`) whose administrative codes can be joined, distinguishing its role in the family.
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?
Gives explicit routing rules for aggregates: use `estatisticas=true` for max/min/mean/median/percentiles/ranking, and it states that statistics only apply to `transacoes`, `empenhos`, and `atos-concessao` because the others lack a value column. It also explains when to add `agruparPor`. It stops short of saying when to choose this tool over adjacent budget tools like `senado_ceaps` or `senado_execucao_orcamentaria`, so not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: the return shape, truncation signal (`count < total` means increase `limite`), and the empty-result condition (`count` 0 when `filtro` doesn't match). It omits any note on error handling or the raw API field variability, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then return shape, then usage routing, then examples — a logical order with no filler sentences. It does repeat the enum meanings that already appear in the schema, which is mild redundancy rather than waste.
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?
An output schema exists, yet the description still clarifies the `count`/`total`/truncation semantics that matter for correct interpretation, and it supplies the cross-tool routing. Nothing an agent needs to call and interpret this tool 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%, so the baseline is 3, but the description earns extra by explaining the domain meanings of `tabela` and the interaction between `filtro`, `limite`, `count`, and `total` in a way the schema does not. Examples like `{ tabela: 'tipos-sessao', filtro: 'deliberativa' }` clarify intended usage further.
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?
States a specific verb and resource ('Consulta tabelas de referência do plenário'), names the three enumerable domains with their meanings, and explicitly distinguishes itself from the sibling 'senado_tabelas_processo'. An agent can identify exactly what it does and does not cover without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: 'Use para interpretar campos como `tipo` de `senado_agenda_plenario`/`senado_resultado_plenario`' and 'Para tabelas do processo legislativo ... use `senado_tabelas_processo`'. It gives both the when-to-use and the concrete alternative with the condition that selects it.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the bar is lower. The description still adds genuine operational context: truncation signalling via `count < total`, `count` 0 on a non-matching filter, and the 1000-row ceiling — all useful for interpreting 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?
Well front-loaded: purpose first, then domain taxonomy, then return/truncation semantics, then routing and examples. It is dense and efficient, though re-listing all twelve enum values duplicates the schema and costs a line of unnecessary length.
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 present, the description need not explain returns — yet it does so anyway via `{ tabela, count, total, linhas }` and the truncation rule. Combined with domain taxonomy, routing guidance and worked examples, nothing needed to call this correctly 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%, so all three parameters are already documented, including the full enum and the `filtro`/`limite` semantics. The description restates the same entity-vs-type taxonomy the schema's `tabela` description already contains, so it adds little beyond the structured field.
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?
States a specific verb and resource ('Consulta tabelas de referência do processo legislativo para resolver códigos/siglas') and enumerates the exact domains available. It also explicitly distinguishes itself from senado_search_processos, senado_processo_detalhe and senado_tabelas_plenario, so an agent can place it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit sequencing rule ('Use antes de filtrar em senado_search_processos/senado_processo_detalhe') and routes plenary tables to senado_tabelas_plenario. However, it never addresses the near-identical sibling senado_tabelas_referencia, leaving a real misrouting risk among 60+ siblings.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds real value beyond that: it discloses that `tipos-materia` is a curated in-server catalog (12 common types) rather than the live upstream `processo/siglas` (~184 siglas), and notes every response carries a `tabela` field. This provenance caveat is the kind of context annotations cannot 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?
Front-loaded with the verb and parameter, then structured as a per-enum-value breakdown that is easy to scan. It is dense with backticks and arrows and fairly long, but nearly every clause carries distinct information, so waste is minimal.
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?
An output schema exists, yet the description still summarizes each return shape and cross-links to the consuming sibling tools, so an agent has everything needed to select the right table and interpret the result. Nothing material is missing for a single-parameter lookup 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% and the enum already lists the valid values, so the baseline is 3. The description goes further by mapping each value to its concrete return shape (e.g. `{ count, totalSenadores, partidos }`, `{ numero, periodo, dataInicio, dataFim }`), adding meaning the schema's flat enum description does not.
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?
States a specific verb (Consulta) and resource (tabelas de referência do Senado) parameterized by `tabela`, then enumerates what each of the six enum values returns. It also distinguishes itself from the nominal-list sibling by explicitly routing to `senado_listar_senadores`, so an agent can tell it apart without opening a schema.
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?
Gives explicit when-to-use guidance: `tipos-materia` should be used to find the correct `sigla` before calling `senado_buscar_materias`/`senado_search_processos`, and `tipos-norma`/`tipos-uso-palavra` are framed as inputs for their respective siblings. It also names the alternative tool for nominal parliamentarian lists, covering both usage and exclusion.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety bar is covered. The description adds genuinely useful operational detail beyond annotations: the full list is downloaded and filtered in the Worker, results are capped by limite, and an 'aviso' appears on truncation.
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?
Front-loaded with purpose, then filters, return shape, execution semantics and the alternative. Four dense sentences with no filler; slightly packed but every clause carries 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 an output schema exists, the description needn't detail return values, yet it confirms the shape and field names. For a read-only filtered-list tool with annotations already covering the safety profile, 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?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: filters are partial-match and accent-insensitive, and it restates the limite default/max plus the truncation warning. These details help the agent craft queries correctly.
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?
States a specific verb and resource ('Lista colaboradores terceirizados do Senado') with the exact filter fields and return shape, and explicitly names the sibling (senado_empresas_contratadas) it should not be confused with. An agent can distinguish it from the many senado_* list tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context (outsourced Senate workers) and routes to senado_empresas_contratadas for the contracting company and its contracts. The conditional routing is explicit, though it does not elaborate other when-not conditions or contrast with the servidores/remuneracoes siblings.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description usefully adds truncation behavior ('limite' controls the cut, 'aviso' indicates truncation) which goes beyond annotations, but does not discuss rate limits or freshness.
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?
Front-loaded with the tool's purpose, then return shape, then parameter control, then the alternative tool. Dense and well-ordered, though the response-shape enumeration is lengthy. No filler sentences.
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 an output schema existing, the description helpfully enumerates the returned fields and semantics (e.g., dataLimiteVotacao as sobrestamento deadline), and covers both filter modes and truncation. An agent has enough to call it correctly; minor gap is no mention of what happens if both ano and status are omitted.
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 all three parameters including the enum meanings for status. The description adds the ano/status exclusivity constraint and the default cut-off, but mostly repeats schema content. 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?
States a specific verb ('Lista') and resource ('vetos presidenciais'), plus scope ('em apreciação pelo Congresso Nacional') and filter dimensions ('por ano ou por status de tramitação'). Distinguishes itself from the sibling senado_resultado_veto by directing voting-result queries there.
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 the mutually exclusive parameters ('Informe `ano` OU `status`') with the valid enum values, and names the alternative tool senado_resultado_veto for the different use case of a specific veto's voting outcome.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations confirm it is a read-only, idempotent, open-world operation, and the description adds substantial extra behavior: the return shape, that sessions without archived media yield count/total 0 plus an `aviso`, that exceeding `limite` emits an `aviso`, and that media coverage is broader than transcripts (joint Congress sessions often have video without transcription). This is real behavioral context beyond the structured fields.
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?
Front-loaded with purpose, then return shape, edge cases, id sourcing, and the alternative. Dense but every sentence carries information; the only mild redundancy is enumerating return fields (`codigo`, `data`, `descricao`, etc.) when an output schema already exists.
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 4-parameter read tool with an output schema and full annotation coverage, the description supplies everything needed: purpose, edge cases (empty media, truncation), id provenance, and the sibling to use for transcripts. Nothing an agent needs to call it correctly 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%, so the baseline is 3, but the description adds meaning the schema does not: it explains the `limite` overflow signal (`aviso`) and ties the `id` semantics to session vs. committee meeting, clarifying the `tipo` dimension. Minor value-add above the already-complete 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?
Starts 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'), and explicitly distinguishes itself from the sibling senado_notas_taquigraficas ('Para a transcrição textual correspondente use senado_notas_taquigraficas, não esta'). An agent can tell it apart from both the notes tool and the session-listing tools without opening schemas.
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?
Names the exact tools that supply the required `id` (`senado_agenda_plenario`/`senado_resultado_plenario` for sessions, `senado_reuniao_comissao` for committee meetings) and names the alternative to use for text transcripts with an explicit exclusion. When-to-use, prerequisite sourcing, and the when-not are all covered.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare it as a read-only/idempotent open-world query; the description adds behavior they cannot express: no pagination, the timeout risk on wide periods with a concrete mitigation (≤3-month windows), and the critical caveat that a committee votação `codigo` lives in a separate numbering space and is NOT valid in `senado_obter_votacao`. That last point prevents a real agent error.
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?
Purpose is front-loaded and every sentence carries operative content, but the paragraph is dense and includes a full return-shape enumeration (`codigo`, `data`, `comissao`...) that duplicates the output schema and could be trimmed.
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 9-parameter, multi-mode tool with timeout hazards and cross-tool ID ambiguity, the description covers all the traps an agent must know: mode-specific required params, period limits, and the invalid-ID pitfall. Nothing needed to invoke it correctly 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%, so the baseline is 3; the description goes further by restating the conditional requirements and adding semantics not in the schema, e.g. that `dataInicio`/`dataFim` are filtered by the meeting date ('filtrado pela data da reunião') and how `comissao` acts as an optional filter under `por=senador`/`por=materia`.
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?
Starts with a specific verb+resource ('Lista votações em comissões') and then enumerates the three distinct query axes (`comissao`, `senador`, `materia`) with what each returns. It explicitly distinguishes itself from the plenary sibling `senado_votos_materia`, so an agent can route without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use conditions per mode (which param each `por` value requires), names the tools to call for lookup prerequisites (`senado_listar_comissoes`, `senado_listar_senadores`), and states when-not ('para votações no plenário use senado_votos_materia'). Alternatives and enabling conditions are fully spelled out.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, and non-destructive behavior. The description adds useful behavioral context beyond them: current-year default period, reverse chronological ordering, and the returned vote fields. It does not cover pagination or rate limits, but annotations carry the 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?
Front-loads the core action and return shape, then adds default/date-parameter rules, then the required identifier and alternative tool. Four dense sentences with no filler; the return detail is somewhat redundant with the output schema but remains orienting.
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 a full schema, rich annotations, and an output schema present, the description still supplies key behavioral semantics: default period, date format, parameter alternatives, and required identifier acquisition. An agent has enough 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?
Schema coverage is 100%, but the description adds semantics not present in the schema: defaulting to the current year, choosing between `ano` and the `dataInicio`/`dataFim` pair, and how to obtain the required `codigoSenador`. This clarifies parameter interaction meaningfully.
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?
States a specific verb ('Lista') and resource ('votações nominais de um senador'), plus what each vote contains. It distinguishes itself from siblings by naming `senado_obter_votacao` for specific vote details and `senado_listar_senadores` for the required senator 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?
Names two concrete alternatives: obtain `codigoSenador` via `senado_listar_senadores`, and use `senado_obter_votacao` for details of a specific vote. It also explains the default period behavior, though it does not explicitly exclude general votação search tools.
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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds the conditional expansion behavior (votes of individual senators only appear when incluirVotos is true, default false), which is useful, but it does not discuss payload size, rate limits, or pagination for a potentially large result.
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?
Front-loaded with the purpose in the first clause, followed by return shape and the optional flag; no filler sentences. The return-shape enumeration is somewhat long and overlaps with the declared output schema, but each clause still carries 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?
With an output schema present, the return-value walkthrough is partly redundant, but the description still supplies the two things structured fields cannot: how to obtain the required codigoMateria and the effect of the optional flag. Nothing critical for a correct invocation 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%, so the baseline is 3, but the description goes beyond the schema's terse 'Incluir votos nominais de cada senador' by spelling out the fields added when the flag is true (nome, partido, uf, voto), helping the agent decide whether to set it. codigoMateria semantics are only restated, not enriched.
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?
States a specific verb and resource: it fetches the votes (votações) of a legislative item identified by codigoMateria. An agent immediately knows what it returns. It does not, however, differentiate itself from near-siblings such as senado_obter_votacao, senado_search_votacoes, or senado_votacao_comissao, so the agent must infer which vote-listing tool to pick.
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 a genuine prerequisite chain: the codigoMateria must be obtained via senado_buscar_materias or senado_obter_materia, which is actionable guidance an agent can follow directly. It stops short of stating when to prefer this tool over the other vote-related siblings or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
67 tool updates
- Changed
senado_agenda_comissoes1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_agenda_plenario1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_autores_atuais1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_buscar_legislacao1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_buscar_materias1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_ceaps1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_contratacao_detalhe1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_contratacoes_lista1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_contratos1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_discurso_texto1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_discursos_plenario1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_discursos_senador1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_distribuicao_materias1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_ecidadania_consultas_analise1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_ecidadania_consultas_votos1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_ecidadania_listar_consultas1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_ecidadania_listar_eventos1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_ecidadania_listar_ideias1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_ecidadania_obter_consulta1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_ecidadania_obter_evento1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_ecidadania_obter_ideia1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_ecidadania_sugerir_tema_enquete1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_empresas_contratadas1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_encontro_plenario1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_estrutura_organizacional1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_execucao_orcamentaria1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_horas_extras1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_licitacoes1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_liderancas1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_listar_blocos1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_listar_comissoes1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_listar_senadores1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_mesa1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_notas_taquigraficas1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_obter_bloco1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_obter_comissao1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_obter_legislacao1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_obter_materia1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_obter_processo1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_obter_senador1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_obter_votacao1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_orcamento_parlamentar1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_orientacao_bancada1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_pessoal_tabelas1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_processo_detalhe1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_remuneracoes_servidores1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_requerimentos_cpi1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_resultado_plenario1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_resultado_veto1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_reuniao_comissao1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_reunioes_comissao1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_search_processos1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_search_votacoes1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_senador_historico1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_senadores_admin1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_senadores_afastados1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_servidores1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_suprimento_fundos1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_tabelas_plenario1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_tabelas_processo1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_tabelas_referencia1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_terceirizados1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_vetos1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_videos_taquigrafia1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_votacao_comissao1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_votacoes_senador1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
senado_votos_materia1 field changed- added
Input schema / additionalPropertiesAdded value: +false
1 tool update
- Changed
senado_reuniao_comissao4 fields changed- changed
Input schema / properties / codigoReuniao / descriptionPrevious value: -"Código da reunião (campo 'codigo' na agenda de comissões)"New value: +"Código da reunião (campo 'codigo' na agenda). Sem ele, informe sigla e data." - added
Input schema / properties / dataAdded value: +{ + "description": "Data da reunião (YYYYMMDD) — usada com `sigla`; sem ela, os últimos 14 dias", + "pattern": "^\\d{8}$", + "type": "string" +} - added
Input schema / properties / siglaAdded value: +{ + "description": "Sigla da comissão (ex.: CAE) — alternativa ao código", + "minLength": 2, + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "codigoReuniao" -]
2 tool updates
- Added
fetch - Added
search
67 tool updates
- Changed
senado_agenda_comissoes2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_agenda_plenario2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_autores_atuais2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_buscar_legislacao2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_buscar_materias2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_ceaps2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_contratacao_detalhe2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_contratacoes_lista2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_contratos2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_discurso_texto2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_discursos_plenario2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_discursos_senador2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_distribuicao_materias2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_ecidadania_consultas_analise2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_ecidadania_consultas_votos2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_ecidadania_listar_consultas2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_ecidadania_listar_eventos2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_ecidadania_listar_ideias2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_ecidadania_obter_consulta2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_ecidadania_obter_evento2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_ecidadania_obter_ideia2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_ecidadania_sugerir_tema_enquete2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_empresas_contratadas2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_encontro_plenario2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_estrutura_organizacional2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_execucao_orcamentaria2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_horas_extras2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_licitacoes2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_liderancas2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_listar_blocos2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_listar_comissoes2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_listar_senadores2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_mesa2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_notas_taquigraficas2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_obter_bloco2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_obter_comissao2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_obter_legislacao2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_obter_materia2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_obter_processo2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_obter_senador2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_obter_votacao2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_orcamento_parlamentar2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_orientacao_bancada2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_pessoal_tabelas2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_processo_detalhe2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_remuneracoes_servidores2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_requerimentos_cpi2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_resultado_plenario2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_resultado_veto2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_reuniao_comissao2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_reunioes_comissao2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_search_processos2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_search_votacoes2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_senador_historico2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_senadores_admin2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_senadores_afastados2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_servidores2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_suprimento_fundos2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_tabelas_plenario2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_tabelas_processo2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_tabelas_referencia2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_terceirizados2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_vetos2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_videos_taquigrafia2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_votacao_comissao2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_votacoes_senador2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
senado_votos_materia2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
1 tool update
- Changed
senado_obter_legislacao1 field changed- changed
Input schema / properties / codigo / descriptionPrevious value: -"Identificador interno da norma (campo `codigo` retornado por senado_buscar_legislacao; ≠ número da lei)"New value: +"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."
1 tool update
- Changed
senado_buscar_legislacao7 fields changed- changed
Input schema / properties / ano / descriptionPrevious value: -"Ano de assinatura/promulgação da norma"New value: +"Ano de assinatura/promulgação da norma, entre 1900 e 2100; ex.: 2021." - changed
Input schema / properties / data / descriptionPrevious value: -"Data exata de assinatura, formato YYYYMMDD"New value: +"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." - added
Input schema / properties / data / patternAdded value: +"^\\d{8}$" - changed
Input schema / properties / numero / descriptionPrevious value: -"Número da norma; combina com tipo e ano como filtro AND"New value: +"Número sequencial da norma (inteiro > 0), ex.: 14133 para a Lei n. 14.133/2021. Combina com `tipo` e `ano` em modo AND." - added
Input schema / properties / numero / exclusiveMinimumAdded value: +0 - removed
Input schema / properties / numero / minimumRemoved value: --9007199254740991 - changed
Input schema / properties / tipo / descriptionPrevious value: -"Sigla oficial da espécie: LEI, DEC (decreto), LCP (lei complementar), EMC (emenda constitucional) etc.; lista completa em senado_tabelas_referencia (tabela=tipos-norma)"New value: +"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."
1 tool update
- Changed
senado_liderancas1 field changed- changed
Input schema / properties / casa / descriptionPrevious value: -"Casa legislativa (SF=Senado, CN=Congresso)"New value: +"Casa legislativa (SF=Senado, CN=Congresso, CD=Câmara dos Deputados)"
Related MCP Connectors
MCP server for French (BOAMP) + EU (TED) public procurement data via TenderAPI.
Brazilian legal stack in one MCP: lawsuits, court publications, case law, tenders, certificates.
An MCP server that provides congressional transcripts
# MCP DadosBR Servidor MCP focado em dados públicos do Brasil. Oferece duas ferramentas simples e…
Related MCP Servers
- AlicenseBqualityFmaintenanceMCP server for Brazilian Federal Senate open data (legislators, bills, votes, committees)3372 npmMIT
- AlicenseAqualityAmaintenanceMCP server for the Brazilian Chamber of Deputies open-data API, enabling search and retrieval of federal legislative bills and their status.151Apache 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.61MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for querying Brazil's public transparency portal, providing read-only access to government spending and public data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.