Call this server's tools from your browser. Nothing to install.
https://mcp-compras.up.railway.app/mcp
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
Filtro de esfera (federal/estadual/municipal/distrital). Só tem efeito no modo 'valor_*' (precisa varrer páginas).
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.
Tamanho de cada bucket da série: 'dia', 'semana', 'mes' ou 'ano'.
Tools (100)
compras_aggregate_contratacoes_por_periodo
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.
read-only
Argument
Type
Description
uf
any
UF opcional.
esfera
any
Filtro de esfera (federal/estadual/municipal/distrital). Só tem efeito no modo 'valor_*' (precisa varrer páginas).
metrica
string
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.
data_final*
string
Data final da janela de agregação (YYYY-MM-DD).
data_inicial*
string
Data inicial da janela de agregação (YYYY-MM-DD).
granularidade
string
Tamanho de cada bucket da série: 'dia', 'semana', 'mes' ou 'ano'.
{
"type": "object",
"required": [
"data_inicial",
"data_final",
"codigo_modalidade"
],
"properties": {
"uf": {
"anyOf": [
{
"type": "string",
"maxLength": 2,
"minLength": 2
},
{
"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)."
},
"metrica": {
"enum": [
"count",
"valor_estimado",
"valor_homologado"
],
"type": "string",
"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."
},
"data_final": {
"type": "string",
"format": "date",
"description": "Data final da janela de agregação (YYYY-MM-DD)."
},
"data_inicial": {
"type": "string",
"format": "date",
"description": "Data inicial da janela de agregação (YYYY-MM-DD)."
},
"granularidade": {
"enum": [
"dia",
"semana",
"mes",
"ano"
],
"type": "string",
"default": "mes",
"description": "Tamanho de cada bucket da série: 'dia', 'semana', 'mes' ou 'ano'."
},
"codigo_modalidade": {
"type": "integer",
"description": "Modalidade PNCP a agregar. Comuns: 6=Pregão Eletrônico, 8=Dispensa, 9=Inexigibilidade, 4=Concorrência Eletrônica."
}
}
}
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.
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
numero_ata*
string
Número simples da ata (ex.: '00001/2024').
numero_item*
integer
Número do item dentro da ata.
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
unidade_gerenciadora*
integer
Código da UASG gerenciadora da ata.
Input schema (JSON)
{
"type": "object",
"required": [
"numero_ata",
"unidade_gerenciadora",
"numero_item"
],
"properties": {
"pagina": {
"type": "integer",
"default": 1,
"description": "Página de resultados (1-based). Padrão 1."
},
"numero_ata": {
"type": "string",
"description": "Número simples da ata (ex.: '00001/2024')."
},
"numero_item": {
"type": "integer",
"description": "Número do item dentro da ata."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500."
},
"unidade_gerenciadora": {
"type": "integer",
"description": "Código da UASG gerenciadora da ata."
}
}
}
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).
read-only
Argument
Type
Description
palavra_chave*
string
Termo a procurar no campo `objetoCompra` das ARPs (case-insensitive, com normalização básica de acentos). Exemplos: 'notebook', 'uniformes', 'limpeza'.
max_resultados
integer
Quantos matches no máximo retornar (curto-circuita a varredura).
max_paginas_varridas
integer
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.
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.
read-only
Argument
Type
Description
numero_controle_pncp_ata*
string
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).
Input schema (JSON)
{
"type": "object",
"required": [
"numero_controle_pncp_ata"
],
"properties": {
"numero_controle_pncp_ata": {
"type": "string",
"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)."
}
}
}
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.
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
tipo_item
any
Tipo do item: 'M' (material) ou 'S' (serviço).
codigo_item
any
Filtra por código CATMAT ou CATSER.
ni_fornecedor
any
CPF/CNPJ do fornecedor (apenas dígitos).
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
data_vigencia_inicial_max*
string
Data máxima de início de vigência (YYYY-MM-DD).
data_vigencia_inicial_min*
string
Data mínima de início de vigência (YYYY-MM-DD).
codigo_unidade_gerenciadora
any
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.
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
codigo_modalidade_compra
any
Filtra por modalidade da compra que originou a ata.
data_vigencia_inicial_max*
string
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.
data_vigencia_inicial_min*
string
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.
numero_ata_registro_preco
any
Filtra por número da ata (ex.: '00001/2024').
codigo_unidade_gerenciadora
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.
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
data_vigencia_final_max*
string
Data MÁXIMA de fim de vigência (YYYY-MM-DD). Obrigatório.
data_vigencia_final_min*
string
Data MÍNIMA de fim de vigência (YYYY-MM-DD). Obrigatório. Janela max ≤ 365 dias.
codigo_unidade_gerenciadora
any
UASG gerenciadora (opcional).
Input schema (JSON)
{
"type": "object",
"required": [
"data_vigencia_final_min",
"data_vigencia_final_max"
],
"properties": {
"pagina": {
"type": "integer",
"default": 1,
"description": "Página de resultados (1-based). Padrão 1."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500."
},
"data_vigencia_final_max": {
"type": "string",
"format": "date",
"description": "Data MÁXIMA de fim de vigência (YYYY-MM-DD). Obrigatório."
},
"data_vigencia_final_min": {
"type": "string",
"format": "date",
"description": "Data MÍNIMA de fim de vigência (YYYY-MM-DD). Obrigatório. Janela max ≤ 365 dias."
},
"codigo_unidade_gerenciadora": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "UASG gerenciadora (opcional)."
}
}
}
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).
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
numero_ata*
string
Número simples da ata (ex.: '00001/2024').
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
unidade_gerenciadora*
integer
Código da UASG gerenciadora da ata.
Input schema (JSON)
{
"type": "object",
"required": [
"numero_ata",
"unidade_gerenciadora"
],
"properties": {
"pagina": {
"type": "integer",
"default": 1,
"description": "Página de resultados (1-based). Padrão 1."
},
"numero_ata": {
"type": "string",
"description": "Número simples da ata (ex.: '00001/2024')."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500."
},
"unidade_gerenciadora": {
"type": "integer",
"description": "Código da UASG gerenciadora da ata."
}
}
}
compras_arp_unidades_item
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.
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
numero_ata*
string
Número simples da ata (ex.: '00001/2024'). Distinto do `numeroControlePncpAta` — use o campo retornado em `compras_arp_listar` ou `compras_arp_itens_listar`.
numero_item*
integer
Número do item dentro da ata.
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
unidade_gerenciadora*
integer
Código da UASG gerenciadora da ata.
Input schema (JSON)
{
"type": "object",
"required": [
"numero_ata",
"unidade_gerenciadora",
"numero_item"
],
"properties": {
"pagina": {
"type": "integer",
"default": 1,
"description": "Página de resultados (1-based). Padrão 1."
},
"numero_ata": {
"type": "string",
"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`."
},
"numero_item": {
"type": "integer",
"description": "Número do item dentro da ata."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500."
},
"unidade_gerenciadora": {
"type": "integer",
"description": "Código da UASG gerenciadora da ata."
}
}
}
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.
read-only
Argument
Type
Description
uf
any
Filtro opcional por UF.
codigo_catmat
any
Código CATMAT do item. Mutuamente exclusivo com codigo_catser.
codigo_catser
any
Código CATSER do serviço. Mutuamente exclusivo com codigo_catmat.
periodo_meses
integer
Janela de busca em meses contados de hoje para trás.
max_resultados
integer
Máximo de contratações similares a retornar (deduplicadas).
Input schema (JSON)
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).
read-only
Argument
Type
Description
termo*
string
Termo de busca textual (descrição do material/serviço). Aceita fragmento — a API faz match parcial. Ex.: 'cadeira ergonomica'.
pagina
integer
Página (1-based).
codigo_pdm
any
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`.
codigo_grupo
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.
read-only
Argument
Type
Description
codigo_item*
integer
Código numérico do item no CATMAT (Catálogo de Materiais). Inteiro de 4 a 8 dígitos. Exemplo: 460789.
Input schema (JSON)
{
"type": "object",
"required": [
"codigo_item"
],
"properties": {
"codigo_item": {
"type": "integer",
"description": "Código numérico do item no CATMAT (Catálogo de Materiais). Inteiro de 4 a 8 dígitos. Exemplo: 460789."
}
}
}
compras_catmat_listar_classes
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.
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
codigo_grupo
any
Restringe a classes pertencentes a este grupo CATMAT. Se omitido, lista classes de todos os grupos.
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
Input schema (JSON)
{
"type": "object",
"properties": {
"pagina": {
"type": "integer",
"default": 1,
"description": "Página de resultados (1-based). Padrão 1."
},
"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."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500."
}
}
}
compras_catmat_listar_grupos
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.
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
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.
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
codigo_pdm
any
Código de um PDM específico.
codigo_grupo
any
Código do grupo CATMAT (2 dígitos) para listar seus PDMs.
apenas_ativos
any
Se `true`, só PDMs com status ativo no catálogo.
codigo_classe
any
Código da classe CATMAT (4 dígitos). É o recorte mais útil: uma classe devolve suas dezenas de PDMs em uma única chamada.
compras_catser_consultar
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.
read-only
Argument
Type
Description
codigo_item*
integer
Código numérico do item no CATSER (Catálogo de Serviços). Inteiro de 4 a 6 dígitos. Exemplo: 27332.
Input schema (JSON)
{
"type": "object",
"required": [
"codigo_item"
],
"properties": {
"codigo_item": {
"type": "integer",
"description": "Código numérico do item no CATSER (Catálogo de Serviços). Inteiro de 4 a 6 dígitos. Exemplo: 27332."
}
}
}
compras_catser_listar_classes
Lista as classes CATSER, opcionalmente filtradas por grupo.
Cache de 24h.
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
codigo_grupo
any
Restringe a classes do grupo CATSER informado.
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
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.
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
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.
read-only
Argument
Type
Description
cnpj*
string
CNPJ do fornecedor (14 dígitos, com ou sem pontuação).
Input schema (JSON)
{
"type": "object",
"required": [
"cnpj"
],
"properties": {
"cnpj": {
"type": "string",
"description": "CNPJ do fornecedor (14 dígitos, com ou sem pontuação)."
}
}
}
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?"_.
read-only
Argument
Type
Description
uf
any
UF opcional.
esfera
any
Esfera federativa. Requer métrica de valor (modo paginado).
label_a
string
Rótulo amigável do período A (ex.: 'Jun/2024').
label_b
string
Rótulo amigável do período B (ex.: 'Jun/2025').
metrica
string
Métrica a comparar: 'count' (rápido) ou 'valor_estimado' / 'valor_homologado' (paginado).
periodo_a_fim*
string
Data final do período A (YYYY-MM-DD).
periodo_b_fim*
string
Data final do período B (YYYY-MM-DD).
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.
read-only
Argument
Type
Description
id_contratacao*
string
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
Qual identificador está sendo passado em `id_contratacao`: 'idCompra' (padrão) ou 'numeroControlePNCPCompra'. O upstream rejeita qualquer outro valor com HTTP 500.
Input schema (JSON)
{
"type": "object",
"required": [
"id_contratacao"
],
"properties": {
"id_contratacao": {
"type": "string",
"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)."
},
"tipo_identificador": {
"enum": [
"idCompra",
"numeroControlePNCPCompra"
],
"type": "string",
"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."
}
}
}
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.
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
cnpj_orgao
any
CNPJ do órgão comprador (14 dígitos, com ou sem pontuação).
codigo_uasg
any
Código da UASG compradora (6 dígitos).
codigo_grupo
any
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
Código da classe do catálogo. Vem nulo em boa parte dos serviços — nesses casos use `codigo_grupo`.
situacao_item
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`.
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
id_contratacao*
string
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).
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
tipo_identificador
string
Qual identificador está sendo passado em `id_contratacao`: 'idCompra' (padrão) ou 'numeroControlePNCPCompra'. O upstream rejeita qualquer outro valor com HTTP 500.
Input schema (JSON)
{
"type": "object",
"required": [
"id_contratacao"
],
"properties": {
"pagina": {
"type": "integer",
"default": 1,
"description": "Página de resultados (1-based). Padrão 1."
},
"id_contratacao": {
"type": "string",
"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)."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500."
},
"tipo_identificador": {
"enum": [
"idCompra",
"numeroControlePNCPCompra"
],
"type": "string",
"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."
}
}
}
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.
read-only
Argument
Type
Description
uf
any
Sigla da UF da unidade compradora (2 letras, ex.: 'SP', 'MS').
pagina
integer
Página (1-based).
cnpj_orgao
any
CNPJ do órgão (14 dígitos, com ou sem pontuação).
codigo_uasg
any
Código UASG do órgão licitante.
amparo_legal
any
Código do amparo legal no PNCP (campo `amparoLegalCodigoPncp`). Ex.: 18 = Lei 14.133/2021, Art. 75, I (dispensa por valor).
tamanho_pagina
integer
Registros por página.
codigo_orgao_pncp
any
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.
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
cnpj_orgao
any
CNPJ do órgão comprador (14 dígitos, com ou sem pontuação).
codigo_uasg
any
Código da UASG compradora (6 dígitos).
ni_fornecedor
any
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.
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
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`.
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
id_contratacao*
string
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).
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
tipo_identificador
string
Qual identificador está sendo passado em `id_contratacao`: 'idCompra' (padrão) ou 'numeroControlePNCPCompra'. O upstream rejeita qualquer outro valor com HTTP 500.
Input schema (JSON)
{
"type": "object",
"required": [
"id_contratacao"
],
"properties": {
"pagina": {
"type": "integer",
"default": 1,
"description": "Página de resultados (1-based). Padrão 1."
},
"id_contratacao": {
"type": "string",
"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)."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500."
},
"tipo_identificador": {
"enum": [
"idCompra",
"numeroControlePNCPCompra"
],
"type": "string",
"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."
}
}
}
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.
read-only
Argument
Type
Description
id_contrato*
integer
ID interno do contrato no Comprasnet (pode ser diferente do id no Dados Abertos). Obtenha em `compras_contrato_comprasnet_por_uasg`.
Input schema (JSON)
{
"type": "object",
"required": [
"id_contrato"
],
"properties": {
"id_contrato": {
"type": "integer",
"description": "ID interno do contrato no Comprasnet (pode ser diferente do id no Dados Abertos). Obtenha em `compras_contrato_comprasnet_por_uasg`."
}
}
}
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.
read-only
Argument
Type
Description
ativos
boolean
Se True (padrão), lista apenas contratos ativos. Set False para incluir inativos via /api/contrato/inativo/ug/{uasg}.
pagina
integer
Página de resultados (1-based). Padrão 1.
codigo_uasg*
integer
Código UASG (5-6 dígitos).
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
Input schema (JSON)
{
"type": "object",
"required": [
"codigo_uasg"
],
"properties": {
"ativos": {
"type": "boolean",
"default": true,
"description": "Se True (padrão), lista apenas contratos ativos. Set False para incluir inativos via /api/contrato/inativo/ug/{uasg}."
},
"pagina": {
"type": "integer",
"default": 1,
"description": "Página de resultados (1-based). Padrão 1."
},
"codigo_uasg": {
"type": "integer",
"description": "Código UASG (5-6 dígitos)."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500."
}
}
}
compras_contrato_cronograma
Lista cronograma financeiro (/api/contrato/{id}/cronograma).
Paginação client-side — alguns contratos têm 200+ entradas mensais.
Cache 15 min.
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
id_contrato*
integer
ID do contrato no Comprasnet.
tamanho_pagina
integer
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.).
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
id_contrato*
integer
ID do contrato no Comprasnet.
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
Consulta um contrato no Dados Abertos (endpoint 1.1).
O upstream exige `codigo + tipo`. Tipos aceitos pela API:
`idCompra` e `numeroControlePncpContrato`.
Cache 15 min.
read-only
Argument
Type
Description
tipo
string
Como interpretar `codigo`: 'idCompra' (id interno da compra) ou 'numeroControlePncpContrato' (identificador PNCP).
codigo*
string
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').
Input schema (JSON)
{
"type": "object",
"required": [
"codigo"
],
"properties": {
"tipo": {
"enum": [
"idCompra",
"numeroControlePncpContrato"
],
"type": "string",
"default": "numeroControlePncpContrato",
"description": "Como interpretar `codigo`: 'idCompra' (id interno da compra) ou 'numeroControlePncpContrato' (identificador PNCP)."
},
"codigo": {
"type": "string",
"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')."
}
}
}
compras_contratos_item_consultar
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.
read-only
Argument
Type
Description
codigo*
string
Identificador do contrato: o `idCompra` numérico ou o número de controle PNCP do contrato, conforme `tipo_identificador`.
pagina
integer
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
tipo_identificador
string
Qual identificador está em `codigo`: 'idCompra' (padrão) ou 'numeroControlePncpContrato'. Outro valor devolve HTTP 500.
Input schema (JSON)
{
"type": "object",
"required": [
"codigo"
],
"properties": {
"codigo": {
"type": "string",
"description": "Identificador do contrato: o `idCompra` numérico ou o número de controle PNCP do contrato, conforme `tipo_identificador`."
},
"pagina": {
"type": "integer",
"default": 1,
"description": "Página de resultados (1-based). Padrão 1."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500."
},
"tipo_identificador": {
"enum": [
"idCompra",
"numeroControlePncpContrato"
],
"type": "string",
"default": "idCompra",
"description": "Qual identificador está em `codigo`: 'idCompra' (padrão) ou 'numeroControlePncpContrato'. Outro valor devolve HTTP 500."
}
}
}
compras_contratos_itens_listar
Lista itens de contratos (endpoint 2).
Upstream exige `codigoOrgao + dataVigenciaInicialMin/Max`. Cache 15 min.
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
tipo_item
any
Tipo do item: 'M' (material) ou 'S' (serviço).
codigo_item
any
Código CATMAT ou CATSER (opcional).
codigo_orgao*
integer
Código do órgão (obrigatório).
ni_fornecedor
any
CPF/CNPJ do fornecedor.
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
data_vigencia_inicial_max*
string
Data máxima de início de vigência (YYYY-MM-DD).
data_vigencia_inicial_min*
string
Data mínima de início de vigência (YYYY-MM-DD). Janela ≤ 365 dias.
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.
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
codigo_orgao*
integer
Código do órgão (obrigatório no upstream). Use `compras_orgao_listar` para descobrir.
ni_fornecedor
any
CPF/CNPJ do fornecedor (apenas dígitos). Opcional.
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
numero_contrato
any
Filtra por número do contrato (ex.: '00031/2015').
codigo_unidade_gestora
any
Filtra pela UASG gestora do contrato.
codigo_modalidade_compra
any
Modalidade da compra que originou o contrato.
data_vigencia_inicial_max
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.
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
codigo_orgao*
integer
Código do órgão (obrigatório).
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
codigo_unidade_gestora
any
UASG gestora (opcional).
data_vigencia_final_max*
string
Data MÁXIMA de fim de vigência (YYYY-MM-DD).
data_vigencia_final_min*
string
Data MÍNIMA de fim de vigência (YYYY-MM-DD). Janela ≤ 365 dias.
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.
read-only
Argument
Type
Description
pagina
integer
Página (1-based).
data_fim
any
Data final da compra (YYYY-MM-DD). Quando omitida, a API usa a data atual.
data_inicio
any
Data inicial da compra (YYYY-MM-DD). Quando omitida, a API usa o início do ano corrente.
tamanho_pagina
integer
Registros por página.
compras_detalhar_preco_servico
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.
read-only
Argument
Type
Description
pagina
integer
Página (1-based).
data_fim
any
Data final (YYYY-MM-DD).
data_inicio
any
Data inicial (YYYY-MM-DD).
tamanho_pagina
integer
Registros por página.
codigo_item_catalogo*
integer
Código CATSER do serviço. Inteiro 4-6 dígitos. Ex.: 27332.
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.
read-only
Argument
Type
Description
cnpj*
string
CNPJ a consultar (14 dígitos, com ou sem pontuação). Usa BrasilAPI por padrão; trocável via env `CNPJ_PROVIDER=minhareceita`.
Input schema (JSON)
{
"type": "object",
"required": [
"cnpj"
],
"properties": {
"cnpj": {
"type": "string",
"maxLength": 20,
"minLength": 11,
"description": "CNPJ a consultar (14 dígitos, com ou sem pontuação). Usa BrasilAPI por padrão; trocável via env `CNPJ_PROVIDER=minhareceita`."
}
}
}
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.
read-only
Argument
Type
Description
cnpj_cpf*
string
CNPJ (14 dígitos) ou CPF (11 dígitos) do fornecedor, com ou sem pontuação.
Input schema (JSON)
{
"type": "object",
"required": [
"cnpj_cpf"
],
"properties": {
"cnpj_cpf": {
"type": "string",
"description": "CNPJ (14 dígitos) ou CPF (11 dígitos) do fornecedor, com ou sem pontuação."
}
}
}
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.
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.
read-only
Argument
Type
Description
codigos_catmat
any
Lista de códigos CATMAT (materiais) a verificar. Use junto com codigos_catser ou separadamente.
codigos_catser
any
Lista de códigos CATSER (serviços).
Input schema (JSON)
{
"type": "object",
"properties": {
"codigos_catmat": {
"anyOf": [
{
"type": "array",
"items": {
"type": "integer"
}
},
{
"type": "null"
}
],
"default": null,
"description": "Lista de códigos CATMAT (materiais) a verificar. Use junto com codigos_catser ou separadamente."
},
"codigos_catser": {
"anyOf": [
{
"type": "array",
"items": {
"type": "integer"
}
},
{
"type": "null"
}
],
"default": null,
"description": "Lista de códigos CATSER (serviços)."
}
}
}
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.
read-only
Argument
Type
Description
cpf
any
Filtrar por CPF (11 dígitos).
cnpj
any
Filtrar por CNPJ (14 dígitos).
ativo
boolean
True (default) para listar apenas ativos, False para apenas inativos.
pagina
integer
Página de resultados (1-based). Padrão 1.
codigo_cnae
any
Código CNAE para filtrar por atividade.
porte_empresa
any
Código de porte da empresa (1=ME, 2=EPP, 3=Demais). Consulte os códigos no manual do Compras.gov.br.
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
natureza_juridica
any
Código da natureza jurídica.
Input schema (JSON)
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.
read-only
Argument
Type
Description
modulo
any
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.
profundidade
string
compras_indicadores_consolidados
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.
read-only
Argument
Type
Description
ano*
integer
Ano de referência dos indicadores (4 dígitos).
mes
any
Mês (1-12). Se omitido, agrega o ano inteiro. Se informado, filtra apenas o mês especificado.
pagina
integer
Página (1-based).
tamanho_pagina
integer
Registros por página.
Input schema (JSON)
{
"type": "object",
"required": [
"ano"
],
"properties": {
"ano": {
"type": "integer",
"maximum": 2100,
"minimum": 2010,
"description": "Ano de referência dos indicadores (4 dígitos)."
},
"mes": {
"anyOf": [
{
"type": "integer",
"maximum": 12,
"minimum": 1
},
{
"type": "null"
}
],
"default": null,
"description": "Mês (1-12). Se omitido, agrega o ano inteiro. Se informado, filtra apenas o mês especificado."
},
"pagina": {
"type": "integer",
"default": 1,
"description": "Página (1-based)."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"maximum": 500,
"minimum": 1,
"description": "Registros por página."
}
}
}
compras_legado_compras_sem_licitacao
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.
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
co_uasg
any
Código UASG (opcional).
co_orgao
any
Código do órgão (opcional).
dt_ano_aviso*
integer
Ano do aviso (ex.: 2024). Obrigatório no upstream.
pertence14133
any
Vincula à Lei 14.133.
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
co_orgao_superior
any
Código do órgão superior (opcional).
nu_aviso_licitacao
any
Número do aviso de licitação.
co_modalidade_licitacao
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`.
read-only
Argument
Type
Description
uasg
any
Código UASG (opcional).
pagina
integer
Página de resultados (1-based). Padrão 1.
modalidade*
integer
Código de modalidade SIASG (obrigatório). Ex.: 5=Pregão, 6=Dispensa.
numero_aviso
any
Número do aviso (opcional).
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
cnpj_fornecedor
any
CNPJ do fornecedor (opcional).
codigo_item_servico
any
Código CATSER (opcional).
codigo_item_material
any
Código CATMAT (opcional).
Input schema (JSON)
compras_legado_itens_pregao_listar
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.
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
id_compra
any
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`.
codigo_uasg
any
Código da UASG que realizou o pregão (só na busca por período).
decreto_7174
any
Filtra itens sujeitos ao Decreto 7.174/2010 (bens e serviços de informática).
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.
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
ano_aviso
any
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
Identificador da compra, para trazer só os itens dela.
codigo_uasg
any
Código da UASG contratante.
codigo_orgao
any
Código do órgão contratante.
codigo_servico
any
Código do serviço (CATSER legado).
compras_legado_licitacao_consultar
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.
read-only
Argument
Type
Description
id_compra*
string
ID da compra no SIASG (string, retornado em `compras_legado_licitacoes_listar`).
Input schema (JSON)
{
"type": "object",
"required": [
"id_compra"
],
"properties": {
"id_compra": {
"type": "string",
"description": "ID da compra no SIASG (string, retornado em `compras_legado_licitacoes_listar`)."
}
}
}
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.
read-only
Argument
Type
Description
pagina
integer
Página de resultados (1-based). Padrão 1.
modalidade
any
Código de modalidade SIASG (opcional).
numero_aviso
any
Número do aviso (opcional).
pertence14133
any
Filtrar somente processos vinculados à Lei 14.133.
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
data_publicacao_final*
string
Data final de publicação (YYYY-MM-DD). Obrigatório no upstream.
data_publicacao_inicial*
string
compras_legado_pregoes_listar
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.
read-only
Argument
Type
Description
numero
any
Número do pregão (opcional).
pagina
integer
Página de resultados (1-based). Padrão 1.
pertence14133
any
Filtrar pregões vinculados à Lei 14.133.
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
dt_data_edital_final*
string
Data final do edital (YYYY-MM-DD). Obrigatório.
ds_tipo_pregao_compra
any
Tipo do pregão de compra (string upstream).
dt_data_edital_inicial*
string
compras_legado_rdc_listar
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.
read-only
Argument
Type
Description
uasg
any
Código UASG (opcional).
orgao
any
Código do órgão (opcional).
pagina
integer
Página de resultados (1-based). Padrão 1.
uf_uasg
any
UF da UASG (sigla, ex.: 'DF').
modalidade
any
Código de modalidade.
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
data_publicacao_max*
string
Data MÁXIMA de publicação (YYYY-MM-DD). Obrigatório.
data_publicacao_min*
string
Data MÍNIMA de publicação (YYYY-MM-DD). Obrigatório.
compras_listar_prompts
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},
...
]
},
...
]
}
read-only
No arguments.
Input schema (JSON)
{
"type": "object",
"properties": {}
}
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,...]},
...
]
}
read-only
No arguments.
Input schema (JSON)
{
"type": "object",
"properties": {}
}
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.
read-only
Argument
Type
Description
numero_ata*
string
Número simples da ata (ex.: '00001/2024'). Usado nos endpoints de saldo, adesões e unidades participantes.
numero_item
any
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.
unidade_gerenciadora*
integer
Código UASG da unidade gerenciadora da ata.
numero_controle_pncp_ata*
string
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`.
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.
read-only
Argument
Type
Description
nome*
string
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
Mapa de argumentos exigidos pelo prompt. Os nomes e tipos vêm de `compras_listar_prompts`. Ex.: {"cnpj_orgao": "00394460000141", "ano": 2025, "sequencial": 12345}.
Input schema (JSON)
{
"type": "object",
"required": [
"nome"
],
"properties": {
"nome": {
"type": "string",
"minLength": 1,
"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`."
},
"argumentos": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"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}."
}
}
}
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.
read-only
Argument
Type
Description
uri*
string
URI do resource. Use `compras_listar_resources` para descobrir URIs disponíveis. Exemplos: `compras://referencia/modalidades-pncp`, `compras://glossario/lei-14133`, `compras://meta/escopo`.
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.
read-only
Argument
Type
Description
nome
any
Filtro textual pelo nome do órgão (match parcial).
Quantidade de registros por página. Padrão 50, máximo 500.
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.
read-only
Argument
Type
Description
cnpj*
string
CNPJ do fornecedor (14 dígitos, com ou sem pontuação).
Input schema (JSON)
{
"type": "object",
"required": [
"cnpj"
],
"properties": {
"cnpj": {
"type": "string",
"maxLength": 20,
"minLength": 11,
"description": "CNPJ do fornecedor (14 dígitos, com ou sem pontuação)."
}
}
}
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.
read-only
Argument
Type
Description
uf
any
Sigla da UF (ex.: 'DF'). Filtra compras realizadas pelo órgão da UF.
pagina
integer
Página (1-based).
data_fim
any
Data final da compra (YYYY-MM-DD). Quando omitida, a API usa a data atual.
codigo_uasg
any
Código da UASG compradora (filtro mais específico ainda).
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'.
read-only
Argument
Type
Description
uf
any
Sigla da UF.
pagina
integer
Página (1-based).
data_fim
any
Data final (YYYY-MM-DD).
codigo_uasg
any
Código UASG.
data_inicio
any
Data inicial (YYYY-MM-DD).
tamanho_pagina
integer
Registros por página.
codigo_municipio
any
Código IBGE do município.
codigo_item_catalogo*
integer
Código CATSER do serviço. Inteiro 4-6 dígitos. Ex.: 27332.
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.
read-only
Argument
Type
Description
uf
any
Filtro opcional por UF (ex.: 'DF').
tipo*
string
Tipo do item: 'material' (consulta CATMAT) ou 'servico' (consulta CATSER).
max_paginas
integer
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.
periodo_meses
integer
Janela de pesquisa em meses contados de hoje para trás. Default 12 (prazo recomendado pela IN SEGES/ME 65/2021 art. 5).
codigo_item_catalogo*
integer
Código CATMAT (material) ou CATSER (serviço).
Input schema (JSON)
{
"type": "object",
"required": [
"tipo",
"codigo_item_catalogo"
],
"properties": {
"uf": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtro opcional por UF (ex.: 'DF')."
},
"tipo": {
"enum": [
"material",
"servico"
],
"type": "string",
"description": "Tipo do item: 'material' (consulta CATMAT) ou 'servico' (consulta CATSER)."
},
"max_paginas": {
"type": "integer",
"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."
},
"periodo_meses": {
"type": "integer",
"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)."
},
"codigo_item_catalogo": {
"type": "integer",
"description": "Código CATMAT (material) ou CATSER (serviço)."
}
}
}
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.
read-only
Argument
Type
Description
ano*
integer
Ano do PGC.
pagina
integer
Página de resultados (1-based). Padrão 1.
codigo_orgao*
integer
Código do órgão (obrigatório nesta consulta — é a chave da agregação).
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
Input schema (JSON)
{
"type": "object",
"required": [
"ano",
"codigo_orgao"
],
"properties": {
"ano": {
"type": "integer",
"description": "Ano do PGC."
},
"pagina": {
"type": "integer",
"default": 1,
"description": "Página de resultados (1-based). Padrão 1."
},
"codigo_orgao": {
"type": "integer",
"description": "Código do órgão (obrigatório nesta consulta — é a chave da agregação)."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500."
}
}
}
compras_pgc_listar
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.
read-only
Argument
Type
Description
ano*
integer
Ano do PGC. Os PGCs do governo federal começam a aparecer a partir de 2020.
pagina
integer
Página (1-based).
codigo_uasg
any
Código UASG (filtro mais específico que codigo_orgao).
codigo_orgao
any
Código do órgão (filtra os PGCs desse órgão).
tamanho_pagina
integer
Registros por página.
Input schema (JSON)
{
"type": "object",
"required": [
"ano"
],
"properties": {
"ano": {
"type": "integer",
"description": "Ano do PGC. Os PGCs do governo federal começam a aparecer a partir de 2020."
},
"pagina": {
"type": "integer",
"default": 1,
"description": "Página (1-based)."
},
"codigo_uasg": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código UASG (filtro mais específico que codigo_orgao)."
},
"codigo_orgao": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código do órgão (filtra os PGCs desse órgão)."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Registros por página."
}
}
}
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.
read-only
Argument
Type
Description
ano*
integer
Ano do PGC. Os PGCs do governo federal começam a aparecer a partir de 2020.
codigo_uasg
any
Código UASG (filtro mais específico que codigo_orgao).
codigo_orgao
any
Código do órgão (filtra os PGCs desse órgão).
Input schema (JSON)
{
"type": "object",
"required": [
"ano"
],
"properties": {
"ano": {
"type": "integer",
"description": "Ano do PGC. Os PGCs do governo federal começam a aparecer a partir de 2020."
},
"codigo_uasg": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código UASG (filtro mais específico que codigo_orgao)."
},
"codigo_orgao": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código do órgão (filtra os PGCs desse órgão)."
}
}
}
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.
read-only
Argument
Type
Description
ano*
integer
Ano do PCA/PGC.
tipo*
string
'M' para CATMAT (material) ou 'S' para CATSER (serviço).
pagina
integer
Página (1-based).
codigo_item*
integer
Código do item no catálogo (CATMAT se tipo='M', CATSER se tipo='S').
tamanho_pagina
integer
Registros por página.
Input schema (JSON)
{
"type": "object",
"required": [
"ano",
"tipo",
"codigo_item"
],
"properties": {
"ano": {
"type": "integer",
"description": "Ano do PCA/PGC."
},
"tipo": {
"enum": [
"M",
"S"
],
"type": "string",
"description": "'M' para CATMAT (material) ou 'S' para CATSER (serviço)."
},
"pagina": {
"type": "integer",
"default": 1,
"description": "Página (1-based)."
},
"codigo_item": {
"type": "integer",
"description": "Código do item no catálogo (CATMAT se tipo='M', CATSER se tipo='S')."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Registros por página."
}
}
}
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.
read-only
Argument
Type
Description
cnpj*
string
CNPJ do órgão (14 dígitos, com ou sem pontuação).
ano_compra*
integer
Ano da COMPRA que originou a ata.
sequencial_ata*
integer
Sequencial da ATA dentro da compra (1-based). É o sufixo numérico de `numeroControlePncpAta` (ex.: `...-000004/2024` → 4).
sequencial_compra*
integer
Sequencial da compra, SEM zeros à esquerda.
Input schema (JSON)
{
"type": "object",
"required": [
"cnpj",
"ano_compra",
"sequencial_compra",
"sequencial_ata"
],
"properties": {
"cnpj": {
"type": "string",
"maxLength": 20,
"minLength": 11,
"description": "CNPJ do órgão (14 dígitos, com ou sem pontuação)."
},
"ano_compra": {
"type": "integer",
"description": "Ano da COMPRA que originou a ata."
},
"sequencial_ata": {
"type": "integer",
"minimum": 1,
"description": "Sequencial da ATA dentro da compra (1-based). É o sufixo numérico de `numeroControlePncpAta` (ex.: `...-000004/2024` → 4)."
},
"sequencial_compra": {
"type": "integer",
"description": "Sequencial da compra, SEM zeros à esquerda."
}
}
}
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 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.
read-only
Argument
Type
Description
ano*
integer
Ano da contratação (4 dígitos).
cnpj*
string
CNPJ do órgão (14 dígitos, com ou sem pontuação).
sequencial*
integer
Sequencial da contratação, SEM zeros à esquerda (ex.: 2101, não 002101).
Input schema (JSON)
{
"type": "object",
"required": [
"cnpj",
"ano",
"sequencial"
],
"properties": {
"ano": {
"type": "integer",
"description": "Ano da contratação (4 dígitos)."
},
"cnpj": {
"type": "string",
"maxLength": 20,
"minLength": 11,
"description": "CNPJ do órgão (14 dígitos, com ou sem pontuação)."
},
"sequencial": {
"type": "integer",
"description": "Sequencial da contratação, SEM zeros à esquerda (ex.: 2101, não 002101)."
}
}
}
compras_pncp_contratacao_item_resultados
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.
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.
read-only
Argument
Type
Description
ano*
integer
Ano da contratação (4 dígitos).
cnpj*
string
CNPJ do órgão (14 dígitos, com ou sem pontuação).
sequencial*
integer
Sequencial da contratação dentro do órgão e ano.
Input schema (JSON)
{
"type": "object",
"required": [
"cnpj",
"ano",
"sequencial"
],
"properties": {
"ano": {
"type": "integer",
"description": "Ano da contratação (4 dígitos)."
},
"cnpj": {
"type": "string",
"maxLength": 20,
"minLength": 11,
"description": "CNPJ do órgão (14 dígitos, com ou sem pontuação)."
},
"sequencial": {
"type": "integer",
"description": "Sequencial da contratação dentro do órgão e ano."
}
}
}
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.
read-only
Argument
Type
Description
esfera
any
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
Página (1-based).
data_final*
string
Data final de atualização (YYYY-MM-DD).
data_inicial*
string
Data inicial de atualização (YYYY-MM-DD).
tamanho_pagina
integer
Registros por página (PNCP mínimo 10).
codigo_modalidade*
integer
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.
Input schema (JSON)
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.
read-only
Argument
Type
Description
uf
any
Sigla da UF.
esfera
any
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
Página (1-based).
data_final*
string
Data limite para propostas (YYYY-MM-DD).
tamanho_pagina
integer
Registros por página.
codigo_modalidade*
integer
Código da modalidade (ver PNCPListarContratacoesInput).
Input schema (JSON)
{
"type": "object",
"required": [
"data_final",
"codigo_modalidade"
],
"properties": {
"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": {
"type": "integer",
"default": 1,
"description": "Página (1-based)."
},
"data_final": {
"type": "string",
"format": "date",
"description": "Data limite para propostas (YYYY-MM-DD)."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Registros por página."
},
"codigo_modalidade": {
"type": "integer",
"description": "Código da modalidade (ver PNCPListarContratacoesInput)."
}
}
}
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.
read-only
Argument
Type
Description
uf
any
Sigla da UF.
esfera
any
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
Página (1-based).
cnpj_orgao
any
CNPJ do órgão (14 dígitos).
data_final*
string
Data final de publicação (YYYY-MM-DD).
data_inicial*
string
Data inicial de publicação (YYYY-MM-DD).
tamanho_pagina
integer
Registros por página (PNCP mínimo 10).
compras_pncp_contrato_por_orgao
Consulta um contrato específico no PNCP.
Endpoint `/v1/orgaos/{cnpj}/contratos/{ano}/{sequencial}`. 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.
read-only
No arguments.
Input schema (JSON)
{
"type": "object",
"properties": {}
}
compras_pncp_orgao_unidades
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).
read-only
Argument
Type
Description
cnpj*
string
CNPJ do órgão (14 dígitos, com ou sem pontuação). Exemplo: 00394460000141 (Presidência da República).
Input schema (JSON)
{
"type": "object",
"required": [
"cnpj"
],
"properties": {
"cnpj": {
"type": "string",
"maxLength": 20,
"minLength": 11,
"description": "CNPJ do órgão (14 dígitos, com ou sem pontuação). Exemplo: 00394460000141 (Presidência da República)."
}
}
}
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.
read-only
Argument
Type
Description
pagina
integer
Página (1-based).
data_final*
string
Data final do período (YYYY-MM-DD). Janela máxima ~30 dias.
data_inicial*
string
Data inicial do período de atualização (YYYY-MM-DD).
tamanho_pagina
integer
Registros por página.
Input schema (JSON)
{
"type": "object",
"required": [
"data_inicial",
"data_final"
],
"properties": {
"pagina": {
"type": "integer",
"default": 1,
"description": "Página (1-based)."
},
"data_final": {
"type": "string",
"format": "date",
"description": "Data final do período (YYYY-MM-DD). Janela máxima ~30 dias."
},
"data_inicial": {
"type": "string",
"format": "date",
"description": "Data inicial do período de atualização (YYYY-MM-DD)."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Registros por página."
}
}
}
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.
read-only
Argument
Type
Description
ano*
integer
Ano do PCA (Lei 14.133).
pagina
integer
Página (1-based).
cnpj_orgao
any
CNPJ do órgão (filtra PCAs desse órgão; 14 dígitos).
tamanho_pagina
integer
Registros por página.
codigo_classificacao_superior*
integer
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`.
Input schema (JSON)
{
"type": "object",
"required": [
"ano",
"codigo_classificacao_superior"
],
"properties": {
"ano": {
"type": "integer",
"description": "Ano do PCA (Lei 14.133)."
},
"pagina": {
"type": "integer",
"default": 1,
"description": "Página (1-based)."
},
"cnpj_orgao": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CNPJ do órgão (filtra PCAs desse órgão; 14 dígitos)."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Registros por página."
},
"codigo_classificacao_superior": {
"type": "integer",
"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`."
}
}
}
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.
read-only
Argument
Type
Description
ano*
integer
Ano do PCA.
pagina
integer
Página (1-based).
tamanho_pagina
integer
Registros por página.
codigo_classificacao_superior*
integer
Código de classificação superior do item (categoria pai). Veja a tabela de classificação no manual do PNCP.
Input schema (JSON)
{
"type": "object",
"required": [
"ano",
"codigo_classificacao_superior"
],
"properties": {
"ano": {
"type": "integer",
"description": "Ano do PCA."
},
"pagina": {
"type": "integer",
"default": 1,
"description": "Página (1-based)."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Registros por página."
},
"codigo_classificacao_superior": {
"type": "integer",
"description": "Código de classificação superior do item (categoria pai). Veja a tabela de classificação no manual do PNCP."
}
}
}
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.
read-only
Argument
Type
Description
ano*
integer
Ano do PCA.
pagina
integer
Página (1-based).
id_usuario*
integer
ID interno de usuário/sistema integrador do PNCP. Obtido na documentação interna do órgão; raramente usado por analistas.
tamanho_pagina
integer
Registros por página.
Input schema (JSON)
{
"type": "object",
"required": [
"ano",
"id_usuario"
],
"properties": {
"ano": {
"type": "integer",
"description": "Ano do PCA."
},
"pagina": {
"type": "integer",
"default": 1,
"description": "Página (1-based)."
},
"id_usuario": {
"type": "integer",
"description": "ID interno de usuário/sistema integrador do PNCP. Obtido na documentação interna do órgão; raramente usado por analistas."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Registros por página."
}
}
}
compras_sancao_acordos_leniencia
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.
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.
read-only
Argument
Type
Description
cpf
any
CPF do servidor (11 dígitos, com ou sem pontuação).
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.
read-only
Argument
Type
Description
cnpj
any
CNPJ do fornecedor (14 dígitos, com ou sem pontuação).
nome
any
Nome (razão social/fantasia) do sancionado para busca textual.
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.
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.
read-only
Argument
Type
Description
cnpj
any
CNPJ do fornecedor (14 dígitos, com ou sem pontuação).
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.
read-only
Argument
Type
Description
termo*
string
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
Página de resultados (1-based). Padrão 1.
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
Input schema (JSON)
{
"type": "object",
"required": [
"termo"
],
"properties": {
"termo": {
"type": "string",
"maxLength": 100,
"minLength": 2,
"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')."
},
"pagina": {
"type": "integer",
"default": 1,
"description": "Página de resultados (1-based). Padrão 1."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500."
}
}
}
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 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.
read-only
Argument
Type
Description
ativo
any
True para apenas UASGs ativas, False para inativas, None para ambas.
pagina
integer
Página de resultados (1-based). Padrão 1.
codigo_orgao
any
compras_versao
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).
read-only
No arguments.
Input schema (JSON)
{
"type": "object",
"properties": {}
}
data_vigencia_final_max*
string
Limite máximo do fim de vigência (YYYY-MM-DD).
data_vigencia_final_min*
string
Limite mínimo do fim de vigência (YYYY-MM-DD). Tipicamente hoje para 'apenas vigentes'.
Input schema (JSON)
{
"type": "object",
"required": [
"palavra_chave",
"data_vigencia_final_min",
"data_vigencia_final_max"
],
"properties": {
"palavra_chave": {
"type": "string",
"minLength": 3,
"description": "Termo a procurar no campo `objetoCompra` das ARPs (case-insensitive, com normalização básica de acentos). Exemplos: 'notebook', 'uniformes', 'limpeza'."
},
"max_resultados": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Quantos matches no máximo retornar (curto-circuita a varredura)."
},
"max_paginas_varridas": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1,
"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."
},
"data_vigencia_final_max": {
"type": "string",
"format": "date",
"description": "Limite máximo do fim de vigência (YYYY-MM-DD)."
},
"data_vigencia_final_min": {
"type": "string",
"format": "date",
"description": "Limite mínimo do fim de vigência (YYYY-MM-DD). Tipicamente hoje para 'apenas vigentes'."
}
}
}
{
"type": "object",
"required": [
"data_vigencia_inicial_min",
"data_vigencia_inicial_max"
],
"properties": {
"pagina": {
"type": "integer",
"default": 1,
"description": "Página de resultados (1-based). Padrão 1."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500."
},
"codigo_modalidade_compra": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtra por modalidade da compra que originou a ata."
},
"data_vigencia_inicial_max": {
"type": "string",
"format": "date",
"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."
},
"data_vigencia_inicial_min": {
"type": "string",
"format": "date",
"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."
},
"numero_ata_registro_preco": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtra por número da ata (ex.: '00001/2024')."
},
"codigo_unidade_gerenciadora": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtra ARPs pela UASG gerenciadora (5-6 dígitos)."
}
}
}
{
"type": "object",
"properties": {
"uf": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtro opcional por UF."
},
"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": {
"type": "integer",
"default": 12,
"description": "Janela de busca em meses contados de hoje para trás."
},
"max_resultados": {
"type": "integer",
"default": 20,
"description": "Máximo de contratações similares a retornar (deduplicadas)."
}
}
}
any
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
Filtro estrutural por classe CATMAT (4 dígitos). Use em conjunto com `codigo_grupo` para focar a busca.
tamanho_pagina
integer
Registros por página.
Input schema (JSON)
{
"type": "object",
"required": [
"termo"
],
"properties": {
"termo": {
"type": "string",
"description": "Termo de busca textual (descrição do material/serviço). Aceita fragmento — a API faz match parcial. Ex.: 'cadeira ergonomica'."
},
"pagina": {
"type": "integer",
"default": 1,
"description": "Página (1-based)."
},
"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`."
},
"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."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Registros por página."
}
}
}
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
Input schema (JSON)
{
"type": "object",
"properties": {
"pagina": {
"type": "integer",
"default": 1,
"description": "Página de resultados (1-based). Padrão 1."
},
"codigo_pdm": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código de um PDM específico."
},
"codigo_grupo": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código do grupo CATMAT (2 dígitos) para listar seus PDMs."
},
"apenas_ativos": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Se `true`, só PDMs com status ativo no catálogo."
},
"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."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500."
}
}
}
periodo_a_inicio*
string
Data inicial do período A (YYYY-MM-DD).
periodo_b_inicio*
string
Data inicial do período B (YYYY-MM-DD).
codigo_modalidade*
integer
Modalidade PNCP a comparar. Comuns: 6=Pregão Eletrônico, 8=Dispensa, 4=Concorrência Eletrônica.
Input schema (JSON)
{
"type": "object",
"required": [
"periodo_a_inicio",
"periodo_a_fim",
"periodo_b_inicio",
"periodo_b_fim",
"codigo_modalidade"
],
"properties": {
"uf": {
"anyOf": [
{
"type": "string",
"maxLength": 2,
"minLength": 2
},
{
"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)."
},
"label_a": {
"type": "string",
"default": "Periodo A",
"maxLength": 80,
"minLength": 1,
"description": "Rótulo amigável do período A (ex.: 'Jun/2024')."
},
"label_b": {
"type": "string",
"default": "Periodo B",
"maxLength": 80,
"minLength": 1,
"description": "Rótulo amigável do período B (ex.: 'Jun/2025')."
},
"metrica": {
"enum": [
"count",
"valor_estimado",
"valor_homologado"
],
"type": "string",
"default": "count",
"description": "Métrica a comparar: 'count' (rápido) ou 'valor_estimado' / 'valor_homologado' (paginado)."
},
"periodo_a_fim": {
"type": "string",
"format": "date",
"description": "Data final do período A (YYYY-MM-DD)."
},
"periodo_b_fim": {
"type": "string",
"format": "date",
"description": "Data final do período B (YYYY-MM-DD)."
},
"periodo_a_inicio": {
"type": "string",
"format": "date",
"description": "Data inicial do período A (YYYY-MM-DD)."
},
"periodo_b_inicio": {
"type": "string",
"format": "date",
"description": "Data inicial do período B (YYYY-MM-DD)."
},
"codigo_modalidade": {
"type": "integer",
"description": "Modalidade PNCP a comparar. Comuns: 6=Pregão Eletrônico, 8=Dispensa, 4=Concorrência Eletrônica."
}
}
}
any
Situação do item da compra. '2' = Homologado, '4' = Cancelado. Filtre por '2' antes de calcular qualquer estatística de preço.
tem_resultado
any
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.
tamanho_pagina
integer
Quantidade de registros por página. Padrão 50, máximo 500.
cod_item_catalogo
any
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.
cnpj_cpf_fornecedor
any
CNPJ ou CPF do fornecedor vencedor do item (só dígitos).
data_final_inclusao*
string
Data final de inclusão dos itens no PNCP (YYYY-MM-DD).
material_ou_servico
any
'M' para material, 'S' para serviço.
data_inicial_inclusao*
string
Data inicial de inclusão dos itens no PNCP (YYYY-MM-DD).
Input schema (JSON)
{
"type": "object",
"required": [
"data_inicial_inclusao",
"data_final_inclusao"
],
"properties": {
"pagina": {
"type": "integer",
"default": 1,
"description": "Página de resultados (1-based). Padrão 1."
},
"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)."
},
"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`."
},
"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."
},
"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."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500."
},
"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."
},
"cnpj_cpf_fornecedor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CNPJ ou CPF do fornecedor vencedor do item (só dígitos)."
},
"data_final_inclusao": {
"type": "string",
"format": "date",
"description": "Data final de inclusão dos itens no PNCP (YYYY-MM-DD)."
},
"material_ou_servico": {
"anyOf": [
{
"enum": [
"M",
"S"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "'M' para material, 'S' para serviço."
},
"data_inicial_inclusao": {
"type": "string",
"format": "date",
"description": "Data inicial de inclusão dos itens no PNCP (YYYY-MM-DD)."
}
}
}
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`.
codigo_ibge_municipio
any
Código IBGE do município da unidade compradora (7 dígitos).
data_final_publicacao
any
Data final de publicação (YYYY-MM-DD).
data_inicial_publicacao
any
Data inicial de publicação (YYYY-MM-DD).
codigo_modalidade_dados_abertos
any
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`.
Input schema (JSON)
{
"type": "object",
"properties": {
"uf": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sigla da UF da unidade compradora (2 letras, ex.: 'SP', 'MS')."
},
"pagina": {
"type": "integer",
"default": 1,
"description": "Página (1-based)."
},
"cnpj_orgao": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CNPJ do órgão (14 dígitos, com ou sem pontuação)."
},
"codigo_uasg": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código UASG do órgão licitante."
},
"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)."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Registros por página."
},
"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`."
},
"codigo_ibge_municipio": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código IBGE do município da unidade compradora (7 dígitos)."
},
"data_final_publicacao": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"default": null,
"description": "Data final de publicação (YYYY-MM-DD)."
},
"data_inicial_publicacao": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"default": null,
"description": "Data inicial de publicação (YYYY-MM-DD)."
},
"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`."
}
}
}
Valor total homologado máximo (R$).
valor_total_min
any
Valor total homologado mínimo (R$). Combinado com a janela de datas, monta fila de auditoria por materialidade.
porte_fornecedor
any
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
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_max
any
Valor unitário homologado máximo (R$).
valor_unitario_min
any
Valor unitário homologado mínimo (R$).
data_final_resultado*
string
Data final do resultado/homologação (YYYY-MM-DD).
data_inicial_resultado*
string
Data inicial do resultado/homologação (YYYY-MM-DD).
Input schema (JSON)
{
"type": "object",
"required": [
"data_inicial_resultado",
"data_final_resultado"
],
"properties": {
"pagina": {
"type": "integer",
"default": 1,
"description": "Página de resultados (1-based). Padrão 1."
},
"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)."
},
"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."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500."
},
"valor_total_max": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Valor total 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."
},
"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_max": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Valor unitário homologado máximo (R$)."
},
"valor_unitario_min": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Valor unitário homologado mínimo (R$)."
},
"data_final_resultado": {
"type": "string",
"format": "date",
"description": "Data final do resultado/homologação (YYYY-MM-DD)."
},
"data_inicial_resultado": {
"type": "string",
"format": "date",
"description": "Data inicial do resultado/homologação (YYYY-MM-DD)."
}
}
}
Data MÍNIMA de início de vigência do contrato (YYYY-MM-DD). Janela max ≤ 365 dias até data_vigencia_inicial_max.
Input schema (JSON)
{
"type": "object",
"required": [
"codigo_orgao",
"data_vigencia_inicial_min",
"data_vigencia_inicial_max"
],
"properties": {
"pagina": {
"type": "integer",
"default": 1,
"description": "Página de resultados (1-based). Padrão 1."
},
"codigo_orgao": {
"type": "integer",
"description": "Código do órgão (obrigatório no upstream). Use `compras_orgao_listar` para descobrir."
},
"ni_fornecedor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CPF/CNPJ do fornecedor (apenas dígitos). Opcional."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500."
},
"numero_contrato": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtra por número do contrato (ex.: '00031/2015')."
},
"codigo_unidade_gestora": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtra pela UASG gestora do contrato."
},
"codigo_modalidade_compra": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Modalidade da compra que originou o contrato."
},
"data_vigencia_inicial_max": {
"type": "string",
"format": "date",
"description": "Data MÁXIMA de início de vigência (YYYY-MM-DD)."
},
"data_vigencia_inicial_min": {
"type": "string",
"format": "date",
"description": "Data MÍNIMA de início de vigência do contrato (YYYY-MM-DD). Janela max ≤ 365 dias até data_vigencia_inicial_max."
}
}
}
codigo_item_catalogo*
integer
Código CATMAT do material. Inteiro 4-8 dígitos. Ex.: 460789.
Input schema (JSON)
{
"type": "object",
"required": [
"codigo_item_catalogo"
],
"properties": {
"pagina": {
"type": "integer",
"default": 1,
"description": "Página (1-based)."
},
"data_fim": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"default": null,
"description": "Data final da compra (YYYY-MM-DD). Quando omitida, a API usa a data atual."
},
"data_inicio": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"default": null,
"description": "Data inicial da compra (YYYY-MM-DD). Quando omitida, a API usa o início do ano corrente."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Registros por página."
},
"codigo_item_catalogo": {
"type": "integer",
"description": "Código CATMAT do material. Inteiro 4-8 dígitos. Ex.: 460789."
}
}
}
{
"type": "object",
"properties": {
"cpf": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtrar por CPF (11 dígitos)."
},
"cnpj": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtrar por CNPJ (14 dígitos)."
},
"ativo": {
"type": "boolean",
"default": true,
"description": "True (default) para listar apenas ativos, False para apenas inativos."
},
"pagina": {
"type": "integer",
"default": 1,
"description": "Página de resultados (1-based). Padrão 1."
},
"codigo_cnae": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código CNAE para filtrar por atividade."
},
"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."
},
"tamanho_pagina": {
"type": "integer",
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500."
},
"natureza_juridica": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código da natureza jurídica."
}
}
}
'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.
Input schema (JSON)
{
"type": "object",
"properties": {
"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."
},
"profundidade": {
"enum": [
"basico",
"rotas"
],
"type": "string",
"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."
}
}
}
{
"type": "object",
"required": [
"numero_controle_pncp_ata",
"numero_ata",
"unidade_gerenciadora"
],
"properties": {
"numero_ata": {
"type": "string",
"description": "Número simples da ata (ex.: '00001/2024'). Usado nos endpoints de saldo, adesões e unidades participantes."
},
"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."
},
"unidade_gerenciadora": {
"type": "integer",
"description": "Código UASG da unidade gerenciadora da ata."
},
"numero_controle_pncp_ata": {
"type": "string",
"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`."
}
}
}