# Dados Abertos Senado BR MCP (npm · senado-br-mcp)

MCP server for Brazilian Federal Senate open data (legislative, administrative, e-Cidadania).

- Trust score: 68/100 (medium)
- Change this week: +18
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `senado.sidneybissoli.com`: 69/100, [markdown](https://verifymcp.io/servers/sidneybissoli-senado-br-mcp-cloudflare/senado.md), [page](https://verifymcp.io/servers/sidneybissoli-senado-br-mcp-cloudflare/senado)
- npm · `senado-br-mcp`: 68/100 (this document), [markdown](https://verifymcp.io/servers/sidneybissoli-senado-br-mcp-cloudflare/senado-br-mcp.md), [page](https://verifymcp.io/servers/sidneybissoli-senado-br-mcp-cloudflare/senado-br-mcp)

## Channel facts

- Registry: `npm`
- Package: `senado-br-mcp`
- Version: `3.4.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 86/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 25 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 70/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 20070 tokens (~282/item across 71 items; 66 tools + 5 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add sidneybissoli-senado-br-mcp-cloudflare -- npx -y senado-br-mcp
```

### Codex

```bash
codex mcp add sidneybissoli-senado-br-mcp-cloudflare -- npx -y senado-br-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sidneybissoli-senado-br-mcp-cloudflare": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "senado-br-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add sidneybissoli-senado-br-mcp-cloudflare --command npx --arg -y --arg senado-br-mcp
```

### Hermes

```yaml
mcp_servers:
  sidneybissoli-senado-br-mcp-cloudflare:
    command: "npx"
    args: ["-y", "senado-br-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "sidneybissoli-senado-br-mcp-cloudflare": {
      "command": "npx",
      "args": [
        "-y",
        "senado-br-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 68, +4)

- [functional improvement] Stability: unverified → 0.27

### 2026-08-02 (score 64, +40)

- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Schema quality: unverified → good
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] License: unverified → pass
- [functional] Licence: MIT

### 2026-08-01 (score 24, +19)

- [functional improvement] Schema quality: unverified → 100
- [functional improvement] Tool coverage: unverified → 100

### 2026-07-31 (score 5, −45)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-27 (score 50)

First indexed and scored.

## MCP tools (66)

### `senado_tabelas_referencia` (~349 tokens)

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`.

Input parameters:

- `tabela` (string, required): Qual tabela de referência consultar: tipos-materia, partidos, ufs, legislatura-atual, tipos-norma ou tipos-uso-palavra

### `senado_listar_senadores` (~348 tokens)

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`.

Input parameters:

- `emExercicio` (boolean): Filtrar apenas senadores em exercício
- `legislatura` (integer): Número da legislatura (ex: 57 para 2023-2027)
- `nome` (string): Nome ou parte do nome (busca parcial, sem acento)
- `partido` (string): Sigla do partido (ex: PT, PL, MDB); tolera formas curtas como PODE→PODEMOS
- `uf` (string): Sigla do estado (ex: SP, RJ, MG)

### `senado_obter_senador` (~179 tokens)

Obtém o detalhe biográfico de um senador específico. Retorna um objeto com `codigo`, `nome`, `nomeCompleto`, `nomeCivil`, `sexo`, `dataNascimento`, `naturalidade`/`ufNaturalidade`, `partido`, `uf`, `foto`, `email` e a lista `mandatos` (`legislatura`, `uf`, `participacao`, `dataInicio`, `dataFim`). Requer `codigoSenador` — obtenha-o via `senado_listar_senadores` (filtro `nome`). Para filiações, profissões, licenças, comissões ou cargos use `senado_senador_historico` (parâmetro `tipo`).

Input parameters:

- `codigoSenador` (integer, required): Código único do senador no sistema do Senado

### `senado_votacoes_senador` (~197 tokens)

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`.

Input parameters:

- `ano` (integer): Ano das votações
- `codigoSenador` (integer, required): Código único do senador
- `dataFim` (string): Data fim (YYYYMMDD)
- `dataInicio` (string): Data início (YYYYMMDD)

### `senado_senador_historico` (~255 tokens)

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`.

Input parameters:

- `codigoSenador` (integer, required): Código único do senador
- `tipo` (string, required): Qual histórico consultar

### `senado_senadores_afastados` (~115 tokens)

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. Use `codigo` em `senado_obter_senador` para o detalhe; para os senadores em exercício (e busca por nome) use `senado_listar_senadores`.

### `senado_buscar_materias` (~430 tokens)

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`.

Input parameters:

- `ano` (integer): Ano da matéria
- `autorNome` (string): Nome do autor
- `dataFimApresentacao` (string): Data final de apresentação (YYYYMMDD ou YYYY-MM-DD)
- `dataInicioApresentacao` (string): Data inicial de apresentação (YYYYMMDD ou YYYY-MM-DD)
- `limite` (integer): Máximo de resultados (padrão: 100)
- `numero` (integer): Número da matéria
- `ordem` (string): Direção da ordenação quando ordenarPor=dataApresentacao
- `ordenarPor` (string): Ordenação local; padrão dataApresentacao para favorecer pedidos recentes
- `palavraChave` (string): Termo livre buscado nas palavras-chave do processo
- `sigla` (string): Tipo: PEC, PL, PLP, MPV, PDL, PRS, etc.
- `tramitando` (boolean): Apenas em tramitação

### `senado_obter_materia` (~325 tokens)

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`.

Input parameters:

- `codigoMateria` (integer, required): Código único da matéria
- `limite` (integer): Máximo de itens em tramitacao/textos (padrão: 100 tramitacao, 50 textos)
- `secao` (string): detalhe (situação/relator), tramitacao (histórico) ou textos (documentos)

### `senado_obter_votacao` (~225 tokens)

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).

Input parameters:

- `codigoVotacao` (integer, required): Código único da votação (codigoSessao da sessão plenária)

### `senado_votos_materia` (~160 tokens)

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`.

Input parameters:

- `codigoMateria` (integer, required): Código único da matéria
- `incluirVotos` (boolean): Incluir votos nominais de cada senador

### `senado_search_votacoes` (~375 tokens)

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.

Input parameters:

- `ano` (integer): Ano da matéria
- `codigoMateria` (integer): Código da matéria
- `codigoParlamentar` (integer): Código do parlamentar
- `dataFim` (string): Data fim (YYYYMMDD)
- `dataInicio` (string): Data início (YYYYMMDD)
- `dias` (integer): Janela: votações dos últimos N dias (ignorado se dataInicio/dataFim forem informados)
- `idProcesso` (integer): ID do processo legislativo
- `numero` (integer): Número da matéria
- `sigla` (string): Sigla do tipo de matéria
- `siglaVotoParlamentar` (string): Tipo de voto do parlamentar

### `senado_listar_comissoes` (~165 tokens)

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`.

Input parameters:

- `ativa` (boolean): Apenas comissões ativas
- `tipo` (string): Tipo: permanente, temporaria, cpi, mista

### `senado_obter_comissao` (~200 tokens)

Obtém dados de uma comissão pela `sigla`, conforme `secao` (padrão `resumo`): `resumo` → `{ codigo, sigla, nome, finalidade, presidente, vicePresidente, totalMembros, titulares, suplentes }` (presidente/vice com `nome`/`codigo`/`bancada`). `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`.

Input parameters:

- `secao` (string): resumo (mesa/totais) ou membros (composição completa)
- `sigla` (string, required): Sigla da comissão (ex: CCJ, CAE)

### `senado_reunioes_comissao` (~184 tokens)

Lista reuniões de uma comissão (pela `sigla`) num intervalo `dataInicio`/`dataFim` (YYYYMMDD); sem datas, usa os últimos 30 dias. 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.

Input parameters:

- `dataFim` (string): Data fim (YYYYMMDD)
- `dataInicio` (string): Data início (YYYYMMDD)
- `sigla` (string, required): Sigla da comissão

### `senado_agenda_comissoes` (~170 tokens)

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`.

Input parameters:

- `data` (string): Data específica (YYYYMMDD)
- `siglaComissao` (string): Filtrar por comissão específica

### `senado_reuniao_comissao` (~181 tokens)

Detalha uma reunião de comissão pelo `codigoReuniao`. Retorna um objeto com `codigo`, `titulo`, `comissao`, `data`, `hora`, `local`, `situacao`, `realizada`, `secreta`, `presidente`, links `urlPauta`/`urlResultado`/`urlAta` e `partes` (cada parte com `evento` e `itens` apreciados: `identificacao`, `ementa`, `autoria`, `relatoria`, `resultado`, `codigoMateria`). Obtenha o `codigoReuniao` em `senado_agenda_comissoes` ou `senado_reunioes_comissao`.

Input parameters:

- `codigoReuniao` (integer, required): Código da reunião (campo 'codigo' na agenda de comissões)

### `senado_requerimentos_cpi` (~269 tokens)

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.

Input parameters:

- `pagina` (integer): Página da lista (padrão: 0)
- `siglaCpi` (string, required): Sigla da CPI (ex: CPIVD, CPIPED)

### `senado_distribuicao_materias` (~300 tokens)

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`.

Input parameters:

- `codigoParlamentar` (integer): Restringe a um parlamentar — efetivo apenas em tipo=autoria (ignorado em relatoria)
- `siglaComissao` (string, required): Sigla da comissão (ex: CCJ, CAE)
- `tipo` (string): autoria = matérias de autoria por parlamentar (padrão); relatoria = matérias relatadas

### `senado_agenda_plenario` (~206 tokens)

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`.

Input parameters:

- `data` (string): Data específica (YYYYMMDD; padrão: hoje)
- `dataFim` (string): Data fim para período do CN (YYYYMMDD; apenas escopo=cn)
- `escopo` (string): dia = SF+CN no dia; mes = mês inteiro; cn = plenário do Congresso

### `senado_resultado_plenario` (~249 tokens)

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`.

Input parameters:

- `data` (string, required): Data da sessão (YYYYMMDD); para escopo=mes, qualquer dia do mês
- `escopo` (string): sf = Senado no dia; cn = Congresso no dia; mes = resumo do mês

### `senado_orientacao_bancada` (~213 tokens)

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`.

Input parameters:

- `data` (string): Data da sessão (YYYYMMDD)
- `dataFim` (string): Data fim do período (YYYYMMDD)
- `dataInicio` (string): Data início do período (YYYYMMDD)

### `senado_vetos` (~237 tokens)

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`.

Input parameters:

- `ano` (integer): Vetos do ano informado
- `limite` (integer): Máximo de resultados (padrão: 100)
- `status` (string): tramitando = pós-RCN 1/2013 em tramitação (padrão); antes-rcn = anteriores à RCN; encerrados = tramitação encerrada

### `senado_resultado_veto` (~295 tokens)

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`.

Input parameters:

- `codigo` (integer, required): Código do veto, da matéria vetada ou do dispositivo — qual deles depende de `tipo`
- `tipo` (string): Define a chave em codigo: veto = código do veto (padrão); materia = código do projeto vetado; dispositivo = dispositivo de veto parcial

### `senado_encontro_plenario` (~205 tokens)

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`.

Input parameters:

- `codigo` (integer, required): Código do encontro/sessão
- `secao` (string): Qual seção do encontro consultar

### `senado_tabelas_plenario` (~306 tokens)

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`.

Input parameters:

- `filtro` (string): Busca textual sobre qualquer campo da linha; count 0 se nada casar
- `limite` (integer): Máximo de linhas (padrão 100, máx 500); count < total sinaliza corte
- `tabela` (string, required): Domínio a consultar: tipos-sessao (espécies de sessão); tipos-comparecimento (situações de presença); legislaturas (períodos com datas)

### `senado_search_processos` (~321 tokens)

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.

Input parameters:

- `ano` (integer): Ano do processo
- `autor` (string): Nome do autor
- `codigoParlamentarAutor` (integer): Código do parlamentar autor
- `dataFimApresentacao` (string): Data fim da apresentação (YYYYMMDD ou YYYY-MM-DD)
- `dataInicioApresentacao` (string): Data início da apresentação (YYYYMMDD ou YYYY-MM-DD)
- `limite` (integer): Máximo de resultados (padrão: 20)
- `numero` (integer): Número do processo
- `sigla` (string): Sigla do tipo de processo (ex: PL, PEC)
- `tramitando` (string): Em tramitação (S/N)

### `senado_obter_processo` (~216 tokens)

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`).

Input parameters:

- `idProcesso` (integer, required): ID do processo legislativo

### `senado_processo_detalhe` (~512 tokens)

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`.

Input parameters:

- `codigoColegiado` (integer): secao=relatorias: código do colegiado
- `codigoMateria` (integer): Código legado da matéria
- `codigoParlamentar` (integer): secao=relatorias: código do parlamentar relator
- `codigoParlamentarAutor` (integer): secao=emendas: código do parlamentar autor
- `dataFim` (string): Até esta data (YYYYMMDD ou YYYY-MM-DD)
- `dataInicio` (string): A partir desta data (YYYYMMDD ou YYYY-MM-DD)
- `dataReferencia` (string): secao=relatorias/prazos: vigentes nesta data (YYYYMMDD ou YYYY-MM-DD)
- `idProcesso` (integer): ID do processo
- `limite` (integer): Máximo de resultados (padrão: 100)
- `secao` (string, required): Qual aspecto detalhar: emendas, relatorias ou prazos

### `senado_autores_atuais` (~181 tokens)

Lista parlamentares autores de processos em tramitação, ordenados por produção (maior número de matérias primeiro). 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).

Input parameters:

- `limite` (integer): Máximo de resultados (padrão: 50)
- `nome` (string): Filtrar por nome (busca parcial)
- `uf` (string): Filtrar por UF (ex: SP)

### `senado_tabelas_processo` (~372 tokens)

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`.

Input parameters:

- `filtro` (string): Busca textual sobre sigla/descrição; count 0 se nada casar
- `limite` (integer): Máximo de linhas (padrão 200, máx 1000); count < total sinaliza corte
- `tabela` (string, required): 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-p…

### `senado_ecidadania_listar_consultas` (~307 tokens)

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`.

Input parameters:

- `limite` (integer): Número máximo de resultados
- `pagina` (integer): Página de resultados
- `status` (string): 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.

### `senado_ecidadania_obter_consulta` (~168 tokens)

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` (campos como `comissao` e datas podem vir `null`). 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`.

Input parameters:

- `id` (integer, required): ID da consulta pública

### `senado_ecidadania_consultas_analise` (~415 tokens)

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 }`. Para o detalhe de uma consulta use `senado_ecidadania_obter_consulta`.

Input parameters:

- `limite` (integer): Número máximo de resultados
- `margemPolarizacao` (integer): Modo polarizada: considera polarizado se diferença ≤ este percentual
- `minimoVotos` (integer): Mínimo de votos para considerar
- `modo` (string): consenso (alta concordância) ou polarizada (~50/50)
- `percentualMinimo` (integer): Modo consenso: percentual mínimo numa direção
- `status` (string): 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.

### `senado_ecidadania_listar_ideias` (~283 tokens)

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`.

Input parameters:

- `limite` (integer): Número máximo de resultados
- `ordem` (string): Ordem de ordenação
- `ordenarPor` (string): Campo para ordenação (apoios é o disponível no corpus; data/comentarios só no detalhe)
- `pagina` (integer): Página de resultados
- `status` (string): Filtrar por status

### `senado_ecidadania_obter_ideia` (~145 tokens)

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`.

Input parameters:

- `id` (integer, required): ID da ideia legislativa

### `senado_ecidadania_listar_eventos` (~259 tokens)

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`.

Input parameters:

- `comissao` (string): Sigla da comissão
- `limite` (integer): Número máximo de resultados
- `ordem` (string): Ordem (padrão desc)
- `ordenarPor` (string): Ordenar por data ou número de comentários
- `status` (string): Filtrar por status

### `senado_ecidadania_obter_evento` (~231 tokens)

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.

Input parameters:

- `id` (integer, required): Identificador do evento (campo `id` de senado_ecidadania_listar_eventos)

### `senado_ecidadania_sugerir_tema_enquete` (~301 tokens)

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`.

Input parameters:

- `criterios` (object): Critérios de seleção do tema (polarização, consenso, participação mínima, tramitação)

### `senado_ecidadania_consultas_votos` (~379 tokens)

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). 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).

Input parameters:

- `limite` (integer): Número máximo de resultados
- `materia` (string): Filtro por código da matéria (numérico) ou trecho do nome/ementa
- `ordem` (string): Ordem (padrão desc)
- `ordenarPor` (string): Métrica do ranking (padrão: total de votos)
- `uf` (string): Sigla da UF (ex.: SP) — filtra e ranqueia por votos daquele estado

### `senado_discursos_senador` (~357 tokens)

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. Sem `dataInicio`/`dataFim` traz todo o histórico do senador. 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.

Input parameters:

- `casa` (string): Restringe à casa: SF (Senado Federal) ou CN (Congresso Nacional); vazio traz ambas
- `codigoSenador` (integer, required): Código único do senador
- `dataFim` (string): Fim do período (YYYYMMDD); omitir dataInicio/dataFim traz todo o histórico
- `dataInicio` (string): Início do período (YYYYMMDD); use junto com dataFim
- `tipo` (string): discursos = pronunciamentos próprios (padrão); apartes = intervenções em discursos de outros — altera a fonte e o conteúdo retornado

### `senado_discursos_plenario` (~159 tokens)

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`.

Input parameters:

- `dataFim` (string, required): Data fim (YYYYMMDD)
- `dataInicio` (string, required): Data início (YYYYMMDD)

### `senado_discurso_texto` (~181 tokens)

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.

Input parameters:

- `codigoPronunciamento` (integer, required): Código do pronunciamento (campo `codigo` de senado_discursos_senador ou senado_discursos_plenario); um por discurso

### `senado_listar_blocos` (~121 tokens)

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`). Use para descobrir o `codigo` de um bloco e depois detalhá-lo via `senado_obter_bloco`; para lideranças use `senado_liderancas`.

### `senado_obter_bloco` (~132 tokens)

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`); `dataExtincao` é `null` para blocos vigentes. Obtenha o parâmetro `codigo` primeiro via `senado_listar_blocos`; código inexistente retorna erro ("Bloco parlamentar não encontrado").

Input parameters:

- `codigo` (integer, required): Código do bloco parlamentar

### `senado_liderancas` (~203 tokens)

Lista as lideranças do Senado e do Congresso Nacional (líderes, vice-líderes etc.). Retorna `{ count, liderancas }`, cada item com `tipo`, `descricao`, `unidadeLideranca` e `parlamentar` (`codigo`, `nome`, `partido`, `uf`). Filtre por `casa` (SF/CN), `codigoParlamentar`, `vigente` (S/N) ou `siglaTipoLideranca`; sem filtros retorna todas. Para a composição de blocos use `senado_listar_blocos`.

Input parameters:

- `casa` (string): Casa legislativa (SF=Senado, CN=Congresso)
- `codigoParlamentar` (integer): Código do parlamentar
- `siglaTipoLideranca` (string): Tipo de liderança (ex: LIDER, VICE-LIDER)
- `vigente` (string): Apenas vigentes (S/N)

### `senado_mesa` (~134 tokens)

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`.

Input parameters:

- `casa` (string): senado (Mesa do SF) ou congresso (Mesa do CN)

### `senado_orcamento_parlamentar` (~451 tokens)

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`.

Input parameters:

- `ano` (integer): Ano do orçamento da emenda (filtra tipo=oficios pelo ano das emendas)
- `incluirEmendas` (boolean): tipo=oficios: incluir o detalhe das emendas (favorecido, CNPJ, nota de empenho)
- `limite` (integer): Máximo de ofícios por página (tipo=oficios; padrão 50)
- `pagina` (integer): Página de ofícios (tipo=oficios; padrão 1)
- `tipo` (string): emendas (lotes de emendas propostas) ou oficios (ofícios de indicação de destino)

### `senado_buscar_legislacao` (~294 tokens)

Busca normas jurídicas federais **já promulgadas** (leis, decretos, emendas etc.) por `tipo`, `numero`, `ano` e/ou `data`, combinados como filtros AND — informe ao menos um, senão retorna erro. Retorna `{ count, normas }` sem paginação (`count` cobre todas as normas que casam; 0 quando nada casa), cada norma com `codigo`, `tipo`, `descricaoTipo`, `numero`, `ano`, `data` (ISO), `norma`, `ementa` e `apelido`. Use o `codigo` em `senado_obter_legislacao` para indexação e URL do texto integral. Para **proposições em tramitação** (PEC, PL, MPV) use `senado_buscar_materias` — esta cobre apenas normas já sancionadas.

Input parameters:

- `ano` (integer): Ano de assinatura/promulgação da norma
- `data` (string): Data exata de assinatura, formato YYYYMMDD
- `numero` (integer): Número da norma; combina com tipo e ano como filtro AND
- `tipo` (string): Sigla oficial da espécie: LEI, DEC (decreto), LCP (lei complementar), EMC (emenda constitucional) etc.; lista completa em senado_tabelas_referencia (tabela=tipos-norma)

### `senado_obter_legislacao` (~209 tokens)

Obtém o detalhe de uma norma federal já promulgada pelo seu `codigo` interno. Retorna um objeto com `codigo`, `tipo`, `descricaoTipo`, `numero`, `ano`, `data` (ISO), `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". 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.

Input parameters:

- `codigo` (integer, required): Identificador interno da norma (campo `codigo` retornado por senado_buscar_legislacao; ≠ número da lei)

### `senado_votacao_comissao` (~537 tokens)

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. 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.

Input parameters:

- `ano` (integer): Ano da proposição (obrigatório quando por=materia)
- `codigoSenador` (integer): Código do senador (obrigatório quando por=senador)
- `comissao` (string): Sigla da comissão para filtrar (por=senador ou por=materia)
- `dataFim` (string): Data fim (YYYYMMDD)
- `dataInicio` (string): Data início (YYYYMMDD)
- `numero` (integer): Número da proposição (obrigatório quando por=materia)
- `por` (string): Eixo da consulta: comissao, senador ou materia
- `sigla` (string): Sigla do tipo da proposição (obrigatório quando por=materia; ex: PL, PEC)
- `siglaComissao` (string): Sigla da comissão (obrigatório quando por=comissao; ex: CCJ, CAE)

### `senado_notas_taquigraficas` (~486 tokens)

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 sessão sem transcrição retorna `totalBlocos` 0 e `blocos` vazio. `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.

Input parameters:

- `id` (integer, required): Código da sessão plenária ou da reunião de comissão
- `limite` (integer): modo=resumo: máximo de blocos por chamada (padrão 20); o excedente é sinalizado em aviso
- `modo` (string): resumo = blocos com trecho inicial; texto = transcrição integral dos blocos selecionados
- `orador` (string): Retorna só blocos cujo texto menciona este nome (busca parcial no conteúdo)
- `sequenciaFim` (integer): Último bloco no modo texto (ignorado no modo resumo); a janela é capada em 20 blocos por chamada
- `sequenciaInicio` (integer): Primeiro bloco a retornar (base 1); pagina o modo resumo e abre a janela do modo texto (padrão: 1)
- `tipo` (string): sessao = plenário (padrão); reuniao = comissão

### `senado_videos_taquigrafia` (~284 tokens)

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 → `count`/`total` 0 e lista vazia; ao passar de `limite` inclui `aviso`), 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.

Input parameters:

- `id` (integer, required): Código da sessão plenária ou da reunião de comissão, conforme `tipo`
- `limite` (integer): Máximo de unidades (padrão 50, máx 200); o excedente é sinalizado em aviso
- `orador` (string): Retorna só unidades cujo orador contém este nome (busca parcial)
- `tipo` (string): sessao = plenário (padrão); reuniao = comissão

### `senado_ceaps` (~679 tokens)

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`.

Input parameters:

- `agruparPor` (string): Quando estatisticas=true, ranqueia os grupos por soma decrescente (grupos[0] = maior gastador), cada grupo com sua mini-distribuição
- `ano` (integer, required): Ano das despesas
- `codSenador` (integer): Filtrar por código do senador
- `estatisticas` (boolean): 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'
- `fornecedor` (string): Filtrar por fornecedor (busca parcial)
- `limite` (integer): Máximo de linhas no resultado (padrão: 100)
- `mes` (integer): Filtrar por mês
- `modo` (string): Agregação ou detalhe (padrão: por-senador). Ignorado quando estatisticas=true
- `nomeSenador` (string): Filtrar por nome do senador (busca parcial)
- `tipoDespesa` (string): Filtrar por tipo de despesa (busca parcial)
- `topN` (integer): Tamanho das listas top/bottom quando estatisticas=true sem agruparPor (padrão: 10, máx: 100)

### `senado_senadores_admin` (~285 tokens)

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`.

Input parameters:

- `nome` (string): Filtrar por nome do senador (busca parcial)
- `tipo` (string, required): Qual dado administrativo consultar
- `uf` (string): Filtrar por estado (auxilio-moradia/escritorios-apoio)

### `senado_servidores` (~247 tokens)

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. Para remuneração use `senado_remuneracoes_servidores`; para estagiários/pensionistas/quantitativos use `senado_pessoal_tabelas`.

Input parameters:

- `cargo` (string): Cargo (busca parcial)
- `limite` (integer): Máximo de resultados (padrão: 50)
- `lotacao` (string): Lotação/setor (busca parcial, ex: SEGRAF)
- `nome` (string): Nome do servidor (busca parcial)
- `situacao` (string): Qual lista consultar (padrão: ativos)

### `senado_remuneracoes_servidores` (~684 tokens)

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) com `nome` e `sequencial` — o modo `resumo`/`detalhe` só vê uma fatia e não acha o extremo real. `campo` escolhe a coluna (padrão `bruto`; ex.: `liquida`, `horasExtras`); `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`.

Input parameters:

- `agruparPor` (string): Quando estatisticas=true, devolve estatísticas por grupo (só `tipoFolha`); implica dados por linha (não consolidados)
- `ano` (integer, required): Ano de referência
- `campo` (string): Coluna sob análise quando estatisticas=true (padrão: bruto). Opções: bruto, liquida, remuneracaoBasica, vantagensPessoais, funcaoComissionada, gratificacaoNatalina, horasExtras, outrasEventuais, abon…
- `consolidarPorServidor` (boolean): Soma as linhas (Normal+Suplementar) do mesmo servidor por `sequencial` antes das estatísticas (padrão: true). Ignorado — forçado a false — quando agruparPor está definido
- `estatisticas` (boolean): 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'
- `limite` (integer): Máximo de linhas no modo detalhe (padrão: 50)
- `mes` (integer, required): Mês de referência
- `modo` (string): resumo = totais por tipo de folha (padrão); detalhe = composição individual. Ignorado quando estatisticas=true
- `nome` (string): Nome do servidor (busca parcial)
- `tipoFolha` (string): Filtrar por tipo de folha (busca parcial)
- `topN` (integer): Tamanho das listas top/bottom quando estatisticas=true (padrão: 10, máx: 100)

### `senado_horas_extras` (~555 tokens)

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`.

Input parameters:

- `agruparPor` (string): 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 grup…
- `ano` (integer, required): Ano de referência
- `estatisticas` (boolean): 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'
- `limite` (integer): Máximo de resultados (padrão: 100; ignorado quando estatisticas=true)
- `mes` (integer, required): Mês de referência
- `nome` (string): Nome do servidor (busca parcial)
- `topN` (integer): Tamanho das listas top/bottom quando estatisticas=true sem agruparPor (padrão: 10, máx: 100)

### `senado_pessoal_tabelas` (~276 tokens)

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`.

Input parameters:

- `filtro` (string): Filtro textual (nome, curso, setor...)
- `limite` (integer): Máximo de registros (padrão: 100)
- `tabela` (string, required): Qual tabela de pessoal consultar (quantitativo agregado ou lista nominal)

### `senado_contratos` (~270 tokens)

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`. 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.

Input parameters:

- `ano` (integer): Ano do contrato
- `cnpj` (string): CNPJ/CPF exato do fornecedor
- `fornecedor` (string): Nome do fornecedor (busca parcial)
- `limite` (integer): Máximo de resultados (padrão: 50)
- `maoDeObra` (boolean): Apenas contratos com mão de obra residente
- `numero` (string): Número do contrato (busca parcial)
- `objeto` (string): Texto no objeto do contrato

### `senado_contratacao_detalhe` (~420 tokens)

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. Obtenha o `id` via `senado_contratos` ou `senado_contratacoes_lista` — para localizar a contratação (não detalhá-la) use aquelas ferramentas.

Input parameters:

- `id` (integer, required): ID da contratação (campo 'id' das listas de contratos/atas/empenhos)
- `limite` (integer): Máximo de itens (padrão 100, máx 500); count < total sinaliza corte
- `secao` (string, required): Aspecto a detalhar: itens/pagamentos/garantias (qualquer tipo); aditivos (só contratos); acionamentos (só atas_registro_preco)
- `tipo` (string): contratos = contrato firmado (padrão); atas_registro_preco = compromisso de preços p/ compras futuras; notas_empenho = reserva orçamentária do gasto

### `senado_licitacoes` (~162 tokens)

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`.

Input parameters:

- `limite` (integer): Máximo de resultados (padrão: 50)
- `numero` (string): Número exato da licitação (ex: 19/2018)
- `objeto` (string): Texto no objeto da licitação

### `senado_terceirizados` (~204 tokens)

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`.

Input parameters:

- `empresa` (string): Nome da empresa contratada (busca parcial)
- `limite` (integer): Máximo de resultados (padrão: 50)
- `lotacao` (string): Lotação/setor (busca parcial)
- `nome` (string): Nome do colaborador (busca parcial)

### `senado_empresas_contratadas` (~202 tokens)

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.

Input parameters:

- `cnpj` (string): CNPJ/CPF (busca parcial)
- `limite` (integer): Máximo de empresas (padrão: 20)
- `nome` (string): Nome da empresa (busca parcial, mín. 3 caracteres)

### `senado_contratacoes_lista` (~236 tokens)

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). 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`.

Input parameters:

- `filtro` (string): Filtro textual (empresa, objeto, etc.)
- `limite` (integer): Máximo de resultados (padrão: 50)
- `tipo` (string, required): Qual lista consultar

### `senado_suprimento_fundos` (~580 tokens)

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 do `campo` (grupos[0]=maior). `campo` escolhe a coluna (transacoes: `valor`; empenhos padrão `valorExecutado`; atos-concessao padrão `valorTotalTransacoes`); `campo`/`agruparPor` inválidos para o `tipo` caem no default com `aviso`, e registros sem valor numérico são excluídos das estatísticas. Informe o `ano` (>=2010); use os mesmos códigos administrativos vistos em `senado_contratacoes_lista` ou `senado_execucao_orcamentaria` para cruzar gastos.

Input parameters:

- `agruparPor` (string): Ranquear grupos por soma do campo (transacoes: fornecedor/tipo/tipoInscricao/rubricas; empenhos: rubrica/descricao; atos-concessao: elementoDespesa/regimeEspecial)
- `ano` (integer, required): Ano de referência
- `campo` (string): Coluna de valor para estatísticas (transacoes: valor; empenhos padrão valorExecutado; atos-concessao padrão valorTotalTransacoes)
- `estatisticas` (boolean): 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
- `filtro` (string): Filtro textual (nome, unidade...)
- `limite` (integer): Máximo de resultados (padrão: 100)
- `tipo` (string): Qual relação consultar (padrão: supridos)
- `topN` (integer): Tamanho do top/bottom nas estatísticas (padrão: 10)

### `senado_execucao_orcamentaria` (~607 tokens)

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 do `campo` (grupos[0]=maior). `campo` escolhe a coluna (despesas padrão `pago`; receitas padrão `arrecadada`); `campo`/`agruparPor` inválidos para o `tipo` caem no default com `aviso`. 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).

Input parameters:

- `agruparPor` (string): Ranquear grupos por soma do campo (despesas: ano/acao/grupo/fonte/modalidade/resultadoLei/plano; receitas: origem/ano/categoria/especie/natureza)
- `ano` (integer): Filtrar por exercício financeiro
- `campo` (string): Coluna de valor para estatísticas (despesas padrão `pago`; receitas padrão `arrecadada`)
- `estatisticas` (boolean): Distribuição/ranking sobre as linhas: min/máx/média/mediana/percentis + top/bottom, ou grupos ranqueados por soma via agruparPor
- `limite` (integer): Máximo de linhas (padrão: 100)
- `modo` (string): Agregação (por-acao/por-grupo/por-fonte: despesas; por-origem: receitas) ou detalhe. Ignorado quando estatisticas=true
- `tipo` (string): despesas = dotação e execução; receitas = receitas próprias
- `topN` (integer): Tamanho do top/bottom nas estatísticas (padrão: 10)

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/sidneybissoli-senado-br-mcp-cloudflare/senado-br-mcp#diagnostics

## Score history

- 2026-08-03: 68
- 2026-08-02: 64
- 2026-08-01: 24
- 2026-07-31: 5
- 2026-07-30: 50
- 2026-07-28: 50
- 2026-07-27: 50

## Links

- npm package: https://www.npmjs.com/package/senado-br-mcp
- Socket report: https://socket.dev/npm/package/senado-br-mcp
- Repository: https://github.com/SidneyBissoli/senado-br-mcp-cloudflare
- Website: https://senado.sidneybissoli.com/
- Changelog RSS feed: https://verifymcp.io/servers/sidneybissoli-senado-br-mcp-cloudflare/senado-br-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/sidneybissoli-senado-br-mcp-cloudflare/senado-br-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/sidneybissoli-senado-br-mcp-cloudflare/senado-br-mcp
