Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

MCP Compras.gov.br

PYPI · COMPRAS-MCP · 2 COMPONENTS

Preços, atas, contratos e sanções das APIs públicas de compras do governo brasileiro

0 this week 0 Trust /100

Last scanned (9 hours ago)

Scores higher than 0% of PyPI servers

Category Finance and Payments

Trust breakdown (7 categories)

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. How we score → Why this is hard to score →

Supply Chain Security75
Provenance & Transparency58
  • Repository check failed: the declared repository URL returned HTTP 404. See how to fix → View diagnostics → Fail
  • Cryptographically verified build provenance (signed, bound to opedrosoares/MCP_Compras). View diagnostics → Pass
  • Licence could not be checked: the licence is shipped as a file inside the package, not declared as a standard (SPDX) licence identifier, so we cannot tell whether it is OSI-approved.Unverified
  • Actively maintained (last published 56 days ago).Pass
  • Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability78
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 24361 tokens (~229/item across 106 items; 100 tools + 6 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management67
  • Stability observed for 20 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 100 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 102 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
What we tested

Checks we ran (14)

  • Malware scan
  • Known CVEs
  • Install scripts
  • Dependency health
  • Source repository
  • Provenance
  • Maintenance
  • Schema quality
  • Stability
  • Tool coverage
  • Injection markers
  • Destructive annotations
  • Judged manipulation
  • MCP protocol

Checks we could not complete (2)

These are gaps on our side, not findings about this package. We only credit what we can confirm, so a category made up entirely of them scores 0.

  • License in Provenance & TransparencyLicence could not be checked: the licence is shipped as a file inside the package, not declared as a standard (SPDX) licence identifier, so we cannot tell whether it is OSI-approved.
  • Security disclosure in Provenance & TransparencySecurity-disclosure policy not yet verified: we couldn't inspect the source repository.

Does not apply to this package (2)

  • Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
  • Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.

The score does not measure everything. What the score does not measure →

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 0
    • Malware scan: unverified → pass ▲ security
    • Stability: pass → 0.67 functional
  • 4 Nov 26 0
    • Malware scan: pass → unverified ▼ security
  • 3 Nov 26 0
    • Malware scan: unverified → pass ▲ security
  • 2 Nov 26 0
    • Malware scan: pass → unverified ▼ security
  • 31 Oct 26 0
    • Malware scan: unverified → pass ▲ security
  • 30 Oct 26 0
    • Malware scan: pass → unverified ▼ security
    • Stability: 0.97 → pass security
  • 29 Oct 26 0
    • Stability: pass → 0.97 functional
  • 23 Oct 26 0
    • Stability: 0.97 → pass security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed pypi/compras-mcp@0.4.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo opedrosoares/MCP_Compras
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/opedrosoares/MCP_Compras/.github/workflows/release.yml@refs/tags/v0.4.0
Rekor log index 2772231667
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:71a53f00bbacd6ccd8a1b1ac03762a66ff01f45d6b93887644b1c0973280695d

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend Known build tool hatchling.build

Background: Why install scripts are a supply-chain risk →

Vulnerabilities 6 findings
ID CVE Severity Vector Fix available
GHSA-m8x7-r2rg-vh5g CVE-2025-64340 medium CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H yes
GHSA-rww4-4w9c-7733 CVE-2026-27124 high yes
GHSA-vv7q-7jx5-f767 CVE-2026-32871 critical CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H yes
PYSEC-2026-2475 CVE-2025-64340 medium CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H yes
PYSEC-2026-2476 CVE-2026-27124 none yes
PYSEC-2026-338 CVE-2026-32871 critical CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H yes

Background: What a vulnerability scan can and cannot prove →

Dependencies 74 packages
Packages resolved 74
Stale 5
No linked repository 3
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 100 exposed · ~23,943 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
compras_aggregate_contratacoes_por_periodo ~374

Série temporal de contratações no PNCP por bucket. **Modo `count` (recomendado para tendência)**: 1 chamada por bucket lendo apenas `totalRegistros`. Janelas grandes (até 5 anos) são viáveis. **Modo `valor_*`**: varre todas as páginas de cada bucket para somar. Mais lento; limita-se a `MAX_PAGES_PER_BUCKET=25` páginas (× 500 itens = 12.500 registros máx por bucket). Sinaliza `truncado=true` quando bate o teto. Concurrency interna: 4 calls simultâneas. Cache 30 min.

NameTypeReqDescription
codigo_modalidadeintegeryesModalidade PNCP a agregar. Comuns: 6=Pregão Eletrônico, 8=Dispensa, 9=Inexigibilidade, 4=Concorrência Eletrônica.
data_finalstringyesData final da janela de agregação (YYYY-MM-DD).
data_inicialstringyesData inicial da janela de agregação (YYYY-MM-DD).
esfera––Filtro de esfera (federal/estadual/municipal/distrital). Só tem efeito no modo 'valor_*' (precisa varrer páginas).
granularidadestring–Tamanho de cada bucket da série: 'dia', 'semana', 'mes' ou 'ano'.
metricastring–Métrica a calcular: 'count' (rápido, 1 call por bucket), 'valor_estimado' ou 'valor_homologado' (paginado, mais lento). Use 'count' para tendência pura; só ative valores quando necessário.
uf––UF opcional.

Structured output declared, but exposes no named fields.

No examples provided.

compras_arp_adesoes_item ~180

Lista adesões (caronas) já realizadas a uma ARP. Endpoint Dados Abertos `/modulo-arp/5_consultarAdesoesItem`. Mostra quem aderiu e com que quantidade — indica nível de demanda e quanto ainda resta no limite legal de adesões. Cache 15 min.

NameTypeReqDescription
numero_atastringyesNúmero simples da ata (ex.: '00001/2024').
numero_itemintegeryesNúmero do item dentro da ata.
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.
unidade_gerenciadoraintegeryesCódigo da UASG gerenciadora da ata.

Structured output declared, but exposes no named fields.

No examples provided.

compras_arp_buscar_por_objeto ~524

Busca ARPs vigentes cujo `objeto` contém uma palavra-chave. Resolve a limitação do endpoint `/modulo-arp/1.2_consultarARP_FimVigencia`, que não aceita filtro por texto: pagina internamente até `max_paginas_varridas` e filtra client-side por presença de `palavra_chave` (case-insensitive, com normalização de acentos). Curto-circuita quando atinge `max_resultados`. O servidor faz o trabalho que antes era pedido ao LLM — sem isso, o roteiro `oportunidades_carona_arp` esbarrava em 169k ARPs vigentes e 339 páginas. Achado da bateria A v0.3.5. **Limitação conhecida**: o schema upstream de ARP **não traz UF** no item — só `nomeOrgao` e `nomeUnidadeGerenciadora`. Para filtrar por UF, cruze os matches com `compras_uasg_consultar` usando `codigoUnidadeGerenciadora` e compare `unidade.uf`. Não tentamos esse cruzamento aqui para manter a tool barata e previsível. Output: { "resultado": [<ARPs que casaram>], "total_examinadas": int, "matches": int, "paginas_varridas": int, "curto_circuitou": bool, "_filtro_objeto": {...} } Cache 15 min por (palavra_chave + janela + caps).

NameTypeReqDescription
data_vigencia_final_maxstringyesLimite máximo do fim de vigência (YYYY-MM-DD).
data_vigencia_final_minstringyesLimite mínimo do fim de vigência (YYYY-MM-DD). Tipicamente hoje para 'apenas vigentes'.
max_paginas_varridasinteger–Quantas páginas do upstream serão varridas para encontrar matches (proteção de latência). Default 10 × 500 itens = até 5.000 ARPs examinadas. Cap em 50.
max_resultadosinteger–Quantos matches no máximo retornar (curto-circuita a varredura).
palavra_chavestringyesTermo a procurar no campo `objetoCompra` das ARPs (case-insensitive, com normalização básica de acentos). Exemplos: 'notebook', 'uniformes', 'limpeza'.

Structured output declared, but exposes no named fields.

No examples provided.

compras_arp_consultar ~263

Consulta uma ARP específica pelo identificador PNCP. Endpoint Dados Abertos `/modulo-arp/1.1_consultarARP_Id`. Devolve o cabeçalho completo da ata (vigência, modalidade, gerenciadora, valores). Quando o `numero_controle_pncp_ata` vem no formato de **compra** (sem o sufixo `-NNNNNN` que numera a ata), a tool detecta e devolve diagnóstico explícito em vez de propagar `encontrada=false` silencioso. Cache 15 min.

NameTypeReqDescription
numero_controle_pncp_atastringyesIdentificador PNCP da **ata** (formato `cnpj14-1-sequencial/ano-NNNNNN`, onde NNNNNN numera a ata dentro da compra — compras SRP multi-fornecedor geram várias atas). Exemplo: `00394452000103-1-004729…

Structured output declared, but exposes no named fields.

No examples provided.

compras_arp_itens_listar ~253

Lista itens de ARPs na janela de vigência informada. Endpoint Dados Abertos `/modulo-arp/2_consultarARPItem`. O upstream exige `dataVigenciaInicialMin/Max` (janela ≤365 dias). Use filtros opcionais para localizar atas com um item específico. Cache 15 min.

NameTypeReqDescription
codigo_item––Filtra por código CATMAT ou CATSER.
codigo_unidade_gerenciadora––UASG gerenciadora (opcional).
data_vigencia_inicial_maxstringyesData máxima de início de vigência (YYYY-MM-DD).
data_vigencia_inicial_minstringyesData mínima de início de vigência (YYYY-MM-DD).
ni_fornecedor––CPF/CNPJ do fornecedor (apenas dígitos).
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.
tipo_item––Tipo do item: 'M' (material) ou 'S' (serviço).

Structured output declared, but exposes no named fields.

No examples provided.

compras_arp_listar ~315

Lista Atas de Registro de Preço (ARPs) por janela de início de vigência. Endpoint Dados Abertos `/modulo-arp/1_consultarARP`. O upstream exige janela `dataVigenciaInicialMin/Max` (≤ 365 dias). Para listar atas próximas do vencimento, use `compras_arp_por_fim_vigencia`. Cache 15 min.

NameTypeReqDescription
codigo_modalidade_compra––Filtra por modalidade da compra que originou a ata.
codigo_unidade_gerenciadora––Filtra ARPs pela UASG gerenciadora (5-6 dígitos).
data_vigencia_inicial_maxstringyesData MÁXIMA do início da vigência da ata (YYYY-MM-DD). Obrigatório. Janela max ≤ 365 dias a partir de data_vigencia_inicial_min.
data_vigencia_inicial_minstringyesData MÍNIMA do início da vigência da ata (YYYY-MM-DD). Obrigatório. A janela entre min e max deve ser de no máximo 365 dias.
numero_ata_registro_preco––Filtra por número da ata (ex.: '00001/2024').
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.

Structured output declared, but exposes no named fields.

No examples provided.

compras_arp_por_fim_vigencia ~196

Lista ARPs cuja vigência termina dentro do intervalo informado. Endpoint Dados Abertos `/modulo-arp/1.2_consultarARP_FimVigencia`. Permite ao gestor identificar atas próximas do vencimento. Cache 15 min.

NameTypeReqDescription
codigo_unidade_gerenciadora––UASG gerenciadora (opcional).
data_vigencia_final_maxstringyesData MÁXIMA de fim de vigência (YYYY-MM-DD). Obrigatório.
data_vigencia_final_minstringyesData MÍNIMA de fim de vigência (YYYY-MM-DD). Obrigatório. Janela max ≤ 365 dias.
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.

Structured output declared, but exposes no named fields.

No examples provided.

compras_arp_saldo_item ~331

Devolve o **saldo** (quantidade ainda disponível) por item da ARP. Endpoint Dados Abertos `/modulo-arp/4_consultarEmpenhosSaldoItem`. **Crítico para adesão**: a ata pode estar vigente mas com saldo zerado. Sem saldo, não há como aderir. **Estrutura do payload**: o upstream retorna **1 linha por (numeroItem, unidade, tipo)** — onde `tipo` pode ser `GERENCIADORA`, `PARTICIPANTE` etc. O mesmo `numeroItem` aparece várias vezes quando há múltiplas unidades alocadas (carona ou rateio). **Não é duplicação** — são alocações distintas dentro da mesma ata. Para evitar confusão (achado bateria A v0.3.5), além do `resultado` cru, anexamos `resumo_por_item`: dicionário agregando por `numeroItem` com soma das quantidades registradas/empenhadas e saldo total — pronto para decisão de adesão. Cache 15 min (saldo muda ao longo do dia).

NameTypeReqDescription
numero_atastringyesNúmero simples da ata (ex.: '00001/2024').
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.
unidade_gerenciadoraintegeryesCódigo da UASG gerenciadora da ata.

Structured output declared, but exposes no named fields.

No examples provided.

compras_arp_unidades_item ~206

Lista UGs participantes (potenciais caronas) de um item da ARP. Endpoint Dados Abertos `/modulo-arp/3_consultarUnidadesItem`. Determina quais unidades podem usar a ata como carona (adesão). Cache 15 min.

NameTypeReqDescription
numero_atastringyesNúmero simples da ata (ex.: '00001/2024'). Distinto do `numeroControlePncpAta` — use o campo retornado em `compras_arp_listar` ou `compras_arp_itens_listar`.
numero_itemintegeryesNúmero do item dentro da ata.
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.
unidade_gerenciadoraintegeryesCódigo da UASG gerenciadora da ata.

Structured output declared, but exposes no named fields.

No examples provided.

compras_buscar_contratacoes_similares ~358

Federa Dados Abertos + PNCP buscando contratações similares. Composição: consulta os **itens** de contratações 14.133 no Dados Abertos (`/modulo-contratacoes/2_`, filtrando por `codItemCatalogo` e só itens com resultado) + publicações PNCP do período, deduplica pelo número de controle PNCP e devolve os `max_resultados` mais recentes. Insumo para mapear benchmarks de outros órgãos. O recorte por CATMAT/CATSER vale para a perna Dados Abertos. A perna PNCP é best-effort por modalidade e não aceita filtro por item de catálogo — por isso `amostra_dados_abertos` e `amostra_pncp` vêm separadas no payload. **Atenção latência**: chama o PNCP em 3 modalidades (Pregão, Dispensa, Concorrência) em paralelo. Cada chamada PNCP costuma levar 30-60s — o tempo total da composta tende a 60-90s quando o cache está frio. Com Redis configurado as chamadas seguintes voltam em <1s.

NameTypeReqDescription
codigo_catmat––Código CATMAT do item. Mutuamente exclusivo com codigo_catser.
codigo_catser––Código CATSER do serviço. Mutuamente exclusivo com codigo_catmat.
max_resultadosinteger–Máximo de contratações similares a retornar (deduplicadas).
periodo_mesesinteger–Janela de busca em meses contados de hoje para trás.
uf––Filtro opcional por UF.

Structured output declared, but exposes no named fields.

No examples provided.

compras_catmat_buscar ~563

Busca itens CATMAT. **⚠️ Não existe busca por substring nesta API.** O contrato do `/modulo-material/4_consultarItemMaterial` oferece `descricaoItem`, que é **match exato**: `descricaoItem='CADEIRA'` devolve zero registros, embora o catálogo tenha milhares de itens começando por "CADEIRA ESCRITÓRIO...". Não é um filtro degradado — é um filtro de igualdade, e o termo livre que o usuário digita quase nunca casa com a descrição inteira do item. Por isso o `termo` **não** é enviado ao upstream: mandá-lo faria a chamada retornar o universo inteiro (~340 mil itens) sem nenhum aviso. Ele é usado para ordenar e marcar os resultados do recorte estrutural, e a filtragem real vem de `codigo_grupo`, `codigo_classe` e `codigo_pdm`. **Workflow recomendado**: 1. `compras_catmat_listar_grupos()` → escolher o grupo (ex.: 71=Mobiliários). 2. `compras_catmat_listar_classes(codigo_grupo=71)` → a classe (ex.: 7110). 3. `compras_catmat_listar_pdms(codigo_classe=7110)` → o PDM do material. 4. `compras_catmat_buscar(termo='cadeira', codigo_pdm=...)`. Esta tool emite `_aviso_filtro` no payload quando o recorte informado é largo demais para ser útil. Cache 24h por (termo + filtros + página).

NameTypeReqDescription
codigo_classe––Filtro estrutural por classe CATMAT (4 dígitos). Use em conjunto com `codigo_grupo` para focar a busca.
codigo_grupo––Filtro estrutural por grupo CATMAT (1-99). **FORTEMENTE RECOMENDADO** porque o filtro textual upstream está quebrado (veja docstring). Obtenha o código em `compras_catmat_listar_grupos`.
codigo_pdm––Filtro estrutural por PDM (Padrão Descritivo de Material). É o recorte mais preciso do CATMAT: agrupa as variações de um mesmo material. Obtenha o código em `compras_catmat_listar_pdms`.
paginainteger–Página (1-based).
tamanho_paginainteger–Registros por página.
termostringyesTermo de busca textual (descrição do material/serviço). Aceita fragmento — a API faz match parcial. Ex.: 'cadeira ergonomica'.

Structured output declared, but exposes no named fields.

No examples provided.

compras_catmat_consultar ~115

Consulta detalhes de um item CATMAT específico pelo código. Devolve nome do item, PDM, grupo, classe, características, NCM e unidades de fornecimento. Útil para confirmar o código antes de fazer pesquisa de preços ou listar contratações similares. Cache de 24h.

NameTypeReqDescription
codigo_itemintegeryesCódigo numérico do item no CATMAT (Catálogo de Materiais). Inteiro de 4 a 8 dígitos. Exemplo: 460789.

Structured output declared, but exposes no named fields.

No examples provided.

compras_catmat_listar_classes ~141

Lista as classes do CATMAT, opcionalmente filtradas por grupo. Classes são o segundo nível da hierarquia (ex.: dentro do grupo 71 Mobiliário, a classe 7110 é "Mobiliário de escritório"). Cache de 24h.

NameTypeReqDescription
codigo_grupo––Restringe a classes pertencentes a este grupo CATMAT. Se omitido, lista classes de todos os grupos.
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.

Structured output declared, but exposes no named fields.

No examples provided.

compras_catmat_listar_grupos ~151

Lista os grupos do CATMAT (Catálogo de Materiais). Grupos são o nível mais alto da hierarquia CATMAT (ex.: 10=ARMAMENTO, 11=MATERIAIS BÉLICOS NUCLEARES). Use esta tool para enquadrar a contratação no grupo correto antes de descer para classes/PDM/itens. Cache de 24h: os grupos mudam muito raramente. Total atual ~79 grupos.

NameTypeReqDescription
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.

Structured output declared, but exposes no named fields.

No examples provided.

compras_catmat_listar_pdms ~415

Lista os PDMs (Padrão Descritivo de Material) do CATMAT. Endpoint `/modulo-material/3_consultarPdmMaterial`. É o terceiro nível da hierarquia do catálogo: grupo → classe → **PDM** → item. O PDM é o que dá nome à família do material ("CADEIRA ESCRITÓRIO", "MICROCOMPUTADOR"), enquanto o item é uma variação específica dela. Como a API não faz busca por substring, descer até o PDM é a forma prática de localizar o material certo antes de pedir os itens. Uma classe devolve suas dezenas de PDMs nomeados em **uma** chamada — a classe 7110 (Mobiliário de escritório) tem 98 PDMs. A alternativa seria varrer milhares de itens e deduplicar `codigoPdm` client-side. **Isto é navegação hierárquica, não busca**: o endpoint não tem filtro textual. Combine com `compras_catmat_listar_grupos` e `compras_catmat_listar_classes` para descer a hierarquia, e depois passe o `codigo_pdm` para `compras_catmat_buscar`. Cache 24h.

NameTypeReqDescription
apenas_ativos––Se `true`, só PDMs com status ativo no catálogo.
codigo_classe––Código da classe CATMAT (4 dígitos). É o recorte mais útil: uma classe devolve suas dezenas de PDMs em uma única chamada.
codigo_grupo––Código do grupo CATMAT (2 dígitos) para listar seus PDMs.
codigo_pdm––Código de um PDM específico.
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.

Structured output declared, but exposes no named fields.

No examples provided.

compras_catser_consultar ~108

Consulta detalhes de um item CATSER pelo código. Devolve nome do serviço, descrição, seção/divisão/grupo/classe e unidades de medida. Use para confirmar o código antes de pesquisar preços ou contratações similares. Cache de 24h.

NameTypeReqDescription
codigo_itemintegeryesCódigo numérico do item no CATSER (Catálogo de Serviços). Inteiro de 4 a 6 dígitos. Exemplo: 27332.

Structured output declared, but exposes no named fields.

No examples provided.

compras_catser_listar_classes ~95

Lista as classes CATSER, opcionalmente filtradas por grupo. Cache de 24h.

NameTypeReqDescription
codigo_grupo––Restringe a classes do grupo CATSER informado.
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.

Structured output declared, but exposes no named fields.

No examples provided.

compras_catser_listar_secoes ~124

Lista as seções do CATSER (Catálogo de Serviços). Seções são o nível mais alto da hierarquia CATSER (baseada no CPC ONU). Use para enquadrar a contratação de serviços em uma seção antes de descer para divisões/grupos/classes/itens. Cache de 24h.

NameTypeReqDescription
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.

Structured output declared, but exposes no named fields.

No examples provided.

compras_checar_sancoes_fornecedor ~144

Consolida sanções de um fornecedor (CEIS + CNEP + CEPIM + leniência + impedimentos). Composição: chama em paralelo as listas do Portal da Transparência e os impedimentos do Comprasnet. Retorna um veredito booleano + lista consolidada de sanções ativas. Levanta `ComprasAuthError` se `TRANSPARENCIA_API_KEY` não estiver configurada. Sempre use antes de homologar pregões/contratos. Cache 10 min.

NameTypeReqDescription
cnpjstringyesCNPJ do fornecedor (14 dígitos, com ou sem pontuação).

Structured output declared, but exposes no named fields.

No examples provided.

compras_comparar_periodos_contratacoes ~373

Compara dois períodos lado a lado para a mesma modalidade. Wrapper sobre `compras_aggregate_contratacoes_por_periodo` chamado duas vezes (granularidade='ano' implícita — soma todo o período em 1 bucket). Retorna totais de A e B + delta absoluto + delta percentual. Caso de uso típico: _"Houve antecipação de licitações em Jun/2024 (ano eleitoral) comparado a Jun/2025?"_ Ou _"As dispensas em Dez/2024 foram maiores que Dez/2023 no mesmo órgão?"_.

NameTypeReqDescription
codigo_modalidadeintegeryesModalidade PNCP a comparar. Comuns: 6=Pregão Eletrônico, 8=Dispensa, 4=Concorrência Eletrônica.
esfera––Esfera federativa. Requer métrica de valor (modo paginado).
label_astring–Rótulo amigável do período A (ex.: 'Jun/2024').
label_bstring–Rótulo amigável do período B (ex.: 'Jun/2025').
metricastring–Métrica a comparar: 'count' (rápido) ou 'valor_estimado' / 'valor_homologado' (paginado).
periodo_a_fimstringyesData final do período A (YYYY-MM-DD).
periodo_a_iniciostringyesData inicial do período A (YYYY-MM-DD).
periodo_b_fimstringyesData final do período B (YYYY-MM-DD).
periodo_b_iniciostringyesData inicial do período B (YYYY-MM-DD).
uf––UF opcional.

Structured output declared, but exposes no named fields.

No examples provided.

compras_contratacoes_14133_consultar ~301

Consulta uma contratação 14.133 pelo identificador. Endpoint `/modulo-contratacoes/1.1_consultarContratacoes_PNCP_14133_Id`. Devolve detalhes completos: objeto, valor estimado, modalidade, instrumento convocatório, status no PNCP. Aceita os dois identificadores do PNCP. Use `tipo_identificador='idCompra'` com o campo `idCompra` das listagens, ou `'numeroControlePNCPCompra'` com o número de controle que aparece no edital (ex.: `10673078000120-1-000021/2025`). Cache 15 min.

NameTypeReqDescription
id_contratacaostringyesIdentificador da contratação. Aceita dois formatos, conforme `tipo_identificador`: o `idCompra` (17 dígitos, campo `idCompra` das listagens, ex.: '15813206001272025') ou o número de controle PNCP (al…
tipo_identificadorstring–Qual identificador está sendo passado em `id_contratacao`: 'idCompra' (padrão) ou 'numeroControlePNCPCompra'. O upstream rejeita qualquer outro valor com HTTP 500.

Structured output declared, but exposes no named fields.

No examples provided.

compras_contratacoes_14133_itens_listar ~684

Lista itens de contratações 14.133 incluídos no período. Endpoint `/modulo-contratacoes/2_consultarItensContratacoes_PNCP_14133`. **Uso principal — pesquisa de preço por item.** Com `cod_item_catalogo` (CATMAT/CATSER) cada linha traz, junto, `quantidade`, `valorUnitarioEstimado`, `valorUnitarioResultado`, `valorTotalResultado`, `nomeFornecedor` e `unidadeMedida` — ou seja, estimado *versus* homologado por item, insumo direto do mapa de preços do ETP. **Higiene da amostra**: passe `tem_resultado=True` (ou `situacao_item='2'`, Homologado) antes de calcular média ou mediana. Item deserto, fracassado ou cancelado não é preço praticado. Sem nenhum filtro além das datas, a resposta é "tudo que o Brasil incluiu no PNCP nessa janela" — quase sempre grande demais para ser útil. Cache 15 min.

NameTypeReqDescription
cnpj_cpf_fornecedor––CNPJ ou CPF do fornecedor vencedor do item (só dígitos).
cnpj_orgao––CNPJ do órgão comprador (14 dígitos, com ou sem pontuação).
cod_item_catalogo––Código do item no catálogo (CATMAT para material, CATSER para serviço). É o filtro que transforma esta tool em pesquisa de preço: devolve, na mesma linha, quantidade, valor unitário estimado e valor…
codigo_classe––Código da classe do catálogo. Vem nulo em boa parte dos serviços — nesses casos use `codigo_grupo`.
codigo_grupo––Código do grupo do catálogo. Recorte por família quando o código exato do item ainda não é conhecido.
codigo_uasg––Código da UASG compradora (6 dígitos).
data_final_inclusaostringyesData final de inclusão dos itens no PNCP (YYYY-MM-DD).
data_inicial_inclusaostringyesData inicial de inclusão dos itens no PNCP (YYYY-MM-DD).
material_ou_servico––'M' para material, 'S' para serviço.
paginainteger–Página de resultados (1-based). Padrão 1.
situacao_item––Situação do item da compra. '2' = Homologado, '4' = Cancelado. Filtre por '2' antes de calcular qualquer estatística de preço.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.
tem_resultado––Se `true`, só itens que tiveram vencedor — filtro aplicado pelo upstream. Use para pesquisa de preço: item deserto ou fracassado não é preço praticado e não pode entrar na média do ETP. Se `false`, o…

Structured output declared, but exposes no named fields.

No examples provided.

compras_contratacoes_14133_itens_por_contratacao ~271

Lista itens de uma contratação 14.133 específica. Endpoint `/modulo-contratacoes/2.1_consultarItensContratacoes_PNCP_14133_Id`. Aceita `idCompra` ou número de controle PNCP, conforme `tipo_identificador`.

NameTypeReqDescription
id_contratacaostringyesIdentificador da contratação. Aceita dois formatos, conforme `tipo_identificador`: o `idCompra` (17 dígitos, campo `idCompra` das listagens, ex.: '15813206001272025') ou o número de controle PNCP (al…
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.
tipo_identificadorstring–Qual identificador está sendo passado em `id_contratacao`: 'idCompra' (padrão) ou 'numeroControlePNCPCompra'. O upstream rejeita qualquer outro valor com HTTP 500.

Structured output declared, but exposes no named fields.

No examples provided.

compras_contratacoes_14133_listar ~696

Lista contratações da Lei 14.133 publicadas no PNCP (via Dados Abertos). Endpoint `/modulo-contratacoes/1_consultarContratacoes_PNCP_14133`. Cobre pregões eletrônicos, dispensas, inexigibilidades e demais modalidades da Nova Lei de Licitações no governo federal. **Atenção semântica**: o filtro `codigo_modalidade_dados_abertos` usa a tabela de modalidade do SIASG/Dados Abertos, NÃO o cheat sheet PNCP de `compras_pncp_modalidades`. Os payloads retornam ambos os campos (`codigoModalidade` do Dados Abertos e `modalidadeIdPncp` do PNCP) — use `modalidadeNome` para o nome amigável. Cache 15 min.

NameTypeReqDescription
amparo_legal––Código do amparo legal no PNCP (campo `amparoLegalCodigoPncp`). Ex.: 18 = Lei 14.133/2021, Art. 75, I (dispensa por valor).
cnpj_orgao––CNPJ do órgão (14 dígitos, com ou sem pontuação).
codigo_ibge_municipio––Código IBGE do município da unidade compradora (7 dígitos).
codigo_modalidade_dados_abertos––Código de modalidade na tabela do **Dados Abertos / SIASG** (NÃO é o cheat sheet do PNCP). Equivalências confirmadas em 2026-05 por sweep empírico do endpoint: 3 = Concorrência Eletrônica (PNCP=4)…
codigo_orgao_pncp––Código do órgão **no espaço de códigos interno do PNCP** — é o campo `codigoOrgao` que vem no payload desta mesma tool, e só ele. **Não é o código SIASG** de `compras_orgao_listar`/`compras_orgao_con…
codigo_uasg––Código UASG do órgão licitante.
data_final_publicacao––Data final de publicação (YYYY-MM-DD).
data_inicial_publicacao––Data inicial de publicação (YYYY-MM-DD).
paginainteger–Página (1-based).
tamanho_paginainteger–Registros por página.
uf––Sigla da UF da unidade compradora (2 letras, ex.: 'SP', 'MS').

Structured output declared, but exposes no named fields.

No examples provided.

compras_contratacoes_14133_resultados_listar ~536

Lista resultados (homologações) de itens 14.133 no período. Endpoint `/modulo-contratacoes/3_consultarResultadoItensContratacoes_PNCP_14133`. Devolve fornecedor vencedor, valor adjudicado e quantitativo homologado — fonte primária de preço praticado para o ETP. **Due diligence de fornecedor**: `ni_fornecedor` (CNPJ/CPF) levanta tudo que um fornecedor ganhou na janela. **Auditoria por materialidade**: `valor_total_min` monta a fila de homologações acima de um patamar — combine com uma janela curta, já que o filtro de data é obrigatório. Para recortar por item de catálogo, use `compras_contratacoes_14133_itens_listar(cod_item_catalogo=...)`: esta rota **não** oferece filtro por CATMAT/CATSER. Cache 15 min.

NameTypeReqDescription
cnpj_orgao––CNPJ do órgão comprador (14 dígitos, com ou sem pontuação).
codigo_uasg––Código da UASG compradora (6 dígitos).
data_final_resultadostringyesData final do resultado/homologação (YYYY-MM-DD).
data_inicial_resultadostringyesData inicial do resultado/homologação (YYYY-MM-DD).
ni_fornecedor––Número de identificação do fornecedor vencedor (CNPJ ou CPF, só dígitos). Use para levantar tudo que um fornecedor ganhou no período.
paginainteger–Página de resultados (1-based). Padrão 1.
porte_fornecedor––Código do porte do fornecedor (ex.: 1=ME, 2=EPP, 3=Demais). Preenchimento irregular na origem — trate ausência como desconhecido.
situacao_resultado––Código da situação do resultado. 1 = Informado. Use para descartar resultado cancelado antes de calcular média ou mediana de preço.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.
valor_total_max––Valor total homologado máximo (R$).
valor_total_min––Valor total homologado mínimo (R$). Combinado com a janela de datas, monta fila de auditoria por materialidade.
valor_unitario_max––Valor unitário homologado máximo (R$).
valor_unitario_min––Valor unitário homologado mínimo (R$).

Structured output declared, but exposes no named fields.

No examples provided.

compras_contratacoes_14133_resultados_por_contratacao ~271

Lista resultados (homologações) de uma contratação 14.133 específica. Endpoint `/modulo-contratacoes/3.1_consultarResultadoItensContratacoes...`. Aceita `idCompra` ou número de controle PNCP, conforme `tipo_identificador`.

NameTypeReqDescription
id_contratacaostringyesIdentificador da contratação. Aceita dois formatos, conforme `tipo_identificador`: o `idCompra` (17 dígitos, campo `idCompra` das listagens, ex.: '15813206001272025') ou o número de controle PNCP (al…
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.
tipo_identificadorstring–Qual identificador está sendo passado em `id_contratacao`: 'idCompra' (padrão) ou 'numeroControlePNCPCompra'. O upstream rejeita qualquer outro valor com HTTP 500.

Structured output declared, but exposes no named fields.

No examples provided.

compras_contrato_comprasnet_consultar ~103

Consulta detalhe completo de um contrato no Comprasnet (/api/contrato/id/{id}). Devolve contrato com sub-recursos embutidos. CPFs mascarados por LGPD. Cache 15 min.

NameTypeReqDescription
id_contratointegeryesID interno do contrato no Comprasnet (pode ser diferente do id no Dados Abertos). Obtenha em `compras_contrato_comprasnet_por_uasg`.

Structured output declared, but exposes no named fields.

No examples provided.

compras_contrato_comprasnet_por_uasg ~214

Lista contratos de uma UASG no Comprasnet. **Atenção**: o upstream `/api/contrato/ug/{uasg}` não suporta paginação — devolve a lista completa em uma resposta única (pode passar de 1 MB). Esta tool fatia o resultado client-side conforme `pagina + tamanho_pagina` para evitar inundar o LLM. Cache 15 min do payload completo; fatiamento por chamada é barato.

NameTypeReqDescription
ativosboolean–Se True (padrão), lista apenas contratos ativos. Set False para incluir inativos via /api/contrato/inativo/ug/{uasg}.
codigo_uasgintegeryesCódigo UASG (5-6 dígitos).
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.

Structured output declared, but exposes no named fields.

No examples provided.

compras_contrato_cronograma ~107

Lista cronograma financeiro (/api/contrato/{id}/cronograma). Paginação client-side — alguns contratos têm 200+ entradas mensais. Cache 15 min.

NameTypeReqDescription
id_contratointegeryesID do contrato no Comprasnet.
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.

Structured output declared, but exposes no named fields.

No examples provided.

compras_contrato_empenhos ~99

Lista empenhos do contrato (/api/contrato/{id}/empenhos). Paginação client-side. Cache 15 min.

NameTypeReqDescription
id_contratointegeryesID do contrato no Comprasnet.
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.

Structured output declared, but exposes no named fields.

No examples provided.

compras_contrato_faturas ~155

Lista NFs/faturas (/api/contrato/{id}/faturas). Paginação client-side. Cache 15 min. **Atenção LGPD**: o campo `infcomplementar` (texto livre) pode conter nome de servidor + matrícula SIAPE não estruturados — o mascaramento LGPD só cobre CPFs em campos nominais (cpf, niResponsavel, etc.).

NameTypeReqDescription
id_contratointegeryesID do contrato no Comprasnet.
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.

Structured output declared, but exposes no named fields.

No examples provided.

compras_contrato_garantias ~100

Lista garantias contratuais (/api/contrato/{id}/garantias). Paginação client-side. Cache 15 min.

NameTypeReqDescription
id_contratointegeryesID do contrato no Comprasnet.
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.

Structured output declared, but exposes no named fields.

No examples provided.

compras_contrato_historico_aditivos ~108

Lista aditivos do contrato (/api/contrato/{id}/historico). Paginação client-side (upstream não pagina). Cache 15 min do payload completo.

NameTypeReqDescription
id_contratointegeryesID do contrato no Comprasnet.
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.

Structured output declared, but exposes no named fields.

No examples provided.

compras_contrato_ocorrencias ~110

Lista ocorrências/penalidades (/api/contrato/{id}/ocorrencias). Indicador-chave da confiabilidade do fornecedor. Paginação client-side. Cache 15 min.

NameTypeReqDescription
id_contratointegeryesID do contrato no Comprasnet.
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.

Structured output declared, but exposes no named fields.

No examples provided.

compras_contrato_publicacoes ~97

Lista publicações DOU (/api/contrato/{id}/publicacoes). Paginação client-side. Cache 15 min.

NameTypeReqDescription
id_contratointegeryesID do contrato no Comprasnet.
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.

Structured output declared, but exposes no named fields.

No examples provided.

compras_contrato_responsaveis ~116

Lista fiscais/gestores (/api/contrato/{id}/responsaveis). CPFs mascarados por LGPD (`123.***.***-45`). Paginação client-side. Cache 15 min.

NameTypeReqDescription
id_contratointegeryesID do contrato no Comprasnet.
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.

Structured output declared, but exposes no named fields.

No examples provided.

compras_contratos_consultar ~164

Consulta um contrato no Dados Abertos (endpoint 1.1). O upstream exige `codigo + tipo`. Tipos aceitos pela API: `idCompra` e `numeroControlePncpContrato`. Cache 15 min.

NameTypeReqDescription
codigostringyesIdentificador do contrato no upstream — interpretação depende de `tipo`. Para tipo='idCompra' é o id da compra (string numérica). Para tipo='numeroControlePncpContrato' é o número de controle PNCP co…
tipostring–Como interpretar `codigo`: 'idCompra' (id interno da compra) ou 'numeroControlePncpContrato' (identificador PNCP).

Structured output declared, but exposes no named fields.

No examples provided.

compras_contratos_item_consultar ~325

Lista os itens de um contrato específico, pelo identificador. Endpoint `/modulo-contratos/2.1_consultarContratosItem_Id`. Use quando você já tem o contrato em mãos e quer só os itens dele. `compras_contratos_itens_listar` exige órgão mais janela de vigência e devolve os itens de todos os contratos do recorte — chegar a um contrato específico por ali significa paginar centenas de linhas irrelevantes. O `codigo` aceita o `idCompra` numérico (padrão) ou o número de controle PNCP do contrato, conforme `tipo_identificador`. Qualquer outro valor de tipo faz o upstream devolver HTTP 500. **Atenção ao somar valores**: pode haver mais de uma linha por item, uma por versão/alteração contratual. Confira o campo de exclusão antes de agregar. Cache 15 min.

NameTypeReqDescription
codigostringyesIdentificador do contrato: o `idCompra` numérico ou o número de controle PNCP do contrato, conforme `tipo_identificador`.
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.
tipo_identificadorstring–Qual identificador está em `codigo`: 'idCompra' (padrão) ou 'numeroControlePncpContrato'. Outro valor devolve HTTP 500.

Structured output declared, but exposes no named fields.

No examples provided.

compras_contratos_itens_listar ~211

Lista itens de contratos (endpoint 2). Upstream exige `codigoOrgao + dataVigenciaInicialMin/Max`. Cache 15 min.

NameTypeReqDescription
codigo_item––Código CATMAT ou CATSER (opcional).
codigo_orgaointegeryesCódigo do órgão (obrigatório).
data_vigencia_inicial_maxstringyesData máxima de início de vigência (YYYY-MM-DD).
data_vigencia_inicial_minstringyesData mínima de início de vigência (YYYY-MM-DD). Janela ≤ 365 dias.
ni_fornecedor––CPF/CNPJ do fornecedor.
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.
tipo_item––Tipo do item: 'M' (material) ou 'S' (serviço).

Structured output declared, but exposes no named fields.

No examples provided.

compras_contratos_listar ~321

Lista contratos federais (Dados Abertos /modulo-contratos/1). O upstream exige `codigoOrgao` + janela `dataVigenciaInicialMin/Max` (≤ 365 dias). Para sub-recursos detalhados (garantias, faturas, ocorrências), use `compras_contrato_*` que consulta o Comprasnet. Cache 15 min.

NameTypeReqDescription
codigo_modalidade_compra––Modalidade da compra que originou o contrato.
codigo_orgaointegeryesCódigo do órgão (obrigatório no upstream). Use `compras_orgao_listar` para descobrir.
codigo_unidade_gestora––Filtra pela UASG gestora do contrato.
data_vigencia_inicial_maxstringyesData MÁXIMA de início de vigência (YYYY-MM-DD).
data_vigencia_inicial_minstringyesData MÍNIMA de início de vigência do contrato (YYYY-MM-DD). Janela max ≤ 365 dias até data_vigencia_inicial_max.
ni_fornecedor––CPF/CNPJ do fornecedor (apenas dígitos). Opcional.
numero_contrato––Filtra por número do contrato (ex.: '00031/2015').
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.

Structured output declared, but exposes no named fields.

No examples provided.

compras_contratos_listar_por_fim_vigencia ~208

Lista contratos com vencimento na janela informada (endpoint 1.2). Inventário do que precisa renovar. Upstream exige `codigoOrgao` + `dataVigenciaFinalMin/Max` (≤ 365 dias). Cache 15 min.

NameTypeReqDescription
codigo_orgaointegeryesCódigo do órgão (obrigatório).
codigo_unidade_gestora––UASG gestora (opcional).
data_vigencia_final_maxstringyesData MÁXIMA de fim de vigência (YYYY-MM-DD).
data_vigencia_final_minstringyesData MÍNIMA de fim de vigência (YYYY-MM-DD). Janela ≤ 365 dias.
paginainteger–Página de resultados (1-based). Padrão 1.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.

Structured output declared, but exposes no named fields.

No examples provided.

compras_detalhar_preco_material ~444

Lista as compras individuais de um item CATMAT — **sem valor de preço**. Endpoint: `/modulo-pesquisa-preco/2_consultarMaterialDetalhe`. **⚠️ Esta tool não devolve preço.** Até a v0.3.12 a docstring prometia "valor unitário homologado"; auditoria de 2026-08-05 mostrou que o DTO upstream (`FtPesqPrecoCompraMaterialDetalheDTO`) tem exatamente 7 campos e nenhum deles é valor: idCompra, idItemCompra, numeroItemCompra, codigoItemCatalogo, objetoCompra, descricaoDetalhadaItem, dataAtualizacaoFato Confirmado nos dois sentidos: chamada crua ao upstream (fora da camada do MCP) devolve as mesmas 7 chaves, e o contrato OpenAPI oficial declara as mesmas 7. Ou seja: **não somos nós que filtramos** — o campo nunca existiu nesta rota. A rota 4 (serviço detalhe) tem DTO idêntico. **Para preço unitário de material use `compras_pesquisar_preco_material`**, que devolve `precoUnitario`, `quantidade`, `dataCompra` e fornecedor por compra — é a fonte correta para a amostragem da IN SEGES/ME 65/2021. Use esta tool apenas para: descrição detalhada do item como comprado, objeto da compra e rastreio do `idCompra` para cruzar com outras bases. Cache 10 min.

NameTypeReqDescription
codigo_item_catalogointegeryesCódigo CATMAT do material. Inteiro 4-8 dígitos. Ex.: 460789.
data_fim––Data final da compra (YYYY-MM-DD). Quando omitida, a API usa a data atual.
data_inicio––Data inicial da compra (YYYY-MM-DD). Quando omitida, a API usa o início do ano corrente.
paginainteger–Página (1-based).
tamanho_paginainteger–Registros por página.

Structured output declared, but exposes no named fields.

No examples provided.

compras_detalhar_preco_servico ~244

Lista as compras individuais de um serviço CATSER — **sem valor de preço**. Endpoint: `/modulo-pesquisa-preco/4_consultarServicoDetalhe`. **⚠️ Esta tool não devolve preço** (verificado 2026-08-05): o DTO upstream é idêntico ao da rota 2 — idCompra, idItemCompra, numeroItemCompra, codigoItemCatalogo, objetoCompra, descricaoDetalhadaItem, dataAtualizacaoFato. Nenhum campo de valor. **Para preço unitário de serviço use `compras_pesquisar_preco_servico`**, que devolve `precoUnitario` e fornecedor por compra. Cache 10 min.

NameTypeReqDescription
codigo_item_catalogointegeryesCódigo CATSER do serviço. Inteiro 4-6 dígitos. Ex.: 27332.
data_fim––Data final (YYYY-MM-DD).
data_inicio––Data inicial (YYYY-MM-DD).
paginainteger–Página (1-based).
tamanho_paginainteger–Registros por página.

Structured output declared, but exposes no named fields.

No examples provided.

compras_fornecedor_cnpj_receita ~232

Dados públicos do CNPJ na Receita Federal (via BrasilAPI/MinhaReceita). Retorna razão social, nome fantasia, situação cadastral, CNAE primário e secundários, QSA (sócios), capital social, natureza jurídica, porte, endereço e datas de início de atividade e da situação cadastral. **Quando usar**: complemento do `compras_perfil_fornecedor_completo` para due diligence (avaliar porte, sócios, CNAEs vs objeto da licitação). Os dados são da Receita; este MCP **não** consulta sanções aqui — para isso use as tools de sanção (CEIS/CNEP/CEPIM/CEAF). Cache 24h. Em caso de 404 ou erro upstream, retorna `encontrado=false` com diagnóstico em `_erro` em vez de propagar exception.

NameTypeReqDescription
cnpjstringyesCNPJ a consultar (14 dígitos, com ou sem pontuação). Usa BrasilAPI por padrão; trocável via env `CNPJ_PROVIDER=minhareceita`.

Structured output declared, but exposes no named fields.

No examples provided.

compras_fornecedor_consultar ~92

Consulta cadastro de um fornecedor pelo CNPJ ou CPF. Endpoint Dados Abertos `/modulo-fornecedor/1_consultarFornecedor`. Devolve razão social, CNAE, porte da empresa, natureza jurídica. Cache 1h.

NameTypeReqDescription
cnpj_cpfstringyesCNPJ (14 dígitos) ou CPF (11 dígitos) do fornecedor, com ou sem pontuação.

Structured output declared, but exposes no named fields.

No examples provided.

compras_fornecedor_contratos_por_item ~108

Lista contratos e empenhos por itens (CATMAT/CATSER) no Comprasnet. Endpoint `POST /api/comprasnet/contratosempenhos`. Útil para descobrir quem fornece esses itens hoje no governo (potenciais participantes em novos certames). Cache 1h.

NameTypeReqDescription
codigos_catmat––Códigos CATMAT a buscar.
codigos_catser––Códigos CATSER a buscar.

Structured output declared, but exposes no named fields.

No examples provided.

compras_fornecedor_impedimentos_por_itens ~139

Consulta impedimentos no Comprasnet por lista de itens (CATMAT/CATSER). Endpoint `POST /api/comprasnet/compras/impedimentos`. Retorna fornecedores impedidos de participar de contratações dos itens informados (sanções aplicadas no SICAF). Essencial antes de homologar pregões eletrônicos. Cache 1h.

NameTypeReqDescription
codigos_catmat––Lista de códigos CATMAT (materiais) a verificar. Use junto com codigos_catser ou separadamente.
codigos_catser––Lista de códigos CATSER (serviços).

Structured output declared, but exposes no named fields.

No examples provided.

compras_fornecedor_listar ~233

Lista fornecedores no Compras.gov.br com filtros estruturais. Endpoint Dados Abertos `/modulo-fornecedor/1_consultarFornecedor`. Use para mapear fornecedores potenciais por porte/CNAE — ex.: levantar todas as MEs com CNAE de TI. Cache 1h.

NameTypeReqDescription
ativoboolean–True (default) para listar apenas ativos, False para apenas inativos.
cnpj––Filtrar por CNPJ (14 dígitos).
codigo_cnae––Código CNAE para filtrar por atividade.
cpf––Filtrar por CPF (11 dígitos).
natureza_juridica––Código da natureza jurídica.
paginainteger–Página de resultados (1-based). Padrão 1.
porte_empresa––Código de porte da empresa (1=ME, 2=EPP, 3=Demais). Consulte os códigos no manual do Compras.gov.br.
tamanho_paginainteger–Quantidade de registros por página. Padrão 50, máximo 500.

Structured output declared, but exposes no named fields.

No examples provided.

compras_healthcheck ~581

Diz, em ~30 segundos, o que está de pé neste servidor **agora**. Estende `compras_versao`: além de versão e configuração, dispara um probe paralelo (timeout curto) contra as rotas upstream reais e devolve a situação por módulo funcional. Por que existe: em 04/08/2026 a tool de pesquisa de preço de material estava quebrada havia semanas e ninguém sabia — a SEGES trocou a assinatura da rota sem versionar. A descoberta veio de um analista tentando usar a ferramenta. Antes de uma demonstração ou de instruir processo, rode isto: o objetivo é que a descoberta aconteça aqui, não no palco. Args: profundidade: `basico` responde só versão/config (instantâneo); `rotas` (padrão) executa o probe upstream. modulo: restringe o probe a um módulo (ex.: `pesquisa_preco`, `atas`, `pncp`). Sem isso, testa todos. Situação por módulo: - `ok`: todas as rotas responderam com os campos esperados. - `degradado`: alguma rota caiu, ou respondeu 200 **sem** os campos do contrato (ex.: rota de preço sem `precoUnitario`) — o modo de falha silencioso que só o contrato de campos pega. - `fora`: todas as rotas testáveis do módulo falharam. - `pulado`: faltou credencial (ex.: TRANSPARENCIA_API_KEY). Rota que estoura o relógio é reexecutada em série antes de virar `fora`: com dezenas de rotas em paralelo, uma rota apenas lenta seria reportada como quebrada. Quando passa na segunda tentativa, o campo `problemas` do módulo registra "lenta sob carga" em vez de escondê-lo. O campo `pronto_para_uso` é o resumo honesto: `False` quando existe qualquer módulo fora ou degradado.

NameTypeReqDescription
modulo––Restringe o probe a um módulo funcional: 'pesquisa_preco', 'catalogo', 'organizacoes', 'atas', 'contratacoes', 'contratos', 'fornecedores', 'indicadores', 'legado', 'planejamento', 'pncp', 'sancoes',…
profundidadestring–'rotas' (padrão) testa as rotas upstream reais em paralelo e devolve situação por módulo (ok/degradado/fora) em ~30s. 'basico' devolve só versão e configuração, sem tocar a rede.

Structured output declared, but exposes no named fields.

No examples provided.

compras_indicadores_consolidados ~150

Métricas operacionais consolidadas da API Dados Abertos. Endpoint `/modulo-indicadores/1_consultarIndicadoresConsolidados`. Retorna: total de serviços disponíveis, total de requisições no período, percentual de sucesso, latência média (ms), volume total e médio de download (GB). Útil para diagnóstico/observabilidade, **não** para indicadores de mercado público (ver docstring do módulo). Cache 1h.

NameTypeReqDescription
paginainteger–Página (1-based). Padrão 1.
tamanho_paginainteger–Registros por página (default 50, máximo 500).

Structured output declared, but exposes no named fields.

No examples provided.

Install

How do I install the MCP Compras.gov.br server?

MCP Compras.gov.br runs locally as a PyPI package, launched with uvx compras-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · compras-mcp

# add to Claude Code
claude mcp add opedrosoares-mcp-compras -- uvx compras-mcp
Common questions

What is the MCP Compras.gov.br server?

MCP Compras.gov.br is listed in the public MCP registry as io.github.opedrosoares/mcp-compras. Preços, atas, contratos e sanções das APIs públicas de compras do governo brasileiro. This page covers its PyPI package (compras-mcp).

What tools does the MCP Compras.gov.br server expose?

MCP Compras.gov.br exposes 100 tools: compras_aggregate_contratacoes_por_periodo, compras_comparar_periodos_contratacoes, compras_arp_listar, compras_arp_consultar, compras_arp_por_fim_vigencia, and 95 more. Their descriptions and schemas cost roughly 23,943 tokens of context every time the server is loaded.

Is the MCP Compras.gov.br server still maintained?

MCP Compras.gov.br is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.