Preços, atas, contratos e sanções das APIs públicas de compras do governo brasileiro
MCP Compras.gov.br — Model Context Protocol (MCP) Server
Servidor MCP que reúne, em um único pacote, as APIs públicas do ecossistema Compras.gov.br, voltado a analistas e técnicos das áreas de planejame. O projeto trata de preços, atas, contratos e sanções relacionados a compras do governo brasileiro, com foco em transparência e dados abertos.
🛠️ Key Features
Integra APIs públicas do ecossistema Compras.gov.br
Agrega informações de preços, atas, contratos e sanções
Implementação com FastMCP (Python)
🚀 Use Cases
Pesquisa e consulta de preços no contexto de contratações públicas
Acesso a atas, contratos e sanções para apoio a licitações e conformidade
Uso em fluxos de dados abertos e transparência
⚡ Developer Benefits
Base em Model Context Protocol (MCP)
Projeto identifica compatibilidade com Python 3.11+
Quantidade de ferramentas: 100
⚠️ Limitations
O trecho do README disponibilizado está truncado (“planejame”), limitando detalhes operacionais adicionais.
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.
Tamanho de cada bucket da série: 'dia', 'semana', 'mes' ou 'ano'.
metrica
string
optional
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
any
optional
UF opcional.
esfera
any
optional
Filtro de esfera (federal/estadual/municipal/distrital). Só tem efeito no modo 'valor_*' (precisa varrer páginas).
Raw schema
{
"type": "object",
"properties": {
"data_inicial": {
"description": "Data inicial da janela de agregação (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"data_final": {
"description": "Data final da janela de agregação (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"codigo_modalidade": {
"description": "Modalidade PNCP a agregar. Comuns: 6=Pregão Eletrônico, 8=Dispensa, 9=Inexigibilidade, 4=Concorrência Eletrônica.",
"type": "integer"
},
"granularidade": {
"default": "mes",
"description": "Tamanho de cada bucket da série: 'dia', 'semana', 'mes' ou 'ano'.",
"enum": [
"dia",
"semana",
"mes",
"ano"
],
"type": "string"
},
"metrica": {
"default": "count",
"description": "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.",
"enum": [
"count",
"valor_estimado",
"valor_homologado"
],
"type": "string"
},
"uf": {
"anyOf": [
{
"maxLength": 2,
"minLength": 2,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "UF opcional."
},
"esfera": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtro de esfera (federal/estadual/municipal/distrital). Só tem efeito no modo 'valor_*' (precisa varrer páginas)."
}
},
"required": [
"data_inicial",
"data_final",
"codigo_modalidade"
]
}
compras_comparar_periodos_contratacoes
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?"_.
Parameters10
periodo_a_inicio
string
required
Data inicial do período A (YYYY-MM-DD).
periodo_a_fim
string
required
Data final do período A (YYYY-MM-DD).
periodo_b_inicio
string
required
Data inicial do período B (YYYY-MM-DD).
periodo_b_fim
string
required
Data final do período B (YYYY-MM-DD).
codigo_modalidade
integer
required
Modalidade PNCP a comparar. Comuns: 6=Pregão Eletrônico, 8=Dispensa, 4=Concorrência Eletrônica.
label_a
string
optional
Rótulo amigável do período A (ex.: 'Jun/2024').
label_b
string
optional
Rótulo amigável do período B (ex.: 'Jun/2025').
metrica
string
optional
Métrica a comparar: 'count' (rápido) ou 'valor_estimado' / 'valor_homologado' (paginado).
uf
any
optional
UF opcional.
esfera
any
optional
Esfera federativa. Requer métrica de valor (modo paginado).
Raw schema
{
"type": "object",
"properties": {
"periodo_a_inicio": {
"description": "Data inicial do período A (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"periodo_a_fim": {
"description": "Data final do período A (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"periodo_b_inicio": {
"description": "Data inicial do período B (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"periodo_b_fim": {
"description": "Data final do período B (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"codigo_modalidade": {
"description": "Modalidade PNCP a comparar. Comuns: 6=Pregão Eletrônico, 8=Dispensa, 4=Concorrência Eletrônica.",
"type": "integer"
},
"label_a": {
"default": "Periodo A",
"description": "Rótulo amigável do período A (ex.: 'Jun/2024').",
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"label_b": {
"default": "Periodo B",
"description": "Rótulo amigável do período B (ex.: 'Jun/2025').",
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"metrica": {
"default": "count",
"description": "Métrica a comparar: 'count' (rápido) ou 'valor_estimado' / 'valor_homologado' (paginado).",
"enum": [
"count",
"valor_estimado",
"valor_homologado"
],
"type": "string"
},
"uf": {
"anyOf": [
{
"maxLength": 2,
"minLength": 2,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "UF opcional."
},
"esfera": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Esfera federativa. Requer métrica de valor (modo paginado)."
}
},
"required": [
"periodo_a_inicio",
"periodo_a_fim",
"periodo_b_inicio",
"periodo_b_fim",
"codigo_modalidade"
]
}
compras_arp_listar
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.
Parameters7
data_vigencia_inicial_min
string
required
Data 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.
data_vigencia_inicial_max
string
required
Data 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.
codigo_unidade_gerenciadora
any
optional
Filtra ARPs pela UASG gerenciadora (5-6 dígitos).
codigo_modalidade_compra
any
optional
Filtra por modalidade da compra que originou a ata.
numero_ata_registro_preco
any
optional
Filtra por número da ata (ex.: '00001/2024').
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Raw schema
{
"type": "object",
"properties": {
"data_vigencia_inicial_min": {
"description": "Data 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.",
"format": "date",
"type": "string"
},
"data_vigencia_inicial_max": {
"description": "Data 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.",
"format": "date",
"type": "string"
},
"codigo_unidade_gerenciadora": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtra ARPs pela UASG gerenciadora (5-6 dígitos)."
},
"codigo_modalidade_compra": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtra por modalidade da compra que originou a ata."
},
"numero_ata_registro_preco": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtra por número da ata (ex.: '00001/2024')."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"data_vigencia_inicial_min",
"data_vigencia_inicial_max"
]
}
compras_arp_consultar
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.
Parameters1
numero_controle_pncp_ata
string
required
Identificador 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/2024-000006`. Retornado em `compras_arp_por_fim_vigencia` no campo `numeroControlePncpAta`. NÃO confundir com `numeroControlePncpCompra` (formato sem o sufixo).
Raw schema
{
"type": "object",
"properties": {
"numero_controle_pncp_ata": {
"description": "Identificador 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/2024-000006`. Retornado em `compras_arp_por_fim_vigencia` no campo `numeroControlePncpAta`. NÃO confundir com `numeroControlePncpCompra` (formato sem o sufixo).",
"type": "string"
}
},
"required": [
"numero_controle_pncp_ata"
]
}
compras_arp_por_fim_vigencia
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.
Parameters5
data_vigencia_final_min
string
required
Data MÍNIMA de fim de vigência (YYYY-MM-DD). Obrigatório. Janela max ≤ 365 dias.
data_vigencia_final_max
string
required
Data MÁXIMA de fim de vigência (YYYY-MM-DD). Obrigatório.
codigo_unidade_gerenciadora
any
optional
UASG gerenciadora (opcional).
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Raw schema
{
"type": "object",
"properties": {
"data_vigencia_final_min": {
"description": "Data MÍNIMA de fim de vigência (YYYY-MM-DD). Obrigatório. Janela max ≤ 365 dias.",
"format": "date",
"type": "string"
},
"data_vigencia_final_max": {
"description": "Data MÁXIMA de fim de vigência (YYYY-MM-DD). Obrigatório.",
"format": "date",
"type": "string"
},
"codigo_unidade_gerenciadora": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "UASG gerenciadora (opcional)."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"data_vigencia_final_min",
"data_vigencia_final_max"
]
}
compras_arp_buscar_por_objeto
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).
Parameters5
palavra_chave
string
required
Termo a procurar no campo `objetoCompra` das ARPs (case-insensitive, com normalização básica de acentos). Exemplos: 'notebook', 'uniformes', 'limpeza'.
data_vigencia_final_min
string
required
Limite mínimo do fim de vigência (YYYY-MM-DD). Tipicamente hoje para 'apenas vigentes'.
data_vigencia_final_max
string
required
Limite máximo do fim de vigência (YYYY-MM-DD).
max_paginas_varridas
integer
optional
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_resultados
integer
optional
Quantos matches no máximo retornar (curto-circuita a varredura).
Raw schema
{
"type": "object",
"properties": {
"palavra_chave": {
"description": "Termo a procurar no campo `objetoCompra` das ARPs (case-insensitive, com normalização básica de acentos). Exemplos: 'notebook', 'uniformes', 'limpeza'.",
"minLength": 3,
"type": "string"
},
"data_vigencia_final_min": {
"description": "Limite mínimo do fim de vigência (YYYY-MM-DD). Tipicamente hoje para 'apenas vigentes'.",
"format": "date",
"type": "string"
},
"data_vigencia_final_max": {
"description": "Limite máximo do fim de vigência (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"max_paginas_varridas": {
"default": 10,
"description": "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.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"max_resultados": {
"default": 20,
"description": "Quantos matches no máximo retornar (curto-circuita a varredura).",
"maximum": 100,
"minimum": 1,
"type": "integer"
}
},
"required": [
"palavra_chave",
"data_vigencia_final_min",
"data_vigencia_final_max"
]
}
compras_arp_itens_listar
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.
Parameters8
data_vigencia_inicial_min
string
required
Data mínima de início de vigência (YYYY-MM-DD).
data_vigencia_inicial_max
string
required
Data máxima de início de vigência (YYYY-MM-DD).
codigo_item
any
optional
Filtra por código CATMAT ou CATSER.
tipo_item
any
optional
Tipo do item: 'M' (material) ou 'S' (serviço).
ni_fornecedor
any
optional
CPF/CNPJ do fornecedor (apenas dígitos).
codigo_unidade_gerenciadora
any
optional
UASG gerenciadora (opcional).
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
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.
Parameters5
numero_ata
string
required
Número simples da ata (ex.: '00001/2024'). Distinto do `numeroControlePncpAta` — use o campo retornado em `compras_arp_listar` ou `compras_arp_itens_listar`.
unidade_gerenciadora
integer
required
Código da UASG gerenciadora da ata.
numero_item
integer
required
Número do item dentro da ata.
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Raw schema
{
"type": "object",
"properties": {
"numero_ata": {
"description": "Número simples da ata (ex.: '00001/2024'). Distinto do `numeroControlePncpAta` — use o campo retornado em `compras_arp_listar` ou `compras_arp_itens_listar`.",
"type": "string"
},
"unidade_gerenciadora": {
"description": "Código da UASG gerenciadora da ata.",
"type": "integer"
},
"numero_item": {
"description": "Número do item dentro da ata.",
"type": "integer"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"numero_ata",
"unidade_gerenciadora",
"numero_item"
]
}
compras_arp_saldo_item
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).
Parameters4
numero_ata
string
required
Número simples da ata (ex.: '00001/2024').
unidade_gerenciadora
integer
required
Código da UASG gerenciadora da ata.
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Raw schema
{
"type": "object",
"properties": {
"numero_ata": {
"description": "Número simples da ata (ex.: '00001/2024').",
"type": "string"
},
"unidade_gerenciadora": {
"description": "Código da UASG gerenciadora da ata.",
"type": "integer"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"numero_ata",
"unidade_gerenciadora"
]
}
compras_arp_adesoes_item
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.
Parameters5
numero_ata
string
required
Número simples da ata (ex.: '00001/2024').
unidade_gerenciadora
integer
required
Código da UASG gerenciadora da ata.
numero_item
integer
required
Número do item dentro da ata.
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Raw schema
{
"type": "object",
"properties": {
"numero_ata": {
"description": "Número simples da ata (ex.: '00001/2024').",
"type": "string"
},
"unidade_gerenciadora": {
"description": "Código da UASG gerenciadora da ata.",
"type": "integer"
},
"numero_item": {
"description": "Número do item dentro da ata.",
"type": "integer"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"numero_ata",
"unidade_gerenciadora",
"numero_item"
]
}
compras_pncp_atas_listar
Lista atas registradas no PNCP no período (federal + estadual + municipal).
Endpoint PNCP `/v1/atas`. Permite encontrar atas de qualquer ente da
federação — mais amplo que Dados Abertos (só federal SISG).
Cache 15 min.
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.
Parameters2
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
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.
Parameters3
codigo_grupo
any
optional
Restringe a classes pertencentes a este grupo CATMAT. Se omitido, lista classes de todos os grupos.
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Raw schema
{
"type": "object",
"properties": {
"codigo_grupo": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Restringe a classes pertencentes a este grupo CATMAT. Se omitido, lista classes de todos os grupos."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
}
}
compras_catmat_consultar
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.
Parameters1
codigo_item
integer
required
Código numérico do item no CATMAT (Catálogo de Materiais). Inteiro de 4 a 8 dígitos. Exemplo: 460789.
Raw schema
{
"type": "object",
"properties": {
"codigo_item": {
"description": "Código numérico do item no CATMAT (Catálogo de Materiais). Inteiro de 4 a 8 dígitos. Exemplo: 460789.",
"type": "integer"
}
},
"required": [
"codigo_item"
]
}
compras_catmat_listar_pdms
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.
Parameters6
codigo_classe
any
optional
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
any
optional
Código do grupo CATMAT (2 dígitos) para listar seus PDMs.
codigo_pdm
any
optional
Código de um PDM específico.
apenas_ativos
any
optional
Se `true`, só PDMs com status ativo no catálogo.
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Raw schema
{
"type": "object",
"properties": {
"codigo_classe": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "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": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código do grupo CATMAT (2 dígitos) para listar seus PDMs."
},
"codigo_pdm": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código de um PDM específico."
},
"apenas_ativos": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Se `true`, só PDMs com status ativo no catálogo."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
}
}
compras_catmat_buscar
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).
Parameters6
termo
string
required
Termo de busca textual (descrição do material/serviço). Aceita fragmento — a API faz match parcial. Ex.: 'cadeira ergonomica'.
codigo_grupo
any
optional
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_classe
any
optional
Filtro estrutural por classe CATMAT (4 dígitos). Use em conjunto com `codigo_grupo` para focar a busca.
codigo_pdm
any
optional
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`.
pagina
integer
optional
Página (1-based).
tamanho_pagina
integer
optional
Registros por página.
Raw schema
{
"type": "object",
"properties": {
"termo": {
"description": "Termo de busca textual (descrição do material/serviço). Aceita fragmento — a API faz match parcial. Ex.: 'cadeira ergonomica'.",
"type": "string"
},
"codigo_grupo": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "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_classe": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtro estrutural por classe CATMAT (4 dígitos). Use em conjunto com `codigo_grupo` para focar a busca."
},
"codigo_pdm": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "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`."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
}
},
"required": [
"termo"
]
}
compras_catser_listar_secoes
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.
Parameters2
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
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.
Parameters1
codigo_item
integer
required
Código numérico do item no CATSER (Catálogo de Serviços). Inteiro de 4 a 6 dígitos. Exemplo: 27332.
Raw schema
{
"type": "object",
"properties": {
"codigo_item": {
"description": "Código numérico do item no CATSER (Catálogo de Serviços). Inteiro de 4 a 6 dígitos. Exemplo: 27332.",
"type": "integer"
}
},
"required": [
"codigo_item"
]
}
compras_pesquisar_precos_para_etp
Agrega preços praticados aplicando metodologia IN SEGES/ME 65/2021.
Composição: percorre `compras_pesquisar_preco_material` ou `_servico`
em até `max_paginas`, agrega os valores unitários e calcula:
mediana, média, desvio padrão, mínimo, máximo, quartis (Q1, Q3) e
descarte de outliers por IQR (1.5×IQR — Tukey).
Saída pronta para colagem em ETP: lista detalhada + sumário estatístico
+ amostra recomendada (sem outliers). Cache 10 min.
Parameters5
tipo
string
required
Tipo do item: 'material' (consulta CATMAT) ou 'servico' (consulta CATSER).
codigo_item_catalogo
integer
required
Código CATMAT (material) ou CATSER (serviço).
periodo_meses
integer
optional
Janela de pesquisa em meses contados de hoje para trás. Default 12 (prazo recomendado pela IN SEGES/ME 65/2021 art. 5).
uf
any
optional
Filtro opcional por UF (ex.: 'DF').
max_paginas
integer
optional
Número máximo de páginas a percorrer ao agregar. Cada página tem 500 registros. Default 5 (até 2500 contratações). Aumente para amostras maiores.
Raw schema
{
"type": "object",
"properties": {
"tipo": {
"description": "Tipo do item: 'material' (consulta CATMAT) ou 'servico' (consulta CATSER).",
"enum": [
"material",
"servico"
],
"type": "string"
},
"codigo_item_catalogo": {
"description": "Código CATMAT (material) ou CATSER (serviço).",
"type": "integer"
},
"periodo_meses": {
"default": 12,
"description": "Janela de pesquisa em meses contados de hoje para trás. Default 12 (prazo recomendado pela IN SEGES/ME 65/2021 art. 5).",
"type": "integer"
},
"uf": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtro opcional por UF (ex.: 'DF')."
},
"max_paginas": {
"default": 5,
"description": "Número máximo de páginas a percorrer ao agregar. Cada página tem 500 registros. Default 5 (até 2500 contratações). Aumente para amostras maiores.",
"type": "integer"
}
},
"required": [
"tipo",
"codigo_item_catalogo"
]
}
compras_checar_sancoes_fornecedor
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.
Parameters1
cnpj
string
required
CNPJ do fornecedor (14 dígitos, com ou sem pontuação).
Raw schema
{
"type": "object",
"properties": {
"cnpj": {
"description": "CNPJ do fornecedor (14 dígitos, com ou sem pontuação).",
"type": "string"
}
},
"required": [
"cnpj"
]
}
compras_montar_dossie_arp
Dossiê completo de uma ARP em uma chamada.
Composição: cabeçalho via `/modulo-arp/1.1` (id PNCP) e — se `numero_item`
informado — saldo (4), adesões (5) e unidades participantes (3) em
paralelo. Os 3 últimos endpoints usam a chave composta
`numeroAta + unidadeGerenciadora`.
Os 3 IDs vêm naturalmente do retorno de `compras_arp_listar` ou
`compras_arp_itens_listar` (campos: `numeroControlePncpAta`,
`numeroAta`, `unidadeGerenciadora`, `numeroItem`). Cache 10 min.
Quando `numero_controle_pncp_ata` vem no formato de **compra** (sem
sufixo `-NNNNNN`), devolvemos diagnóstico explícito antes de bater
no upstream — caminho que retornava `cabecalho: null` silencioso.
Parameters4
numero_controle_pncp_ata
string
required
Identificador PNCP completo da **ata** (formato `cnpj14-1-sequencial/ano-NNNNNN`, com sufixo numerando a ata SRP dentro da compra). Ex.: `00394452000103-1-004729/2024-000006`. NÃO confundir com ID de compra (sem o sufixo). Retornado em `compras_arp_por_fim_vigencia` como `numeroControlePncpAta`.
numero_ata
string
required
Número simples da ata (ex.: '00001/2024'). Usado nos endpoints de saldo, adesões e unidades participantes.
unidade_gerenciadora
integer
required
Código UASG da unidade gerenciadora da ata.
numero_item
any
optional
Número do item dentro da ata. Se informado, traz também saldo, adesões e unidades participantes daquele item. Se omitido, apenas o cabeçalho é consultado.
Raw schema
{
"type": "object",
"properties": {
"numero_controle_pncp_ata": {
"description": "Identificador PNCP completo da **ata** (formato `cnpj14-1-sequencial/ano-NNNNNN`, com sufixo numerando a ata SRP dentro da compra). Ex.: `00394452000103-1-004729/2024-000006`. NÃO confundir com ID de compra (sem o sufixo). Retornado em `compras_arp_por_fim_vigencia` como `numeroControlePncpAta`.",
"type": "string"
},
"numero_ata": {
"description": "Número simples da ata (ex.: '00001/2024'). Usado nos endpoints de saldo, adesões e unidades participantes.",
"type": "string"
},
"unidade_gerenciadora": {
"description": "Código UASG da unidade gerenciadora da ata.",
"type": "integer"
},
"numero_item": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Número do item dentro da ata. Se informado, traz também saldo, adesões e unidades participantes daquele item. Se omitido, apenas o cabeçalho é consultado."
}
},
"required": [
"numero_controle_pncp_ata",
"numero_ata",
"unidade_gerenciadora"
]
}
compras_buscar_contratacoes_similares
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.
Parameters5
codigo_catmat
any
optional
Código CATMAT do item. Mutuamente exclusivo com codigo_catser.
codigo_catser
any
optional
Código CATSER do serviço. Mutuamente exclusivo com codigo_catmat.
periodo_meses
integer
optional
Janela de busca em meses contados de hoje para trás.
uf
any
optional
Filtro opcional por UF.
max_resultados
integer
optional
Máximo de contratações similares a retornar (deduplicadas).
Raw schema
{
"type": "object",
"properties": {
"codigo_catmat": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código CATMAT do item. Mutuamente exclusivo com codigo_catser."
},
"codigo_catser": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código CATSER do serviço. Mutuamente exclusivo com codigo_catmat."
},
"periodo_meses": {
"default": 12,
"description": "Janela de busca em meses contados de hoje para trás.",
"type": "integer"
},
"uf": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtro opcional por UF."
},
"max_resultados": {
"default": 20,
"description": "Máximo de contratações similares a retornar (deduplicadas).",
"type": "integer"
}
}
}
compras_perfil_fornecedor_completo
Perfil consolidado do fornecedor (cadastro + Receita + sanções + impedimentos).
Composição em paralelo:
- **cadastro**: Dados Abertos `/modulo-fornecedor/1_consultarFornecedor`
pelo CNPJ (razão social, CNAE, porte, natureza jurídica);
- **receita_federal**: BrasilAPI / MinhaReceita — QSA, capital social,
atividades secundárias, data de início, situação cadastral (RF).
Provider configurável via `CNPJ_PROVIDER` (default `brasilapi`);
- **sanções**: Portal da Transparência (CEIS+CNEP+CEPIM) pelo CNPJ;
- **impedimentos Comprasnet**: `/api/comprasnet/compras/impedimentos`.
**Não inclui lista de contratos** porque os endpoints upstream
`/modulo-contratos/1` (Dados Abertos) e `/v1/contratos` (PNCP) exigem
`codigoOrgao` como filtro obrigatório — não é possível listar contratos
de um fornecedor sem saber em qual órgão ele tem contrato. Se você já
souber o órgão, use `compras_contratos_listar(codigo_orgao=X, ni_fornecedor=Y, ...)`.
Sanções dependem de `TRANSPARENCIA_API_KEY` — se não configurada ou se
o WAF da CGU bloquear, o bloco retorna aviso e o restante segue.
Cache 10 min.
Parameters1
cnpj
string
required
CNPJ do fornecedor (14 dígitos, com ou sem pontuação).
Raw schema
{
"type": "object",
"properties": {
"cnpj": {
"description": "CNPJ do fornecedor (14 dígitos, com ou sem pontuação).",
"maxLength": 20,
"minLength": 11,
"type": "string"
}
},
"required": [
"cnpj"
]
}
compras_contratacoes_14133_listar
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.
Parameters11
data_inicial_publicacao
any
optional
Data inicial de publicação (YYYY-MM-DD).
data_final_publicacao
any
optional
Data final de publicação (YYYY-MM-DD).
codigo_uasg
any
optional
Código UASG do órgão licitante.
cnpj_orgao
any
optional
CNPJ do órgão (14 dígitos, com ou sem pontuação).
codigo_orgao_pncp
any
optional
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_consultar`: os dois espaços não coincidem (a UFSC é 26246 no SIASG e 86135 aqui) e passar o código SIASG devolve zero registros ou, quando o número existe nos dois, as contratações de OUTRO órgão. Para recortar por órgão partindo do que você conhece, use `cnpj_orgao` (CNPJ) ou `codigo_uasg`.
uf
any
optional
Sigla da UF da unidade compradora (2 letras, ex.: 'SP', 'MS').
codigo_ibge_municipio
any
optional
Código IBGE do município da unidade compradora (7 dígitos).
amparo_legal
any
optional
Código do amparo legal no PNCP (campo `amparoLegalCodigoPncp`). Ex.: 18 = Lei 14.133/2021, Art. 75, I (dispensa por valor).
codigo_modalidade_dados_abertos
any
optional
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)
5 = Pregão Eletrônico (PNCP=6)
6 = Dispensa (PNCP=8)
7 = Inexigibilidade (PNCP=9)
Demais códigos (1,2,4,8-13) retornam vazio neste endpoint. Para consultar usando o cheat sheet PNCP nativo, use `compras_pncp_contratacoes_publicacao`.
pagina
integer
optional
Página (1-based).
tamanho_pagina
integer
optional
Registros por página.
Raw schema
{
"type": "object",
"properties": {
"data_inicial_publicacao": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Data inicial de publicação (YYYY-MM-DD)."
},
"data_final_publicacao": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Data final de publicação (YYYY-MM-DD)."
},
"codigo_uasg": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código UASG do órgão licitante."
},
"cnpj_orgao": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CNPJ do órgão (14 dígitos, com ou sem pontuação)."
},
"codigo_orgao_pncp": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "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_consultar`: os dois espaços não coincidem (a UFSC é 26246 no SIASG e 86135 aqui) e passar o código SIASG devolve zero registros ou, quando o número existe nos dois, as contratações de OUTRO órgão. Para recortar por órgão partindo do que você conhece, use `cnpj_orgao` (CNPJ) ou `codigo_uasg`."
},
"uf": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sigla da UF da unidade compradora (2 letras, ex.: 'SP', 'MS')."
},
"codigo_ibge_municipio": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código IBGE do município da unidade compradora (7 dígitos)."
},
"amparo_legal": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código do amparo legal no PNCP (campo `amparoLegalCodigoPncp`). Ex.: 18 = Lei 14.133/2021, Art. 75, I (dispensa por valor)."
},
"codigo_modalidade_dados_abertos": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "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:\n 3 = Concorrência Eletrônica (PNCP=4)\n 5 = Pregão Eletrônico (PNCP=6)\n 6 = Dispensa (PNCP=8)\n 7 = Inexigibilidade (PNCP=9)\nDemais códigos (1,2,4,8-13) retornam vazio neste endpoint. Para consultar usando o cheat sheet PNCP nativo, use `compras_pncp_contratacoes_publicacao`."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
}
}
}
compras_contratacoes_14133_consultar
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.
Parameters2
id_contratacao
string
required
Identificador 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 (alfanumérico com barra, campo `numeroControlePNCP`, ex.: '10673078000120-1-000021/2025' — é o número que aparece no edital).
tipo_identificador
string
optional
Qual identificador está sendo passado em `id_contratacao`: 'idCompra' (padrão) ou 'numeroControlePNCPCompra'. O upstream rejeita qualquer outro valor com HTTP 500.
Raw schema
{
"type": "object",
"properties": {
"id_contratacao": {
"description": "Identificador 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 (alfanumérico com barra, campo `numeroControlePNCP`, ex.: '10673078000120-1-000021/2025' — é o número que aparece no edital).",
"type": "string"
},
"tipo_identificador": {
"default": "idCompra",
"description": "Qual identificador está sendo passado em `id_contratacao`: 'idCompra' (padrão) ou 'numeroControlePNCPCompra'. O upstream rejeita qualquer outro valor com HTTP 500.",
"enum": [
"idCompra",
"numeroControlePNCPCompra"
],
"type": "string"
}
},
"required": [
"id_contratacao"
]
}
compras_contratacoes_14133_itens_listar
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.
Parameters13
data_inicial_inclusao
string
required
Data inicial de inclusão dos itens no PNCP (YYYY-MM-DD).
data_final_inclusao
string
required
Data final de inclusão dos itens no PNCP (YYYY-MM-DD).
cod_item_catalogo
any
optional
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 unitário homologado do item.
material_ou_servico
any
optional
'M' para material, 'S' para serviço.
codigo_grupo
any
optional
Código do grupo do catálogo. Recorte por família quando o código exato do item ainda não é conhecido.
codigo_classe
any
optional
Código da classe do catálogo. Vem nulo em boa parte dos serviços — nesses casos use `codigo_grupo`.
tem_resultado
any
optional
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 recorte é feito aqui, client-side, sobre a página trazida: o upstream grava `temResultado: null` (não `false`) nos itens sem vencedor, então mandar `temResultado=false` para ele devolveria zero registros sempre.
situacao_item
any
optional
Situação do item da compra. '2' = Homologado, '4' = Cancelado. Filtre por '2' antes de calcular qualquer estatística de preço.
cnpj_orgao
any
optional
CNPJ do órgão comprador (14 dígitos, com ou sem pontuação).
codigo_uasg
any
optional
Código da UASG compradora (6 dígitos).
cnpj_cpf_fornecedor
any
optional
CNPJ ou CPF do fornecedor vencedor do item (só dígitos).
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Raw schema
{
"type": "object",
"properties": {
"data_inicial_inclusao": {
"description": "Data inicial de inclusão dos itens no PNCP (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"data_final_inclusao": {
"description": "Data final de inclusão dos itens no PNCP (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"cod_item_catalogo": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "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 unitário homologado do item."
},
"material_ou_servico": {
"anyOf": [
{
"enum": [
"M",
"S"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "'M' para material, 'S' para serviço."
},
"codigo_grupo": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código do grupo do catálogo. Recorte por família quando o código exato do item ainda não é conhecido."
},
"codigo_classe": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código da classe do catálogo. Vem nulo em boa parte dos serviços — nesses casos use `codigo_grupo`."
},
"tem_resultado": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "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 recorte é feito aqui, client-side, sobre a página trazida: o upstream grava `temResultado: null` (não `false`) nos itens sem vencedor, então mandar `temResultado=false` para ele devolveria zero registros sempre."
},
"situacao_item": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Situação do item da compra. '2' = Homologado, '4' = Cancelado. Filtre por '2' antes de calcular qualquer estatística de preço."
},
"cnpj_orgao": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CNPJ do órgão comprador (14 dígitos, com ou sem pontuação)."
},
"codigo_uasg": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código da UASG compradora (6 dígitos)."
},
"cnpj_cpf_fornecedor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CNPJ ou CPF do fornecedor vencedor do item (só dígitos)."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"data_inicial_inclusao",
"data_final_inclusao"
]
}
compras_contratacoes_14133_itens_por_contratacao
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`.
Parameters4
id_contratacao
string
required
Identificador 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 (alfanumérico com barra, campo `numeroControlePNCP`, ex.: '10673078000120-1-000021/2025' — é o número que aparece no edital).
tipo_identificador
string
optional
Qual identificador está sendo passado em `id_contratacao`: 'idCompra' (padrão) ou 'numeroControlePNCPCompra'. O upstream rejeita qualquer outro valor com HTTP 500.
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Raw schema
{
"type": "object",
"properties": {
"id_contratacao": {
"description": "Identificador 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 (alfanumérico com barra, campo `numeroControlePNCP`, ex.: '10673078000120-1-000021/2025' — é o número que aparece no edital).",
"type": "string"
},
"tipo_identificador": {
"default": "idCompra",
"description": "Qual identificador está sendo passado em `id_contratacao`: 'idCompra' (padrão) ou 'numeroControlePNCPCompra'. O upstream rejeita qualquer outro valor com HTTP 500.",
"enum": [
"idCompra",
"numeroControlePNCPCompra"
],
"type": "string"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"id_contratacao"
]
}
compras_contratacoes_14133_resultados_listar
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.
Parameters13
data_inicial_resultado
string
required
Data inicial do resultado/homologação (YYYY-MM-DD).
data_final_resultado
string
required
Data final do resultado/homologação (YYYY-MM-DD).
ni_fornecedor
any
optional
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.
porte_fornecedor
any
optional
Código do porte do fornecedor (ex.: 1=ME, 2=EPP, 3=Demais). Preenchimento irregular na origem — trate ausência como desconhecido.
situacao_resultado
any
optional
Código da situação do resultado. 1 = Informado. Use para descartar resultado cancelado antes de calcular média ou mediana de preço.
valor_unitario_min
any
optional
Valor unitário homologado mínimo (R$).
valor_unitario_max
any
optional
Valor unitário homologado máximo (R$).
valor_total_min
any
optional
Valor total homologado mínimo (R$). Combinado com a janela de datas, monta fila de auditoria por materialidade.
valor_total_max
any
optional
Valor total homologado máximo (R$).
cnpj_orgao
any
optional
CNPJ do órgão comprador (14 dígitos, com ou sem pontuação).
codigo_uasg
any
optional
Código da UASG compradora (6 dígitos).
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Raw schema
{
"type": "object",
"properties": {
"data_inicial_resultado": {
"description": "Data inicial do resultado/homologação (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"data_final_resultado": {
"description": "Data final do resultado/homologação (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"ni_fornecedor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "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."
},
"porte_fornecedor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código do porte do fornecedor (ex.: 1=ME, 2=EPP, 3=Demais). Preenchimento irregular na origem — trate ausência como desconhecido."
},
"situacao_resultado": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código da situação do resultado. 1 = Informado. Use para descartar resultado cancelado antes de calcular média ou mediana de preço."
},
"valor_unitario_min": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Valor unitário homologado mínimo (R$)."
},
"valor_unitario_max": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Valor unitário homologado máximo (R$)."
},
"valor_total_min": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Valor total homologado mínimo (R$). Combinado com a janela de datas, monta fila de auditoria por materialidade."
},
"valor_total_max": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Valor total homologado máximo (R$)."
},
"cnpj_orgao": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CNPJ do órgão comprador (14 dígitos, com ou sem pontuação)."
},
"codigo_uasg": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código da UASG compradora (6 dígitos)."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"data_inicial_resultado",
"data_final_resultado"
]
}
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`.
Parameters4
id_contratacao
string
required
Identificador 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 (alfanumérico com barra, campo `numeroControlePNCP`, ex.: '10673078000120-1-000021/2025' — é o número que aparece no edital).
tipo_identificador
string
optional
Qual identificador está sendo passado em `id_contratacao`: 'idCompra' (padrão) ou 'numeroControlePNCPCompra'. O upstream rejeita qualquer outro valor com HTTP 500.
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Raw schema
{
"type": "object",
"properties": {
"id_contratacao": {
"description": "Identificador 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 (alfanumérico com barra, campo `numeroControlePNCP`, ex.: '10673078000120-1-000021/2025' — é o número que aparece no edital).",
"type": "string"
},
"tipo_identificador": {
"default": "idCompra",
"description": "Qual identificador está sendo passado em `id_contratacao`: 'idCompra' (padrão) ou 'numeroControlePNCPCompra'. O upstream rejeita qualquer outro valor com HTTP 500.",
"enum": [
"idCompra",
"numeroControlePNCPCompra"
],
"type": "string"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"id_contratacao"
]
}
compras_legado_licitacoes_listar
Lista licitações do regime legado (Lei 8.666/93).
Endpoint `/modulo-legado/1_consultarLicitacao`. **Bug upstream
confirmado**: o filtro `uasg`, embora documentado no swagger oficial,
retorna HTTP 400 ("Erro ao efetuar a consulta") porque o atributo não
existe no modelo Hibernate da view (`TbVwLicitacao`). Por isso este
parâmetro foi removido da assinatura.
Workaround se você precisar filtrar por UASG: liste sem filtro, depois
filtre client-side pelo campo `uasg` do resultado.
Parameters7
data_publicacao_inicial
string
required
Data inicial de publicação (YYYY-MM-DD). Obrigatório no upstream.
data_publicacao_final
string
required
Data final de publicação (YYYY-MM-DD). Obrigatório no upstream.
modalidade
any
optional
Código de modalidade SIASG (opcional).
numero_aviso
any
optional
Número do aviso (opcional).
pertence14133
any
optional
Filtrar somente processos vinculados à Lei 14.133.
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Consulta uma licitação legado pelo id_compra.
Endpoint `/modulo-legado/1.1_consultarLicitacao_Id`. Upstream exige
`id_compra` (string), não um `id` numérico.
Parameters1
id_compra
string
required
ID da compra no SIASG (string, retornado em `compras_legado_licitacoes_listar`).
Raw schema
{
"type": "object",
"properties": {
"id_compra": {
"description": "ID da compra no SIASG (string, retornado em `compras_legado_licitacoes_listar`).",
"type": "string"
}
},
"required": [
"id_compra"
]
}
compras_legado_itens_licitacao_listar
Lista itens de licitações legado (`/modulo-legado/2_consultarItemLicitacao`).
Upstream exige `modalidade` obrigatório. Filtros opcionais: `uasg`,
`numero_aviso`, `codigo_item_material/servico`, `cnpj_fornecedor`.
Parameters8
modalidade
integer
required
Código de modalidade SIASG (obrigatório). Ex.: 5=Pregão, 6=Dispensa.
uasg
any
optional
Código UASG (opcional).
numero_aviso
any
optional
Número do aviso (opcional).
codigo_item_material
any
optional
Código CATMAT (opcional).
codigo_item_servico
any
optional
Código CATSER (opcional).
cnpj_fornecedor
any
optional
CNPJ do fornecedor (opcional).
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Lista pregões eletrônicos do regime legado.
Endpoint `/modulo-legado/3_consultarPregoes`. **Bug upstream
confirmado**: os filtros `co_uasg` e `co_orgao`, embora documentados
no swagger, retornam HTTP 400 com erro Hibernate
`Could not resolve attribute 'TbVwPregaoId.coUasg'` porque os atributos
não existem no modelo da view. Por isso ambos foram removidos da
assinatura.
Workaround para filtrar por UASG: chame sem filtro e filtre client-side
pelos campos `coUasg`/`coOrgao` do resultado.
Parameters7
dt_data_edital_inicial
string
required
Data inicial do edital (YYYY-MM-DD). Obrigatório.
dt_data_edital_final
string
required
Data final do edital (YYYY-MM-DD). Obrigatório.
numero
any
optional
Número do pregão (opcional).
ds_tipo_pregao_compra
any
optional
Tipo do pregão de compra (string upstream).
pertence14133
any
optional
Filtrar pregões vinculados à Lei 14.133.
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Lista compras sem licitação (dispensa/inexigibilidade) do regime legado.
Endpoint `/modulo-legado/5_consultarComprasSemLicitacao`. **Upstream
exige `dt_ano_aviso`** (ano inteiro, ex.: 2024) — não janela de datas.
Parameters9
dt_ano_aviso
integer
required
Ano do aviso (ex.: 2024). Obrigatório no upstream.
co_uasg
any
optional
Código UASG (opcional).
co_orgao
any
optional
Código do órgão (opcional).
co_orgao_superior
any
optional
Código do órgão superior (opcional).
nu_aviso_licitacao
any
optional
Número do aviso de licitação.
co_modalidade_licitacao
any
optional
Código da modalidade SIASG.
pertence14133
any
optional
Vincula à Lei 14.133.
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Lista contratações pelo RDC (Regime Diferenciado de Contratações).
Endpoint `/modulo-legado/7_consultarRdc`. **Upstream usa
`data_publicacao_min/max`** (note `min`/`max`, não `inicial`/`final`).
RDC foi usado principalmente para obras dos megaeventos e da Copa —
relevância residual hoje.
Parameters8
data_publicacao_min
string
required
Data MÍNIMA de publicação (YYYY-MM-DD). Obrigatório.
data_publicacao_max
string
required
Data MÁXIMA de publicação (YYYY-MM-DD). Obrigatório.
uasg
any
optional
Código UASG (opcional).
orgao
any
optional
Código do órgão (opcional).
uf_uasg
any
optional
UF da UASG (sigla, ex.: 'DF').
modalidade
any
optional
Código de modalidade.
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Lista itens de pregões do regime legado (Lei 8.666), com a cadeia de preço.
Endpoints `/modulo-legado/4_consultarItensPregoes` (por período de
homologação) e `/modulo-legado/4.1_consultarItensPregoes_Id` (quando
`id_compra` é informado).
**É a única fonte, em todo o MCP, da cadeia completa de formação de preço
por item**: `valor_estimado_item` → `menor_lance` → `valor_negociado` →
`valor_homologado_item`. Serve para medir o desconto real obtido em certame
e para instruir negociação.
Traz também `situacao_item`, que revela itens desertos e fracassados —
invisíveis para quem só olha preço homologado, e relevantes para justificar
revisão de estimativa.
Informe `id_compra` **ou** o par de datas de homologação. As duas datas
precisam ser diferentes entre si (restrição do upstream).
Série histórica: use para contratações anteriores à Lei 14.133. Para 2022 em
diante, prefira `compras_contratacoes_14133_itens_listar`.
Cache 15 min.
Parameters8
data_homologacao_inicial
any
optional
Data inicial de homologação dos itens (YYYY-MM-DD). Obrigatória quando `id_compra` não é informado.
data_homologacao_final
any
optional
Data final de homologação dos itens (YYYY-MM-DD). Obrigatória quando `id_compra` não é informado.
id_compra
any
optional
Identificador do pregão, para trazer só os itens dele. É a concatenação zero-padded de UASG(6) + modalidade(2) + número(5) + ano(4) — ex.: '38916105000152022'. Também é o campo `id_compra` devolvido por `compras_legado_pregoes_listar`.
id_compra_item
any
optional
Identificador de um item específico dentro do pregão.
codigo_uasg
any
optional
Código da UASG que realizou o pregão (só na busca por período).
decreto_7174
any
optional
Filtra itens sujeitos ao Decreto 7.174/2010 (bens e serviços de informática).
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Raw schema
{
"type": "object",
"properties": {
"data_homologacao_inicial": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Data inicial de homologação dos itens (YYYY-MM-DD). Obrigatória quando `id_compra` não é informado."
},
"data_homologacao_final": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Data final de homologação dos itens (YYYY-MM-DD). Obrigatória quando `id_compra` não é informado."
},
"id_compra": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Identificador do pregão, para trazer só os itens dele. É a concatenação zero-padded de UASG(6) + modalidade(2) + número(5) + ano(4) — ex.: '38916105000152022'. Também é o campo `id_compra` devolvido por `compras_legado_pregoes_listar`."
},
"id_compra_item": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Identificador de um item específico dentro do pregão."
},
"codigo_uasg": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código da UASG que realizou o pregão (só na busca por período)."
},
"decreto_7174": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtra itens sujeitos ao Decreto 7.174/2010 (bens e serviços de informática)."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
}
}
compras_legado_itens_sem_licitacao_listar
Lista itens de contratações diretas do regime legado (dispensa/inexigibilidade).
Endpoints `/modulo-legado/6_consultarCompraItensSemLicitacao` (por ano do
aviso) e `/modulo-legado/6.1_consultarItensComprasSemLicitacao_Id` (quando
`id_compra` é informado).
**É o único caminho para contratação direta em nível de item no período
anterior ao PNCP (2019-2021)** — justamente a janela das dispensas
emergenciais da pandemia, para a qual as rotas da Lei 14.133 retornam vazio.
Traz `vr_estimado`, fornecedor vencedor e a descrição detalhada do item.
Informe `id_compra` **ou** `ano_aviso`.
CPF de fornecedor pessoa física vem mascarado por padrão (LGPD).
Cache 15 min.
Parameters11
ano_aviso
any
optional
Ano do aviso da contratação direta. Obrigatório quando `id_compra` não é informado. Cobertura útil principalmente entre 2019 e 2021, período anterior ao PNCP — para 2022 em diante prefira `compras_contratacoes_14133_itens_listar`.
id_compra
any
optional
Identificador da compra, para trazer só os itens dela.
id_compra_item
any
optional
Identificador de um item específico dentro da compra.
codigo_uasg
any
optional
Código da UASG contratante.
codigo_orgao
any
optional
Código do órgão contratante.
codigo_modalidade
any
optional
Código da modalidade legada (dispensa, inexigibilidade).
codigo_conjunto_materiais
any
optional
Código do conjunto de materiais (CATMAT legado).
codigo_servico
any
optional
Código do serviço (CATSER legado).
cpf_cnpj_fornecedor
any
optional
CPF ou CNPJ do fornecedor vencedor (só dígitos).
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Raw schema
{
"type": "object",
"properties": {
"ano_aviso": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Ano do aviso da contratação direta. Obrigatório quando `id_compra` não é informado. Cobertura útil principalmente entre 2019 e 2021, período anterior ao PNCP — para 2022 em diante prefira `compras_contratacoes_14133_itens_listar`."
},
"id_compra": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Identificador da compra, para trazer só os itens dela."
},
"id_compra_item": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Identificador de um item específico dentro da compra."
},
"codigo_uasg": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código da UASG contratante."
},
"codigo_orgao": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Código do órgão contratante."
},
"codigo_modalidade": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código da modalidade legada (dispensa, inexigibilidade)."
},
"codigo_conjunto_materiais": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código do conjunto de materiais (CATMAT legado)."
},
"codigo_servico": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código do serviço (CATSER legado)."
},
"cpf_cnpj_fornecedor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CPF ou CNPJ do fornecedor vencedor (só dígitos)."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
}
}
compras_contratos_listar
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.
Parameters9
codigo_orgao
integer
required
Código do órgão (obrigatório no upstream). Use `compras_orgao_listar` para descobrir.
data_vigencia_inicial_min
string
required
Data MÍNIMA de início de vigência do contrato (YYYY-MM-DD). Janela max ≤ 365 dias até data_vigencia_inicial_max.
data_vigencia_inicial_max
string
required
Data MÁXIMA de início de vigência (YYYY-MM-DD).
codigo_unidade_gestora
any
optional
Filtra pela UASG gestora do contrato.
numero_contrato
any
optional
Filtra por número do contrato (ex.: '00031/2015').
codigo_modalidade_compra
any
optional
Modalidade da compra que originou o contrato.
ni_fornecedor
any
optional
CPF/CNPJ do fornecedor (apenas dígitos). Opcional.
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Raw schema
{
"type": "object",
"properties": {
"codigo_orgao": {
"description": "Código do órgão (obrigatório no upstream). Use `compras_orgao_listar` para descobrir.",
"type": "integer"
},
"data_vigencia_inicial_min": {
"description": "Data MÍNIMA de início de vigência do contrato (YYYY-MM-DD). Janela max ≤ 365 dias até data_vigencia_inicial_max.",
"format": "date",
"type": "string"
},
"data_vigencia_inicial_max": {
"description": "Data MÁXIMA de início de vigência (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"codigo_unidade_gestora": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtra pela UASG gestora do contrato."
},
"numero_contrato": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtra por número do contrato (ex.: '00031/2015')."
},
"codigo_modalidade_compra": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Modalidade da compra que originou o contrato."
},
"ni_fornecedor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CPF/CNPJ do fornecedor (apenas dígitos). Opcional."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"codigo_orgao",
"data_vigencia_inicial_min",
"data_vigencia_inicial_max"
]
}
compras_contratos_consultar
Consulta um contrato no Dados Abertos (endpoint 1.1).
O upstream exige `codigo + tipo`. Tipos aceitos pela API:
`idCompra` e `numeroControlePncpContrato`.
Cache 15 min.
Parameters2
codigo
string
required
Identificador 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 completo (ex.: '00000000000000-1-000001/2024').
tipo
string
optional
Como interpretar `codigo`: 'idCompra' (id interno da compra) ou 'numeroControlePncpContrato' (identificador PNCP).
Raw schema
{
"type": "object",
"properties": {
"codigo": {
"description": "Identificador 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 completo (ex.: '00000000000000-1-000001/2024').",
"type": "string"
},
"tipo": {
"default": "numeroControlePncpContrato",
"description": "Como interpretar `codigo`: 'idCompra' (id interno da compra) ou 'numeroControlePncpContrato' (identificador PNCP).",
"enum": [
"idCompra",
"numeroControlePncpContrato"
],
"type": "string"
}
},
"required": [
"codigo"
]
}
compras_contratos_listar_por_fim_vigencia
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.
Parameters6
codigo_orgao
integer
required
Código do órgão (obrigatório).
data_vigencia_final_min
string
required
Data MÍNIMA de fim de vigência (YYYY-MM-DD). Janela ≤ 365 dias.
data_vigencia_final_max
string
required
Data MÁXIMA de fim de vigência (YYYY-MM-DD).
codigo_unidade_gestora
any
optional
UASG gestora (opcional).
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
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.
Parameters4
codigo
string
required
Identificador do contrato: o `idCompra` numérico ou o número de controle PNCP do contrato, conforme `tipo_identificador`.
tipo_identificador
string
optional
Qual identificador está em `codigo`: 'idCompra' (padrão) ou 'numeroControlePncpContrato'. Outro valor devolve HTTP 500.
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Raw schema
{
"type": "object",
"properties": {
"codigo": {
"description": "Identificador do contrato: o `idCompra` numérico ou o número de controle PNCP do contrato, conforme `tipo_identificador`.",
"type": "string"
},
"tipo_identificador": {
"default": "idCompra",
"description": "Qual identificador está em `codigo`: 'idCompra' (padrão) ou 'numeroControlePncpContrato'. Outro valor devolve HTTP 500.",
"enum": [
"idCompra",
"numeroControlePncpContrato"
],
"type": "string"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"codigo"
]
}
compras_contrato_comprasnet_consultar
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.
Parameters1
id_contrato
integer
required
ID interno do contrato no Comprasnet (pode ser diferente do id no Dados Abertos). Obtenha em `compras_contrato_comprasnet_por_uasg`.
Raw schema
{
"type": "object",
"properties": {
"id_contrato": {
"description": "ID interno do contrato no Comprasnet (pode ser diferente do id no Dados Abertos). Obtenha em `compras_contrato_comprasnet_por_uasg`.",
"type": "integer"
}
},
"required": [
"id_contrato"
]
}
compras_contrato_comprasnet_por_uasg
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.
Parameters4
codigo_uasg
integer
required
Código UASG (5-6 dígitos).
ativos
boolean
optional
Se True (padrão), lista apenas contratos ativos. Set False para incluir inativos via /api/contrato/inativo/ug/{uasg}.
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Raw schema
{
"type": "object",
"properties": {
"codigo_uasg": {
"description": "Código UASG (5-6 dígitos).",
"type": "integer"
},
"ativos": {
"default": true,
"description": "Se True (padrão), lista apenas contratos ativos. Set False para incluir inativos via /api/contrato/inativo/ug/{uasg}.",
"type": "boolean"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"codigo_uasg"
]
}
compras_contrato_historico_aditivos
Lista aditivos do contrato (/api/contrato/{id}/historico).
Paginação client-side (upstream não pagina). Cache 15 min do payload completo.
Parameters3
id_contrato
integer
required
ID do contrato no Comprasnet.
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
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.).
Parameters3
id_contrato
integer
required
ID do contrato no Comprasnet.
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Lista os MCP Prompts disponíveis com nome, descrição e argumentos.
Tools de descoberta para clientes (como o Claude.ai web) que ainda
não expõem UI para prompts. Em Claude Desktop / Cursor / MCP Inspector,
prompts aparecem em UI dedicada — esta tool é um caminho alternativo,
não substituto.
Use depois `compras_obter_prompt(nome, argumentos)` para renderizar
um prompt específico.
Retorno:
{
"total": int,
"prompts": [
{
"nome": str,
"descricao": str,
"tags": [str, ...],
"argumentos": [
{"nome": str, "descricao": str | None, "obrigatorio": bool},
...
]
},
...
]
}
Parameters
No parameters.
Raw schema
{
"type": "object",
"properties": {}
}
compras_obter_prompt
Renderiza um MCP Prompt e devolve o texto pronto.
O texto retornado é o conteúdo da `PromptMessage[0]` — tipicamente um
roteiro que orienta o LLM a executar um fluxo usando as tools deste
servidor. Depois de obter o texto, o LLM normalmente segue as
instruções dele, chamando outras tools conforme indicado.
Retorno:
{
"nome": str,
"texto": str, # conteúdo renderizado pronto para usar
"argumentos_usados": dict,
}
Se o prompt não existir ou faltar argumento obrigatório, retorna
`_erro` com diagnóstico em vez de propagar exception.
Parameters2
nome
string
required
Nome do prompt a renderizar. Use `compras_listar_prompts` para descobrir nomes disponíveis. Exemplos: `analisar_contratacao_pncp`, `dossie_due_diligence_fornecedor`, `oportunidades_carona_arp`.
argumentos
any
optional
Mapa de argumentos exigidos pelo prompt. Os nomes e tipos vêm de `compras_listar_prompts`. Ex.: {"cnpj_orgao": "00394460000141", "ano": 2025, "sequencial": 12345}.
Raw schema
{
"type": "object",
"properties": {
"nome": {
"description": "Nome do prompt a renderizar. Use `compras_listar_prompts` para descobrir nomes disponíveis. Exemplos: `analisar_contratacao_pncp`, `dossie_due_diligence_fornecedor`, `oportunidades_carona_arp`.",
"minLength": 1,
"type": "string"
},
"argumentos": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Mapa de argumentos exigidos pelo prompt. Os nomes e tipos vêm de `compras_listar_prompts`. Ex.: {\"cnpj_orgao\": \"00394460000141\", \"ano\": 2025, \"sequencial\": 12345}."
}
},
"required": [
"nome"
]
}
compras_listar_resources
Lista os MCP Resources disponíveis com URI, nome e mime-type.
Tools de descoberta para clientes que não expõem UI de attachment de
resources (como o Claude.ai web). Em Claude Desktop / Cursor / MCP
Inspector, resources aparecem em picker dedicado.
Resources contêm dados de referência estáticos (tabelas de domínio,
glossário, metadados do servidor). Use `compras_obter_resource(uri)`
para ler o conteúdo.
Retorno:
{
"total": int,
"resources": [
{"uri": str, "nome": str, "descricao": str, "mime_type": str, "tags": [str,...]},
...
]
}
Parameters
No parameters.
Raw schema
{
"type": "object",
"properties": {}
}
compras_obter_resource
Lê o conteúdo de um MCP Resource pela URI.
Retorna o conteúdo bruto (texto/JSON-string conforme o mime-type
registrado) e os metadados do resource.
Retorno:
{
"uri": str,
"nome": str,
"mime_type": str,
"conteudo": str,
}
Se a URI não existir, retorna `_erro` em vez de propagar exception.
Parameters1
uri
string
required
URI do resource. Use `compras_listar_resources` para descobrir URIs disponíveis. Exemplos: `compras://referencia/modalidades-pncp`, `compras://glossario/lei-14133`, `compras://meta/escopo`.
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.
Parameters1
cnpj
string
required
CNPJ a consultar (14 dígitos, com ou sem pontuação). Usa BrasilAPI por padrão; trocável via env `CNPJ_PROVIDER=minhareceita`.
Raw schema
{
"type": "object",
"properties": {
"cnpj": {
"description": "CNPJ a consultar (14 dígitos, com ou sem pontuação). Usa BrasilAPI por padrão; trocável via env `CNPJ_PROVIDER=minhareceita`.",
"maxLength": 20,
"minLength": 11,
"type": "string"
}
},
"required": [
"cnpj"
]
}
compras_fornecedor_consultar
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.
Parameters1
cnpj_cpf
string
required
CNPJ (14 dígitos) ou CPF (11 dígitos) do fornecedor, com ou sem pontuação.
Raw schema
{
"type": "object",
"properties": {
"cnpj_cpf": {
"description": "CNPJ (14 dígitos) ou CPF (11 dígitos) do fornecedor, com ou sem pontuação.",
"type": "string"
}
},
"required": [
"cnpj_cpf"
]
}
compras_fornecedor_listar
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.
Parameters8
cnpj
any
optional
Filtrar por CNPJ (14 dígitos).
cpf
any
optional
Filtrar por CPF (11 dígitos).
porte_empresa
any
optional
Código de porte da empresa (1=ME, 2=EPP, 3=Demais). Consulte os códigos no manual do Compras.gov.br.
codigo_cnae
any
optional
Código CNAE para filtrar por atividade.
natureza_juridica
any
optional
Código da natureza jurídica.
ativo
boolean
optional
True (default) para listar apenas ativos, False para apenas inativos.
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Raw schema
{
"type": "object",
"properties": {
"cnpj": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtrar por CNPJ (14 dígitos)."
},
"cpf": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtrar por CPF (11 dígitos)."
},
"porte_empresa": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código de porte da empresa (1=ME, 2=EPP, 3=Demais). Consulte os códigos no manual do Compras.gov.br."
},
"codigo_cnae": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código CNAE para filtrar por atividade."
},
"natureza_juridica": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código da natureza jurídica."
},
"ativo": {
"default": true,
"description": "True (default) para listar apenas ativos, False para apenas inativos.",
"type": "boolean"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
}
}
compras_fornecedor_impedimentos_por_itens
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.
Parameters2
codigos_catmat
any
optional
Lista de códigos CATMAT (materiais) a verificar. Use junto com codigos_catser ou separadamente.
codigos_catser
any
optional
Lista de códigos CATSER (serviços).
Raw schema
{
"type": "object",
"properties": {
"codigos_catmat": {
"anyOf": [
{
"items": {
"type": "integer"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Lista de códigos CATMAT (materiais) a verificar. Use junto com codigos_catser ou separadamente."
},
"codigos_catser": {
"anyOf": [
{
"items": {
"type": "integer"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Lista de códigos CATSER (serviços)."
}
}
}
compras_fornecedor_contratos_por_item
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.
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.
Métricas operacionais da API por período (ano/mês).
Endpoint Dados Abertos `/modulo-indicadores/2_consultarIndicadoresPorPeriodo`.
Retorna métricas de USO da API (requisições, latência, downloads),
não dados de compras. Útil para análise temporal de disponibilidade
do upstream.
Cache 1h.
Parameters4
ano
integer
required
Ano de referência dos indicadores (4 dígitos).
mes
any
optional
Mês (1-12). Se omitido, agrega o ano inteiro. Se informado, filtra apenas o mês especificado.
pagina
integer
optional
Página (1-based).
tamanho_pagina
integer
optional
Registros por página.
Raw schema
{
"type": "object",
"properties": {
"ano": {
"description": "Ano de referência dos indicadores (4 dígitos).",
"maximum": 2100,
"minimum": 2010,
"type": "integer"
},
"mes": {
"anyOf": [
{
"maximum": 12,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Mês (1-12). Se omitido, agrega o ano inteiro. Se informado, filtra apenas o mês especificado."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"maximum": 500,
"minimum": 1,
"type": "integer"
}
},
"required": [
"ano"
]
}
compras_uasg_listar
Lista UASGs (Unidades Administrativas de Serviços Gerais) do governo.
**✅ Restaurada em 2026-08-05.** Da v0.2.x até a v0.3.12 esta tool
devolvia "endpoint indisponível" e a documentação atribuía o 404 a um
bug de roteamento da SEGES. O diagnóstico estava errado: faltava o
parâmetro obrigatório `statusUasg`, e esta API responde **404** (não
400) quando um obrigatório não vem. Enviando o parâmetro, a rota
devolve 200 com ~22 mil UASGs ativas.
O filtro `ativo` alimenta `statusUasg`; quando não informado, a tool
assume `True` (ativas), que é o caso de uso dominante.
**Paginação**: o upstream ignora `tamanho_pagina` nesta rota e devolve
páginas fixas de 500 registros — `_total_paginas` reflete a paginação
real do servidor, não o tamanho pedido.
**`codigo_orgao` corrigido em 2026-09-07.** O filtro era enviado como
`codigoOrgao`, chave que esta rota não declara: a resposta vinha com as
22 mil UASGs do país, sem aviso, como se o órgão não tivesse recorte
nenhum. Agora a tool resolve o código para o CNPJ do órgão e filtra por
`cnpjCpfOrgao` — órgão 26246 (UFSC) devolve 3 UASGs. Custa uma chamada
extra a `/modulo-uasg/2_consultarOrgao`.
Duas ressalvas, ambas tratadas aqui: **CNPJ não identifica órgão** (599
dos 11.957 órgãos ativos compartilham CNPJ com outro — as 7 unidades do
CNPJ da Polícia Federal devolviam 110 UASGs, das quais só 8 do órgão
pedido), então o resultado é reduzido client-side pelo `codigoOrgao` de
cada UASG; e **39 órgãos não têm CNPJ próprio** (o upstream grava `"0"`),
caso em que a tool devolve lista vazia com `_aviso_filtro` em vez de um
recorte falso.
Cache 24h.
Parameters4
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
codigo_orgao
any
optional
Filtra UASGs subordinadas a este código de órgão.
ativo
any
optional
True para apenas UASGs ativas, False para inativas, None para ambas.
Raw schema
{
"type": "object",
"properties": {
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
},
"codigo_orgao": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtra UASGs subordinadas a este código de órgão."
},
"ativo": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "True para apenas UASGs ativas, False para inativas, None para ambas."
}
}
}
compras_uasg_consultar
Consulta uma UASG específica pelo código.
Devolve nome, sigla, CNPJ vinculado, órgão superior e endereço.
Útil para resolver `codigo_uasg` antes de consultas filtradas.
**✅ Restaurada em 2026-08-05** — ver `compras_uasg_listar` para o
diagnóstico do 404 que afetava toda a família `/modulo-uasg/*`.
Busca primeiro entre as ativas; se não achar, repete entre as inativas
(o upstream exige `statusUasg` e não aceita "ambas"), devolvendo
`ativa: false` para UASGs extintas.
Cache 24h.
Lista órgãos cadastrados no Compras.gov.br.
Endpoint Dados Abertos `/modulo-uasg/2_consultarOrgao`. Inclui órgãos
do SISG (Sistema de Serviços Gerais), com código numérico, nome,
esfera, poder e CNPJ.
**✅ Restaurada em 2026-08-05**: faltava o parâmetro obrigatório
`statusOrgao` — mesma causa do 404 em `compras_uasg_listar`.
**`nome`, `esfera` e `poder` são aplicados aqui, client-side.** Nenhum
dos três consta do contrato desta rota, e esta API ignora chave
desconhecida em silêncio — mandá-los devolvia os ~11,9 mil órgãos
ativos com cara de resultado filtrado (reconfirmado em 2026-09-07 com
parâmetro de controle). Desde 2026-09-07 eles não são mais enviados: o
recorte é feito sobre a página trazida, e o payload traz
`_filtro_client_side` dizendo quantos sobraram. Consequência prática:
o filtro só enxerga a página atual, então varra as páginas ou use
`codigo_orgao` em `compras_orgao_consultar` quando souber o código.
Cache 24h.
Parameters5
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
nome
any
optional
Filtro textual pelo nome do órgão (match parcial).
Lista unidades administrativas de um órgão no PNCP.
Endpoint PNCP `/v1/orgaos/{cnpj}/unidades`. Útil para descobrir códigos
de unidade antes de filtrar contratações/contratos do órgão.
Cobre estados e municípios (não só federal). Cache 24h.
**Tratamento de 404**: nem todo CNPJ está indexado no PNCP. Em vez de
levantar exception, esta tool retorna `_erro_upstream` informativo
com lista de alternativas (mesmo padrão das tools `compras_uasg_*` /
`compras_orgao_*` quando o `/modulo-uasg/*` retorna 404).
Parameters1
cnpj
string
required
CNPJ do órgão (14 dígitos, com ou sem pontuação). Exemplo: 00394460000141 (Presidência da República).
Raw schema
{
"type": "object",
"properties": {
"cnpj": {
"description": "CNPJ do órgão (14 dígitos, com ou sem pontuação). Exemplo: 00394460000141 (Presidência da República).",
"maxLength": 20,
"minLength": 11,
"type": "string"
}
},
"required": [
"cnpj"
]
}
compras_uasg_buscar
Busca UASGs por trecho do nome (match parcial, ignora acento e caixa).
**✅ Restaurada em 2026-08-05, com busca local.** Duas correções:
1. A rota exige `statusUasg`; sem ele devolvia 404 (mesma causa de
`compras_uasg_listar`).
2. O parâmetro `nome` **não existe** no contrato da rota e era
ignorado pelo upstream — enviá-lo devolvia o universo inteiro
(~22 mil UASGs) como se fossem resultados de busca. Corrigir só o
item 1 teria trocado um erro visível (404) por um erro silencioso,
que é pior: o analista receberia "TCU - SECRETARIA DE INFORMATICA"
como 1º resultado de qualquer termo.
Como não há filtro textual upstream, a busca é feita **localmente**:
a tool varre as páginas da rota (500 registros cada, ~8s no universo
completo), filtra por `termo` e pagina o resultado filtrado. O varrido
fica em cache por 24h, então só a primeira busca do dia paga o custo.
O payload informa `_busca_local`, `_paginas_varridas` e
`_universo_varrido` — se a varredura for truncada, isso fica explícito
em vez de virar silêncio.
Cache 24h.
Parameters3
termo
string
required
Trecho do nome da UASG (match literal, ignora acento e caixa). Ex.: 'aquaviarios', 'tribunal regional', 'exercito'. Siglas raramente funcionam — os nomes vêm por extenso no cadastro ('AGÊNCIA NACIONAL DE TRANSPORTES AQUAVIÁRIOS', não 'ANTAQ').
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Raw schema
{
"type": "object",
"properties": {
"termo": {
"description": "Trecho do nome da UASG (match literal, ignora acento e caixa). Ex.: 'aquaviarios', 'tribunal regional', 'exercito'. Siglas raramente funcionam — os nomes vêm por extenso no cadastro ('AGÊNCIA NACIONAL DE TRANSPORTES AQUAVIÁRIOS', não 'ANTAQ').",
"maxLength": 100,
"minLength": 2,
"type": "string"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"termo"
]
}
compras_pesquisar_preco_material
Pesquisa preços praticados em compras de material (CATMAT) pelo governo.
Endpoint Dados Abertos: `/modulo-pesquisa-preco/1_consultarMaterial`.
Para visão consolidada estatística (média/mediana no padrão IN 65/2021),
use a tool composta `compras_pesquisar_precos_para_etp`.
Cada item da resposta traz `precoUnitario`, `quantidade`, `dataCompra`,
`niFornecedor`/`nomeFornecedor` e a UASG compradora — é **esta** a tool
que devolve valor unitário para material. A `compras_detalhar_preco_material`
NÃO devolve preço (ver a docstring dela).
**⚠️ Quebra upstream corrigida em 2026-08-05**: entre ~2026-07 e
2026-08-05 esta tool respondia "Recurso nao encontrado" (HTTP 404). A
SEGES trocou a assinatura de query da rota sem versionar: o parâmetro
`codigoItemCatalogo` foi substituído pelo par `tipo` (enum
`codigoItemCatalogo` | `codigoPdm`) + `codigo`. Como a API responde
**404** — e não 400 — a parâmetros obrigatórios ausentes, a quebra se
disfarçou de "rota removida". A rota nunca saiu do swagger oficial.
Corrigido na v0.3.13; a assinatura de `compras_pesquisar_preco_servico`
(rota 3) não mudou.
Se voltar a devolver 404, a tool não levanta exception: devolve
`_erro_upstream` com diagnóstico e alternativas.
Cache 10 min.
Parameters8
codigo_item_catalogo
integer
required
Código CATMAT do material. Inteiro 4-8 dígitos. Ex.: 460789.
data_inicio
any
optional
Data inicial da compra (YYYY-MM-DD). Quando omitida, a API usa o início do ano corrente.
data_fim
any
optional
Data final da compra (YYYY-MM-DD). Quando omitida, a API usa a data atual.
uf
any
optional
Sigla da UF (ex.: 'DF'). Filtra compras realizadas pelo órgão da UF.
codigo_municipio
any
optional
Código IBGE do município (7 dígitos). Filtro mais fino que UF.
codigo_uasg
any
optional
Código da UASG compradora (filtro mais específico ainda).
pagina
integer
optional
Página (1-based).
tamanho_pagina
integer
optional
Registros por página.
Raw schema
{
"type": "object",
"properties": {
"codigo_item_catalogo": {
"description": "Código CATMAT do material. Inteiro 4-8 dígitos. Ex.: 460789.",
"type": "integer"
},
"data_inicio": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Data inicial da compra (YYYY-MM-DD). Quando omitida, a API usa o início do ano corrente."
},
"data_fim": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Data final da compra (YYYY-MM-DD). Quando omitida, a API usa a data atual."
},
"uf": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sigla da UF (ex.: 'DF'). Filtra compras realizadas pelo órgão da UF."
},
"codigo_municipio": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código IBGE do município (7 dígitos). Filtro mais fino que UF."
},
"codigo_uasg": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código da UASG compradora (filtro mais específico ainda)."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
}
},
"required": [
"codigo_item_catalogo"
]
}
compras_detalhar_preco_material
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.
Parameters5
codigo_item_catalogo
integer
required
Código CATMAT do material. Inteiro 4-8 dígitos. Ex.: 460789.
data_inicio
any
optional
Data inicial da compra (YYYY-MM-DD). Quando omitida, a API usa o início do ano corrente.
data_fim
any
optional
Data final da compra (YYYY-MM-DD). Quando omitida, a API usa a data atual.
pagina
integer
optional
Página (1-based).
tamanho_pagina
integer
optional
Registros por página.
Raw schema
{
"type": "object",
"properties": {
"codigo_item_catalogo": {
"description": "Código CATMAT do material. Inteiro 4-8 dígitos. Ex.: 460789.",
"type": "integer"
},
"data_inicio": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Data inicial da compra (YYYY-MM-DD). Quando omitida, a API usa o início do ano corrente."
},
"data_fim": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Data final da compra (YYYY-MM-DD). Quando omitida, a API usa a data atual."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
}
},
"required": [
"codigo_item_catalogo"
]
}
compras_pesquisar_preco_servico
Pesquisa preços praticados em compras de serviço (CATSER).
Endpoint: `/modulo-pesquisa-preco/3_consultarServico`. Para visão
consolidada (mediana, média, desvio no padrão IN 65/2021), use a tool
composta `compras_pesquisar_precos_para_etp` com tipo='servico'.
Parameters8
codigo_item_catalogo
integer
required
Código CATSER do serviço. Inteiro 4-6 dígitos. Ex.: 27332.
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.
Parameters5
codigo_item_catalogo
integer
required
Código CATSER do serviço. Inteiro 4-6 dígitos. Ex.: 27332.
Lista itens de PGC (Plano de Gestão de Contratações) do governo federal.
Endpoint Dados Abertos `/modulo-pgc/1_consultarPgcDetalhe`. Cada linha
representa um item planejado: descrição, quantidade, valor unitário
estimado, mês previsto de início e categoria de item.
Cache 1h.
Parameters5
ano
integer
required
Ano do PGC. Os PGCs do governo federal começam a aparecer a partir de 2020.
codigo_orgao
any
optional
Código do órgão (filtra os PGCs desse órgão).
codigo_uasg
any
optional
Código UASG (filtro mais específico que codigo_orgao).
pagina
integer
optional
Página (1-based).
tamanho_pagina
integer
optional
Registros por página.
Raw schema
{
"type": "object",
"properties": {
"ano": {
"description": "Ano do PGC. Os PGCs do governo federal começam a aparecer a partir de 2020.",
"type": "integer"
},
"codigo_orgao": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código do órgão (filtra os PGCs desse órgão)."
},
"codigo_uasg": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código UASG (filtro mais específico que codigo_orgao)."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
}
},
"required": [
"ano"
]
}
compras_pgc_por_catalogo
Lista todos os PGCs que incluem determinado item de catálogo (CATMAT/CATSER).
Endpoint Dados Abertos `/modulo-pgc/2_consultarPgcDetalheCatalogo`.
Útil para responder: "Quais órgãos planejaram comprar esse item este ano?
Em que quantidade?". Insumo para ETP e benchmarking de quantitativos.
**Corrigida em 2026-09-07.** A tool mandava `tipo=M`/`tipo=S` e o enum
upstream é `[Material, Servico]` — **toda** chamada devolvia HTTP 500
("Failed to convert ... EnumPgcDetalheCatalogo ... for value [M]"). A
interface `M`/`S` foi mantida e a tradução passou a ser feita aqui.
Mesma classe de defeito do `tipo=C` das tools de contratações.
Cache 1h.
Parameters5
ano
integer
required
Ano do PCA/PGC.
tipo
string
required
'M' para CATMAT (material) ou 'S' para CATSER (serviço).
codigo_item
integer
required
Código do item no catálogo (CATMAT se tipo='M', CATSER se tipo='S').
pagina
integer
optional
Página (1-based).
tamanho_pagina
integer
optional
Registros por página.
Raw schema
{
"type": "object",
"properties": {
"ano": {
"description": "Ano do PCA/PGC.",
"type": "integer"
},
"tipo": {
"description": "'M' para CATMAT (material) ou 'S' para CATSER (serviço).",
"enum": [
"M",
"S"
],
"type": "string"
},
"codigo_item": {
"description": "Código do item no catálogo (CATMAT se tipo='M', CATSER se tipo='S').",
"type": "integer"
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
}
},
"required": [
"ano",
"tipo",
"codigo_item"
]
}
compras_pgc_agregacao
Resumo agregado do PGC de um órgão num ano (totais por categoria).
Endpoint Dados Abertos `/modulo-pgc/3_consultarPgcAgregacao`. Retorna
contagens e valores totais por categoria/grupo, útil para diagnóstico
rápido do volume planejado pelo órgão.
Cache 1h.
Parameters4
ano
integer
required
Ano do PGC.
codigo_orgao
integer
required
Código do órgão (obrigatório nesta consulta — é a chave da agregação).
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Raw schema
{
"type": "object",
"properties": {
"ano": {
"description": "Ano do PGC.",
"type": "integer"
},
"codigo_orgao": {
"description": "Código do órgão (obrigatório nesta consulta — é a chave da agregação).",
"type": "integer"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"ano",
"codigo_orgao"
]
}
compras_pgc_listar_csv
Versão CSV de `compras_pgc_listar` (mesmo dataset, formato planilha).
Endpoint `/modulo-pgc/1.1_consultarPgcDetalhe_CSV`. Útil para colar no
ETP ou planilhar localmente. Retorna o CSV no campo `csv` da resposta.
Parameters3
ano
integer
required
Ano do PGC. Os PGCs do governo federal começam a aparecer a partir de 2020.
codigo_orgao
any
optional
Código do órgão (filtra os PGCs desse órgão).
codigo_uasg
any
optional
Código UASG (filtro mais específico que codigo_orgao).
Raw schema
{
"type": "object",
"properties": {
"ano": {
"description": "Ano do PGC. Os PGCs do governo federal começam a aparecer a partir de 2020.",
"type": "integer"
},
"codigo_orgao": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código do órgão (filtra os PGCs desse órgão)."
},
"codigo_uasg": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código UASG (filtro mais específico que codigo_orgao)."
}
},
"required": [
"ano"
]
}
compras_pncp_pca_listar
Lista PCAs (Planos Anuais de Contratações) no PNCP.
Endpoint PNCP `/v1/pca/`. Diferente do PGC, o PCA da Lei 14.133 cobre
federais + estaduais + municipais. Filtra por categoria do item
(`codigo_classificacao_superior` é obrigatório no upstream).
Cache 1h.
Parameters5
ano
integer
required
Ano do PCA (Lei 14.133).
codigo_classificacao_superior
integer
required
Código da classificação superior do item no catálogo. Obrigatório no endpoint PNCP. Para CATMAT use o código do grupo; para CATSER use o código da seção. Veja `compras_catmat_listar_grupos` ou `compras_catser_listar_secoes`.
cnpj_orgao
any
optional
CNPJ do órgão (filtra PCAs desse órgão; 14 dígitos).
pagina
integer
optional
Página (1-based).
tamanho_pagina
integer
optional
Registros por página.
Raw schema
{
"type": "object",
"properties": {
"ano": {
"description": "Ano do PCA (Lei 14.133).",
"type": "integer"
},
"codigo_classificacao_superior": {
"description": "Código da classificação superior do item no catálogo. Obrigatório no endpoint PNCP. Para CATMAT use o código do grupo; para CATSER use o código da seção. Veja `compras_catmat_listar_grupos` ou `compras_catser_listar_secoes`.",
"type": "integer"
},
"cnpj_orgao": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CNPJ do órgão (filtra PCAs desse órgão; 14 dígitos)."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
}
},
"required": [
"ano",
"codigo_classificacao_superior"
]
}
compras_pncp_pca_atualizacao
Lista PCAs atualizados num período (PNCP).
Endpoint PNCP `/v1/pca/atualizacao`. Útil para monitoramento: descobrir
quais órgãos revisaram seu PCA recentemente.
Cache 1h.
Parameters4
data_inicial
string
required
Data inicial do período de atualização (YYYY-MM-DD).
data_final
string
required
Data final do período (YYYY-MM-DD). Janela máxima ~30 dias.
pagina
integer
optional
Página (1-based).
tamanho_pagina
integer
optional
Registros por página.
Raw schema
{
"type": "object",
"properties": {
"data_inicial": {
"description": "Data inicial do período de atualização (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"data_final": {
"description": "Data final do período (YYYY-MM-DD). Janela máxima ~30 dias.",
"format": "date",
"type": "string"
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
}
},
"required": [
"data_inicial",
"data_final"
]
}
compras_pncp_pca_por_usuario
Lista PCAs vinculados a um usuário/sistema integrador específico.
Endpoint PNCP `/v1/pca/usuario`. Uso menos comum — geralmente o
analista prefere `compras_pncp_pca_listar` com `cnpj_orgao`.
Cache 1h.
Parameters4
ano
integer
required
Ano do PCA.
id_usuario
integer
required
ID interno de usuário/sistema integrador do PNCP. Obtido na documentação interna do órgão; raramente usado por analistas.
pagina
integer
optional
Página (1-based).
tamanho_pagina
integer
optional
Registros por página.
Raw schema
{
"type": "object",
"properties": {
"ano": {
"description": "Ano do PCA.",
"type": "integer"
},
"id_usuario": {
"description": "ID interno de usuário/sistema integrador do PNCP. Obtido na documentação interna do órgão; raramente usado por analistas.",
"type": "integer"
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
}
},
"required": [
"ano",
"id_usuario"
]
}
compras_pncp_pca_por_classificacao_superior
Lista itens de PCA filtrados por categoria superior do item.
Endpoint PNCP `/v1/pca/` com `codigoClassificacaoSuperior`. Permite
agregar planejamentos por categoria (ex.: todos os itens de TI
planejados para o ano).
Cache 1h.
Parameters4
ano
integer
required
Ano do PCA.
codigo_classificacao_superior
integer
required
Código de classificação superior do item (categoria pai). Veja a tabela de classificação no manual do PNCP.
pagina
integer
optional
Página (1-based).
tamanho_pagina
integer
optional
Registros por página.
Raw schema
{
"type": "object",
"properties": {
"ano": {
"description": "Ano do PCA.",
"type": "integer"
},
"codigo_classificacao_superior": {
"description": "Código de classificação superior do item (categoria pai). Veja a tabela de classificação no manual do PNCP.",
"type": "integer"
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
}
},
"required": [
"ano",
"codigo_classificacao_superior"
]
}
compras_pncp_contratacoes_publicacao
Lista contratações publicadas no PNCP no período.
Endpoint `/v1/contratacoes/publicacao`. Cobre todos os entes da
federação. Modalidades comuns: 6=Pregão Eletrônico, 8=Dispensa,
9=Inexigibilidade, 4=Concorrência Eletrônica.
O filtro `esfera` (federal/estadual/municipal/distrital) é aplicado
client-side sobre a página retornada. Janela máxima por consulta: ~30
dias. Cache 15 min.
Parameters9
data_inicial
string
required
Data inicial de publicação (YYYY-MM-DD).
data_final
string
required
Data final de publicação (YYYY-MM-DD).
codigo_modalidade
integer
required
Código da modalidade (obrigatório no PNCP). Códigos comuns: 1=Leilão Eletrônico, 4=Concorrência Eletrônica, 6=Pregão Eletrônico, 8=Dispensa, 9=Inexigibilidade, 13=Concurso.
uf
any
optional
Sigla da UF.
codigo_municipio_ibge
any
optional
Código IBGE do município (7 dígitos).
cnpj_orgao
any
optional
CNPJ do órgão (14 dígitos).
esfera
any
optional
Filtro opcional de esfera federativa (`federal`, `estadual`, `municipal` ou `distrital`). Aplicado client-side sobre a página retornada — útil para recortar a lista, mas note que `_total_registros` continua refletindo o total **sem** filtro de esfera.
pagina
integer
optional
Página (1-based).
tamanho_pagina
integer
optional
Registros por página (PNCP mínimo 10).
Raw schema
{
"type": "object",
"properties": {
"data_inicial": {
"description": "Data inicial de publicação (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"data_final": {
"description": "Data final de publicação (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"codigo_modalidade": {
"description": "Código da modalidade (obrigatório no PNCP). Códigos comuns: 1=Leilão Eletrônico, 4=Concorrência Eletrônica, 6=Pregão Eletrônico, 8=Dispensa, 9=Inexigibilidade, 13=Concurso.",
"type": "integer"
},
"uf": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sigla da UF."
},
"codigo_municipio_ibge": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código IBGE do município (7 dígitos)."
},
"cnpj_orgao": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CNPJ do órgão (14 dígitos)."
},
"esfera": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtro opcional de esfera federativa (`federal`, `estadual`, `municipal` ou `distrital`). Aplicado client-side sobre a página retornada — útil para recortar a lista, mas note que `_total_registros` continua refletindo o total **sem** filtro de esfera."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página (PNCP mínimo 10).",
"type": "integer"
}
},
"required": [
"data_inicial",
"data_final",
"codigo_modalidade"
]
}
compras_pncp_contratacoes_proposta
Lista contratações com prazo de proposta aberto no PNCP.
Endpoint `/v1/contratacoes/proposta`. Útil para mapear oportunidades
abertas para fornecedores ou para identificar contratações em curso
em órgãos similares. Filtro `esfera` opcional client-side.
Cache 15 min.
Parameters6
data_final
string
required
Data limite para propostas (YYYY-MM-DD).
codigo_modalidade
integer
required
Código da modalidade (ver PNCPListarContratacoesInput).
uf
any
optional
Sigla da UF.
esfera
any
optional
Filtro opcional de esfera federativa (`federal`, `estadual`, `municipal` ou `distrital`). Aplicado client-side sobre a página retornada — útil para recortar a lista, mas note que `_total_registros` continua refletindo o total **sem** filtro de esfera.
pagina
integer
optional
Página (1-based).
tamanho_pagina
integer
optional
Registros por página.
Raw schema
{
"type": "object",
"properties": {
"data_final": {
"description": "Data limite para propostas (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"codigo_modalidade": {
"description": "Código da modalidade (ver PNCPListarContratacoesInput).",
"type": "integer"
},
"uf": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sigla da UF."
},
"esfera": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtro opcional de esfera federativa (`federal`, `estadual`, `municipal` ou `distrital`). Aplicado client-side sobre a página retornada — útil para recortar a lista, mas note que `_total_registros` continua refletindo o total **sem** filtro de esfera."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
}
},
"required": [
"data_final",
"codigo_modalidade"
]
}
compras_pncp_contratacoes_atualizacao
Lista contratações alteradas no período (PNCP).
Endpoint `/v1/contratacoes/atualizacao`. Útil para monitoramento:
descobrir editais que sofreram retificações/republicações. Aceita
filtro `esfera` client-side.
Cache 15 min.
Parameters6
data_inicial
string
required
Data inicial de atualização (YYYY-MM-DD).
data_final
string
required
Data final de atualização (YYYY-MM-DD).
codigo_modalidade
integer
required
Código da modalidade (obrigatório no PNCP). Códigos comuns: 1=Leilão Eletrônico, 4=Concorrência Eletrônica, 6=Pregão Eletrônico, 8=Dispensa, 9=Inexigibilidade, 13=Concurso.
esfera
any
optional
Filtro opcional de esfera federativa (`federal`, `estadual`, `municipal` ou `distrital`). Aplicado client-side sobre a página retornada — útil para recortar a lista, mas note que `_total_registros` continua refletindo o total **sem** filtro de esfera.
pagina
integer
optional
Página (1-based).
tamanho_pagina
integer
optional
Registros por página (PNCP mínimo 10).
Raw schema
{
"type": "object",
"properties": {
"data_inicial": {
"description": "Data inicial de atualização (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"data_final": {
"description": "Data final de atualização (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"codigo_modalidade": {
"description": "Código da modalidade (obrigatório no PNCP). Códigos comuns: 1=Leilão Eletrônico, 4=Concorrência Eletrônica, 6=Pregão Eletrônico, 8=Dispensa, 9=Inexigibilidade, 13=Concurso.",
"type": "integer"
},
"esfera": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtro opcional de esfera federativa (`federal`, `estadual`, `municipal` ou `distrital`). Aplicado client-side sobre a página retornada — útil para recortar a lista, mas note que `_total_registros` continua refletindo o total **sem** filtro de esfera."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página (PNCP mínimo 10).",
"type": "integer"
}
},
"required": [
"data_inicial",
"data_final",
"codigo_modalidade"
]
}
compras_pncp_contratacao_por_orgao
Consulta uma contratação específica pelo CNPJ + ano + sequencial.
Endpoint `/v1/orgaos/{cnpj}/compras/{ano}/{sequencial}`. Devolve
cabeçalho completo da contratação.
Cache 15 min.
Parameters3
cnpj
string
required
CNPJ do órgão (14 dígitos, com ou sem pontuação).
ano
integer
required
Ano da contratação (4 dígitos).
sequencial
integer
required
Sequencial da contratação dentro do órgão e ano.
Raw schema
{
"type": "object",
"properties": {
"cnpj": {
"description": "CNPJ do órgão (14 dígitos, com ou sem pontuação).",
"maxLength": 20,
"minLength": 11,
"type": "string"
},
"ano": {
"description": "Ano da contratação (4 dígitos).",
"type": "integer"
},
"sequencial": {
"description": "Sequencial da contratação dentro do órgão e ano.",
"type": "integer"
}
},
"required": [
"cnpj",
"ano",
"sequencial"
]
}
compras_pncp_contratacao_itens
Lista itens de uma contratação no PNCP.
Endpoint `/v1/orgaos/{cnpj}/compras/{ano}/{sequencial}/itens`.
Cache 15 min.
Parameters5
cnpj
string
required
CNPJ do órgão.
ano
integer
required
Ano da contratação.
sequencial
integer
required
Sequencial da contratação.
pagina
integer
optional
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
optional
Quantidade de registros por página. Padrão 50, máximo 500.
Lista resultados (vencedores) de um item específico de contratação no PNCP.
Endpoint `/v1/orgaos/{cnpj}/compras/{ano}/{sequencial}/itens/{n}/resultados`.
Cache 15 min.
Cheat sheet local: códigos de modalidade de contratação do PNCP.
Tool local (não chama upstream). Fonte: tabela oficial PNCP (Lei 14.133).
**ATENÇÃO — duas tabelas em circulação no ecossistema Compras**:
- `codigo` aqui (PNCP) é o usado em TODAS as tools `compras_pncp_*` e
em `modalidadeIdPncp` no payload de retorno.
- O Dados Abertos / SIASG usa uma enumeração diferente em
`compras_contratacoes_14133_listar(codigo_modalidade_dados_abertos)`:
campo `equivalente_dados_abertos` abaixo, ou None se a modalidade
não estiver disponível naquele endpoint.
Parameters
No parameters.
Raw schema
{
"type": "object",
"properties": {}
}
compras_pncp_contratacao_arquivos
Lista os ARQUIVOS anexos de uma contratação no PNCP (Edital, TR, ETP...).
Endpoint `/v1/orgaos/{cnpj}/compras/{ano}/{sequencial}/arquivos` da API
pública de arquivos do PNCP (host `/api/pncp`, sem chave — diferente de
`/api/consulta`, que exige `chave-api-dadosabertos` e não expõe anexos).
Cada item traz `url` (download direto do PDF/ZIP), `sequencialDocumento`,
`titulo`, `tipoDocumentoNome` (Edital, Termo de Referência, Projeto
Básico, Estudo Técnico Preliminar...). Atenção: o arquivo do Edital vem
frequentemente como ZIP (por vezes ZIP dentro de ZIP) contendo o TR.
Baixe com GET simples na `url` — não é necessário navegador.
Cache 15 min.
Parameters3
cnpj
string
required
CNPJ do órgão (14 dígitos, com ou sem pontuação).
ano
integer
required
Ano da contratação (4 dígitos).
sequencial
integer
required
Sequencial da contratação, SEM zeros à esquerda (ex.: 2101, não 002101).
Raw schema
{
"type": "object",
"properties": {
"cnpj": {
"description": "CNPJ do órgão (14 dígitos, com ou sem pontuação).",
"maxLength": 20,
"minLength": 11,
"type": "string"
},
"ano": {
"description": "Ano da contratação (4 dígitos).",
"type": "integer"
},
"sequencial": {
"description": "Sequencial da contratação, SEM zeros à esquerda (ex.: 2101, não 002101).",
"type": "integer"
}
},
"required": [
"cnpj",
"ano",
"sequencial"
]
}
compras_pncp_ata_arquivos
Lista os ARQUIVOS de uma Ata de Registro de Preços no PNCP (ata + aditivos).
Endpoint `/v1/orgaos/{cnpj}/compras/{anoCompra}/{sequencialCompra}/atas/{sequencialAta}/arquivos`
da API pública de arquivos do PNCP (`/api/pncp`, sem chave).
Aditivos de reequilíbrio/prorrogação aparecem como documentos adicionais
do tipo `Ata de Registro de Preços` — diferencie por `titulo` e
`dataPublicacaoPncp`. Download: GET simples na `url` de cada item.
Cache 15 min.
Parameters4
cnpj
string
required
CNPJ do órgão (14 dígitos, com ou sem pontuação).
ano_compra
integer
required
Ano da COMPRA que originou a ata.
sequencial_compra
integer
required
Sequencial da compra, SEM zeros à esquerda.
sequencial_ata
integer
required
Sequencial da ATA dentro da compra (1-based). É o sufixo numérico de `numeroControlePncpAta` (ex.: `...-000004/2024` → 4).
Raw schema
{
"type": "object",
"properties": {
"cnpj": {
"description": "CNPJ do órgão (14 dígitos, com ou sem pontuação).",
"maxLength": 20,
"minLength": 11,
"type": "string"
},
"ano_compra": {
"description": "Ano da COMPRA que originou a ata.",
"type": "integer"
},
"sequencial_compra": {
"description": "Sequencial da compra, SEM zeros à esquerda.",
"type": "integer"
},
"sequencial_ata": {
"description": "Sequencial da ATA dentro da compra (1-based). É o sufixo numérico de `numeroControlePncpAta` (ex.: `...-000004/2024` → 4).",
"minimum": 1,
"type": "integer"
}
},
"required": [
"cnpj",
"ano_compra",
"sequencial_compra",
"sequencial_ata"
]
}
compras_sancao_ceis
Consulta CEIS — Cadastro de Empresas Inidôneas e Suspensas.
Endpoint `/api-de-dados/ceis`. Empresas com sanção ativa não podem
contratar com a administração pública. Use **sempre** antes de
homologar pregões e contratos.
Cache 1h.
Parameters4
cnpj
any
optional
CNPJ do fornecedor (14 dígitos, com ou sem pontuação).
nome
any
optional
Nome (razão social/fantasia) do sancionado para busca textual.
Consulta CNEP — Cadastro Nacional de Empresas Punidas (Lei Anticorrupção).
Endpoint `/api-de-dados/cnep`. Empresas punidas pela Lei 12.846/2013
(Lei Anticorrupção). Indicador de risco de integridade.
Cache 1h.
Parameters3
cnpj
any
optional
CNPJ do fornecedor (14 dígitos, com ou sem pontuação).
Consulta CEAF — Cadastro de Expulsões da Administração Federal.
Endpoint `/api-de-dados/ceaf`. Servidores expulsos do serviço público
federal. Útil quando se identifica responsável/preposto suspeito.
CPFs mascarados por LGPD (`123.***.***-45`). Cache 1h.
Parameters3
cpf
any
optional
CPF do servidor (11 dígitos, com ou sem pontuação).
Consulta CEPIM — Entidades Privadas Sem Fins Lucrativos Impedidas.
Endpoint `/api-de-dados/cepim`. Aplicável a contratações via convênios
e termos de fomento com OSCs.
Cache 1h.
Lista acordos de leniência firmados com a CGU.
Endpoint `/api-de-dados/acordos-leniencia`. Empresas com acordo ativo
estão sob compromisso de compliance reforçado — informação útil para
análise de risco em contratações de alto valor.
Cache 1h.
Healthcheck/diagnóstico do MCP. Retorna versão, fontes upstream e
estado de configurações sensíveis (sem expor valores).
Útil para confirmar que o servidor está respondendo, qual a versão
instalada, quais APIs estão acessíveis e se a chave da Transparência
foi configurada (necessária para tools de sanções).
Parameters
No parameters.
Raw schema
{
"type": "object",
"properties": {}
}
compras_healthcheck
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.
Parameters2
profundidade
string
optional
'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.
modulo
any
optional
Restringe o probe a um módulo funcional: 'pesquisa_preco', 'catalogo', 'organizacoes', 'atas', 'contratacoes', 'contratos', 'fornecedores', 'indicadores', 'legado', 'planejamento', 'pncp', 'sancoes', 'comprasnet', 'enriquecimento'. Sem valor, testa todos.
Raw schema
{
"type": "object",
"properties": {
"profundidade": {
"default": "rotas",
"description": "'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.",
"enum": [
"basico",
"rotas"
],
"type": "string"
},
"modulo": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Restringe o probe a um módulo funcional: 'pesquisa_preco', 'catalogo', 'organizacoes', 'atas', 'contratacoes', 'contratos', 'fornecedores', 'indicadores', 'legado', 'planejamento', 'pncp', 'sancoes', 'comprasnet', 'enriquecimento'. Sem valor, testa todos."
}
}
}
Pergunte sobre compras públicas em português. Receba a resposta com dado oficial.
Este projeto liga o Claude — ou qualquer assistente de IA compatível com MCP — às APIs públicas do
Compras.gov.br, do PNCP e do Portal da Transparência. Em vez de abrir cinco portais e
cruzar planilhas, você pergunta:
"Qual o preço médio que o governo federal pagou em cadeiras ergonômicas nos últimos 12 meses?"
"O fornecedor do CNPJ 00.000.000/0001-91 tem alguma sanção vigente?"
"Existe ata de registro de preços vigente, com saldo, para notebooks?"
Feito para quem trabalha com planejamento de contratação e execução contratual: ETP, TR,
pesquisa de preços no padrão da IN SEGES/ME 65/2021, adesão a ata (carona), due diligence de
fornecedor, benchmark entre órgãos.
100 tools + 6 prompts + 6 resources, cobrindo catálogo (CATMAT/CATSER), pesquisa de preços,
planejamento (PGC/PCA), atas de registro de preços, contratações pela Lei 14.133 e pela 8.666,
contratos, fornecedores, sanções, PNCP, órgãos e UASGs, indicadores e analítica.
Cinco fontes oficiais, todas públicas: Dados Abertos Compras, PNCP, Portal da
Transparência (CGU), Comprasnet Contratos e BrasilAPI/Receita. Só a de sanções pede uma
chave — gratuita, e apenas para quem roda o próprio servidor.
Preciso saber programar? Não, se você usa o Claude Desktop: é baixar o arquivo e dar
duplo-clique.
Preciso instalar Python? Só se quiser rodar o servidor na sua máquina. A extensão não precisa.
Custa alguma coisa? Não. Todas as APIs usadas são públicas e gratuitas, e o projeto é MIT.
Os dados são oficiais? Sim — vêm direto das APIs do governo, sem intermediário e sem base
própria. Nada é inventado nem armazenado: o servidor só consulta e organiza.
E os dados pessoais? CPFs de servidores vêm mascarados por padrão (123.***.***-45), conforme
a LGPD.
Alguma consulta voltou vazia. É bug? Peça compras_healthcheck ao assistente: em ~30s ele
testa cada API e diz qual está fora do ar. As limitações já conhecidas do upstream estão
documentadas em
Qualidade das APIs públicas.
Contribuir
Issues e pull requests são bem-vindos. Bugs que estão do lado das APIs do governo — e não deste
servidor — ficam catalogados, com reprodução, em
ISSUES_UPSTREAM.md,
prontos para envio aos órgãos mantenedores.
v0.4.0 — 100 tools + 6 prompts + 6 resources, em produção (Railway + Redis). Cada release
recente foi validada em bateria de testes ponta a ponta contra o ambiente de produção, não apenas
local — ver Changelog.
Chave gratuita do Portal da Transparência (CGU). Habilita as tools de sanções (CEIS, CNEP, CEAF, CEPIM). Sem ela, as demais tools seguem funcionando. Cadastro: api.portaldatransparencia.gov.br/api-de-dados/cadastrar-email
REDIS_URLsecret
Opcional. Compartilha o cache TTL entre processos; sem ela o cache fica em memória local.
INCLUIR_CPF_COMPLETOdefault false
Default 'false': CPFs de servidores vêm mascarados (123.***.***-45) por LGPD. Use 'true' apenas quando estritamente necessário.