Server definition
- Hash
- sha256:8420aff0a50810a38600f4c49ff91e4802d0be294437b546583edfca34469274
- What it is
- What a remote MCP server returned when asked what it offers: 100 tools
The blob, as servednamed by its sha256
{
"instructions": "MCP server unificando APIs públicas do ecossistema Compras.gov.br (Dados Abertos, PNCP e Portal da Transparência/CGU). Voltado a analistas e técnicos de planejamento de contratação e execução contratual: apoio a Estudos Técnicos Preliminares (ETP), Termos de Referência (TR), pesquisa de preços (IN SEGES/ME 65/2021), consulta de atas de registro de preço, contratos vigentes, fornecedores e sanções (CEIS/CNEP/CEAF). Os dados são oficiais do governo federal; algumas consultas podem demorar 2-5s.",
"tools": [
{
"description": "Série temporal de contratações no PNCP por bucket.\n\n**Modo `count` (recomendado para tendência)**: 1 chamada por bucket\nlendo apenas `totalRegistros`. Janelas grandes (até 5 anos) são viáveis.\n\n**Modo `valor_*`**: varre todas as páginas de cada bucket para somar.\nMais lento; limita-se a `MAX_PAGES_PER_BUCKET=25` páginas (× 500 itens =\n12.500 registros máx por bucket). Sinaliza `truncado=true` quando bate\no teto.\n\nConcurrency interna: 4 calls simultâneas. Cache 30 min.",
"inputSchema": {
"properties": {
"codigo_modalidade": {
"description": "Modalidade PNCP a agregar. Comuns: 6=Pregão Eletrônico, 8=Dispensa, 9=Inexigibilidade, 4=Concorrência Eletrônica.",
"type": "integer"
},
"data_final": {
"description": "Data final da janela de agregação (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"data_inicial": {
"description": "Data inicial da janela de agregação (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"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)."
},
"granularidade": {
"default": "mes",
"description": "Tamanho de cada bucket da série: 'dia', 'semana', 'mes' ou 'ano'.",
"enum": [
"dia",
"semana",
"mes",
"ano"
],
"type": "string"
},
"metrica": {
"default": "count",
"description": "Métrica a calcular: 'count' (rápido, 1 call por bucket), 'valor_estimado' ou 'valor_homologado' (paginado, mais lento). Use 'count' para tendência pura; só ative valores quando necessário.",
"enum": [
"count",
"valor_estimado",
"valor_homologado"
],
"type": "string"
},
"uf": {
"anyOf": [
{
"maxLength": 2,
"minLength": 2,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "UF opcional."
}
},
"required": [
"data_inicial",
"data_final",
"codigo_modalidade"
],
"type": "object"
},
"name": "compras_aggregate_contratacoes_por_periodo",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista adesões (caronas) já realizadas a uma ARP.\n\nEndpoint Dados Abertos `/modulo-arp/5_consultarAdesoesItem`. Mostra\nquem aderiu e com que quantidade — indica nível de demanda e quanto\nainda resta no limite legal de adesões.\n\nCache 15 min.",
"inputSchema": {
"properties": {
"numero_ata": {
"description": "Número simples da ata (ex.: '00001/2024').",
"type": "string"
},
"numero_item": {
"description": "Número do item dentro da ata.",
"type": "integer"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
},
"unidade_gerenciadora": {
"description": "Código da UASG gerenciadora da ata.",
"type": "integer"
}
},
"required": [
"numero_ata",
"unidade_gerenciadora",
"numero_item"
],
"type": "object"
},
"name": "compras_arp_adesoes_item",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Busca ARPs vigentes cujo `objeto` contém uma palavra-chave.\n\nResolve a limitação do endpoint `/modulo-arp/1.2_consultarARP_FimVigencia`,\nque não aceita filtro por texto: pagina internamente até `max_paginas_varridas`\ne filtra client-side por presença de `palavra_chave` (case-insensitive,\ncom normalização de acentos). Curto-circuita quando atinge `max_resultados`.\n\nO servidor faz o trabalho que antes era pedido ao LLM — sem isso, o\nroteiro `oportunidades_carona_arp` esbarrava em 169k ARPs vigentes e\n339 páginas. Achado da bateria A v0.3.5.\n\n**Limitação conhecida**: o schema upstream de ARP **não traz UF** no\nitem — só `nomeOrgao` e `nomeUnidadeGerenciadora`. Para filtrar por\nUF, cruze os matches com `compras_uasg_consultar` usando\n`codigoUnidadeGerenciadora` e compare `unidade.uf`. Não tentamos esse\ncruzamento aqui para manter a tool barata e previsível.\n\nOutput:\n {\n \"resultado\": [<ARPs que casaram>],\n \"total_examinadas\": int,\n \"matches\": int,\n \"paginas_varridas\": int,\n \"curto_circuitou\": bool,\n \"_filtro_objeto\": {...}\n }\n\nCache 15 min por (palavra_chave + janela + caps).",
"inputSchema": {
"properties": {
"data_vigencia_final_max": {
"description": "Limite máximo do fim de vigência (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"data_vigencia_final_min": {
"description": "Limite mínimo do fim de vigência (YYYY-MM-DD). Tipicamente hoje para 'apenas vigentes'.",
"format": "date",
"type": "string"
},
"max_paginas_varridas": {
"default": 10,
"description": "Quantas páginas do upstream serão varridas para encontrar matches (proteção de latência). Default 10 × 500 itens = até 5.000 ARPs examinadas. Cap em 50.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"max_resultados": {
"default": 20,
"description": "Quantos matches no máximo retornar (curto-circuita a varredura).",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"palavra_chave": {
"description": "Termo a procurar no campo `objetoCompra` das ARPs (case-insensitive, com normalização básica de acentos). Exemplos: 'notebook', 'uniformes', 'limpeza'.",
"minLength": 3,
"type": "string"
}
},
"required": [
"palavra_chave",
"data_vigencia_final_min",
"data_vigencia_final_max"
],
"type": "object"
},
"name": "compras_arp_buscar_por_objeto",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Consulta uma ARP específica pelo identificador PNCP.\n\nEndpoint Dados Abertos `/modulo-arp/1.1_consultarARP_Id`. Devolve o\ncabeçalho completo da ata (vigência, modalidade, gerenciadora, valores).\n\nQuando o `numero_controle_pncp_ata` vem no formato de **compra** (sem\no sufixo `-NNNNNN` que numera a ata), a tool detecta e devolve\ndiagnóstico explícito em vez de propagar `encontrada=false` silencioso.\n\nCache 15 min.",
"inputSchema": {
"properties": {
"numero_controle_pncp_ata": {
"description": "Identificador PNCP da **ata** (formato `cnpj14-1-sequencial/ano-NNNNNN`, onde NNNNNN numera a ata dentro da compra — compras SRP multi-fornecedor geram várias atas). Exemplo: `00394452000103-1-004729/2024-000006`. Retornado em `compras_arp_por_fim_vigencia` no campo `numeroControlePncpAta`. NÃO confundir com `numeroControlePncpCompra` (formato sem o sufixo).",
"type": "string"
}
},
"required": [
"numero_controle_pncp_ata"
],
"type": "object"
},
"name": "compras_arp_consultar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista itens de ARPs na janela de vigência informada.\n\nEndpoint Dados Abertos `/modulo-arp/2_consultarARPItem`. O upstream\nexige `dataVigenciaInicialMin/Max` (janela ≤365 dias). Use filtros\nopcionais para localizar atas com um item específico.\n\nCache 15 min.",
"inputSchema": {
"properties": {
"codigo_item": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtra por código CATMAT ou CATSER."
},
"codigo_unidade_gerenciadora": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "UASG gerenciadora (opcional)."
},
"data_vigencia_inicial_max": {
"description": "Data máxima de início de vigência (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"data_vigencia_inicial_min": {
"description": "Data mínima de início de vigência (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"ni_fornecedor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CPF/CNPJ do fornecedor (apenas dígitos)."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
},
"tipo_item": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Tipo do item: 'M' (material) ou 'S' (serviço)."
}
},
"required": [
"data_vigencia_inicial_min",
"data_vigencia_inicial_max"
],
"type": "object"
},
"name": "compras_arp_itens_listar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista Atas de Registro de Preço (ARPs) por janela de início de vigência.\n\nEndpoint Dados Abertos `/modulo-arp/1_consultarARP`. O upstream exige\njanela `dataVigenciaInicialMin/Max` (≤ 365 dias). Para listar atas\npróximas do vencimento, use `compras_arp_por_fim_vigencia`.\n\nCache 15 min.",
"inputSchema": {
"properties": {
"codigo_modalidade_compra": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtra por modalidade da compra que originou a ata."
},
"codigo_unidade_gerenciadora": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtra ARPs pela UASG gerenciadora (5-6 dígitos)."
},
"data_vigencia_inicial_max": {
"description": "Data MÁXIMA do início da vigência da ata (YYYY-MM-DD). Obrigatório. Janela max ≤ 365 dias a partir de data_vigencia_inicial_min.",
"format": "date",
"type": "string"
},
"data_vigencia_inicial_min": {
"description": "Data MÍNIMA do início da vigência da ata (YYYY-MM-DD). Obrigatório. A janela entre min e max deve ser de no máximo 365 dias.",
"format": "date",
"type": "string"
},
"numero_ata_registro_preco": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtra por número da ata (ex.: '00001/2024')."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"data_vigencia_inicial_min",
"data_vigencia_inicial_max"
],
"type": "object"
},
"name": "compras_arp_listar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista ARPs cuja vigência termina dentro do intervalo informado.\n\nEndpoint Dados Abertos `/modulo-arp/1.2_consultarARP_FimVigencia`.\nPermite ao gestor identificar atas próximas do vencimento.\n\nCache 15 min.",
"inputSchema": {
"properties": {
"codigo_unidade_gerenciadora": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "UASG gerenciadora (opcional)."
},
"data_vigencia_final_max": {
"description": "Data MÁXIMA de fim de vigência (YYYY-MM-DD). Obrigatório.",
"format": "date",
"type": "string"
},
"data_vigencia_final_min": {
"description": "Data MÍNIMA de fim de vigência (YYYY-MM-DD). Obrigatório. Janela max ≤ 365 dias.",
"format": "date",
"type": "string"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"data_vigencia_final_min",
"data_vigencia_final_max"
],
"type": "object"
},
"name": "compras_arp_por_fim_vigencia",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Devolve o **saldo** (quantidade ainda disponível) por item da ARP.\n\nEndpoint Dados Abertos `/modulo-arp/4_consultarEmpenhosSaldoItem`.\n**Crítico para adesão**: a ata pode estar vigente mas com saldo\nzerado. Sem saldo, não há como aderir.\n\n**Estrutura do payload**: o upstream retorna **1 linha por\n(numeroItem, unidade, tipo)** — onde `tipo` pode ser `GERENCIADORA`,\n`PARTICIPANTE` etc. O mesmo `numeroItem` aparece várias vezes quando\nhá múltiplas unidades alocadas (carona ou rateio). **Não é\nduplicação** — são alocações distintas dentro da mesma ata.\n\nPara evitar confusão (achado bateria A v0.3.5), além do `resultado`\ncru, anexamos `resumo_por_item`: dicionário agregando por\n`numeroItem` com soma das quantidades registradas/empenhadas e\nsaldo total — pronto para decisão de adesão.\n\nCache 15 min (saldo muda ao longo do dia).",
"inputSchema": {
"properties": {
"numero_ata": {
"description": "Número simples da ata (ex.: '00001/2024').",
"type": "string"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
},
"unidade_gerenciadora": {
"description": "Código da UASG gerenciadora da ata.",
"type": "integer"
}
},
"required": [
"numero_ata",
"unidade_gerenciadora"
],
"type": "object"
},
"name": "compras_arp_saldo_item",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista UGs participantes (potenciais caronas) de um item da ARP.\n\nEndpoint Dados Abertos `/modulo-arp/3_consultarUnidadesItem`. Determina\nquais unidades podem usar a ata como carona (adesão).\nCache 15 min.",
"inputSchema": {
"properties": {
"numero_ata": {
"description": "Número simples da ata (ex.: '00001/2024'). Distinto do `numeroControlePncpAta` — use o campo retornado em `compras_arp_listar` ou `compras_arp_itens_listar`.",
"type": "string"
},
"numero_item": {
"description": "Número do item dentro da ata.",
"type": "integer"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
},
"unidade_gerenciadora": {
"description": "Código da UASG gerenciadora da ata.",
"type": "integer"
}
},
"required": [
"numero_ata",
"unidade_gerenciadora",
"numero_item"
],
"type": "object"
},
"name": "compras_arp_unidades_item",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Federa Dados Abertos + PNCP buscando contratações similares.\n\nComposição: consulta os **itens** de contratações 14.133 no Dados Abertos\n(`/modulo-contratacoes/2_`, filtrando por `codItemCatalogo` e só itens com\nresultado) + publicações PNCP do período, deduplica pelo número de controle\nPNCP e devolve os `max_resultados` mais recentes. Insumo para mapear\nbenchmarks de outros órgãos.\n\nO recorte por CATMAT/CATSER vale para a perna Dados Abertos. A perna PNCP é\nbest-effort por modalidade e não aceita filtro por item de catálogo — por\nisso `amostra_dados_abertos` e `amostra_pncp` vêm separadas no payload.\n\n**Atenção latência**: chama o PNCP em 3 modalidades (Pregão, Dispensa,\nConcorrência) em paralelo. Cada chamada PNCP costuma levar 30-60s — o\ntempo total da composta tende a 60-90s quando o cache está frio. Com\nRedis configurado as chamadas seguintes voltam em <1s.",
"inputSchema": {
"properties": {
"codigo_catmat": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código CATMAT do item. Mutuamente exclusivo com codigo_catser."
},
"codigo_catser": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código CATSER do serviço. Mutuamente exclusivo com codigo_catmat."
},
"max_resultados": {
"default": 20,
"description": "Máximo de contratações similares a retornar (deduplicadas).",
"type": "integer"
},
"periodo_meses": {
"default": 12,
"description": "Janela de busca em meses contados de hoje para trás.",
"type": "integer"
},
"uf": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtro opcional por UF."
}
},
"type": "object"
},
"name": "compras_buscar_contratacoes_similares",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Busca itens CATMAT.\n\n**⚠️ Não existe busca por substring nesta API.** O contrato do\n`/modulo-material/4_consultarItemMaterial` oferece `descricaoItem`, que é\n**match exato**: `descricaoItem='CADEIRA'` devolve zero registros, embora o\ncatálogo tenha milhares de itens começando por \"CADEIRA ESCRITÓRIO...\".\nNão é um filtro degradado — é um filtro de igualdade, e o termo livre que o\nusuário digita quase nunca casa com a descrição inteira do item.\n\nPor isso o `termo` **não** é enviado ao upstream: mandá-lo faria a chamada\nretornar o universo inteiro (~340 mil itens) sem nenhum aviso. Ele é usado\npara ordenar e marcar os resultados do recorte estrutural, e a filtragem\nreal vem de `codigo_grupo`, `codigo_classe` e `codigo_pdm`.\n\n**Workflow recomendado**:\n1. `compras_catmat_listar_grupos()` → escolher o grupo (ex.: 71=Mobiliários).\n2. `compras_catmat_listar_classes(codigo_grupo=71)` → a classe (ex.: 7110).\n3. `compras_catmat_listar_pdms(codigo_classe=7110)` → o PDM do material.\n4. `compras_catmat_buscar(termo='cadeira', codigo_pdm=...)`.\n\nEsta tool emite `_aviso_filtro` no payload quando o recorte informado é\nlargo demais para ser útil.\n\nCache 24h por (termo + filtros + página).",
"inputSchema": {
"properties": {
"codigo_classe": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtro estrutural por classe CATMAT (4 dígitos). Use em conjunto com `codigo_grupo` para focar a busca."
},
"codigo_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_pdm": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtro estrutural por PDM (Padrão Descritivo de Material). É o recorte mais preciso do CATMAT: agrupa as variações de um mesmo material. Obtenha o código em `compras_catmat_listar_pdms`."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
},
"termo": {
"description": "Termo de busca textual (descrição do material/serviço). Aceita fragmento — a API faz match parcial. Ex.: 'cadeira ergonomica'.",
"type": "string"
}
},
"required": [
"termo"
],
"type": "object"
},
"name": "compras_catmat_buscar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Consulta detalhes de um item CATMAT específico pelo código.\n\nDevolve nome do item, PDM, grupo, classe, características, NCM e\nunidades de fornecimento. Útil para confirmar o código antes de\nfazer pesquisa de preços ou listar contratações similares.\n\nCache de 24h.",
"inputSchema": {
"properties": {
"codigo_item": {
"description": "Código numérico do item no CATMAT (Catálogo de Materiais). Inteiro de 4 a 8 dígitos. Exemplo: 460789.",
"type": "integer"
}
},
"required": [
"codigo_item"
],
"type": "object"
},
"name": "compras_catmat_consultar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista as classes do CATMAT, opcionalmente filtradas por grupo.\n\nClasses são o segundo nível da hierarquia (ex.: dentro do grupo 71\nMobiliário, a classe 7110 é \"Mobiliário de escritório\").\n\nCache de 24h.",
"inputSchema": {
"properties": {
"codigo_grupo": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Restringe a classes pertencentes a este grupo CATMAT. Se omitido, lista classes de todos os grupos."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"type": "object"
},
"name": "compras_catmat_listar_classes",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista os grupos do CATMAT (Catálogo de Materiais).\n\nGrupos são o nível mais alto da hierarquia CATMAT (ex.: 10=ARMAMENTO,\n11=MATERIAIS BÉLICOS NUCLEARES). Use esta tool para enquadrar a\ncontratação no grupo correto antes de descer para classes/PDM/itens.\n\nCache de 24h: os grupos mudam muito raramente. Total atual ~79 grupos.",
"inputSchema": {
"properties": {
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"type": "object"
},
"name": "compras_catmat_listar_grupos",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista os PDMs (Padrão Descritivo de Material) do CATMAT.\n\nEndpoint `/modulo-material/3_consultarPdmMaterial`. É o terceiro nível da\nhierarquia do catálogo: grupo → classe → **PDM** → item.\n\nO PDM é o que dá nome à família do material (\"CADEIRA ESCRITÓRIO\",\n\"MICROCOMPUTADOR\"), enquanto o item é uma variação específica dela. Como a\nAPI não faz busca por substring, descer até o PDM é a forma prática de\nlocalizar o material certo antes de pedir os itens.\n\nUma classe devolve suas dezenas de PDMs nomeados em **uma** chamada — a\nclasse 7110 (Mobiliário de escritório) tem 98 PDMs. A alternativa seria\nvarrer milhares de itens e deduplicar `codigoPdm` client-side.\n\n**Isto é navegação hierárquica, não busca**: o endpoint não tem filtro\ntextual. Combine com `compras_catmat_listar_grupos` e\n`compras_catmat_listar_classes` para descer a hierarquia, e depois passe o\n`codigo_pdm` para `compras_catmat_buscar`.\n\nCache 24h.",
"inputSchema": {
"properties": {
"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."
},
"codigo_grupo": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código do grupo CATMAT (2 dígitos) para listar seus PDMs."
},
"codigo_pdm": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código de um PDM específico."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"type": "object"
},
"name": "compras_catmat_listar_pdms",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Consulta detalhes de um item CATSER pelo código.\n\nDevolve nome do serviço, descrição, seção/divisão/grupo/classe e\nunidades de medida. Use para confirmar o código antes de pesquisar\npreços ou contratações similares.\n\nCache de 24h.",
"inputSchema": {
"properties": {
"codigo_item": {
"description": "Código numérico do item no CATSER (Catálogo de Serviços). Inteiro de 4 a 6 dígitos. Exemplo: 27332.",
"type": "integer"
}
},
"required": [
"codigo_item"
],
"type": "object"
},
"name": "compras_catser_consultar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista as classes CATSER, opcionalmente filtradas por grupo.\n\nCache de 24h.",
"inputSchema": {
"properties": {
"codigo_grupo": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Restringe a classes do grupo CATSER informado."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"type": "object"
},
"name": "compras_catser_listar_classes",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista as seções do CATSER (Catálogo de Serviços).\n\nSeções são o nível mais alto da hierarquia CATSER (baseada no CPC ONU).\nUse para enquadrar a contratação de serviços em uma seção antes de\ndescer para divisões/grupos/classes/itens.\n\nCache de 24h.",
"inputSchema": {
"properties": {
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"type": "object"
},
"name": "compras_catser_listar_secoes",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Consolida sanções de um fornecedor (CEIS + CNEP + CEPIM + leniência + impedimentos).\n\nComposição: chama em paralelo as listas do Portal da Transparência e os\nimpedimentos do Comprasnet. Retorna um veredito booleano + lista\nconsolidada de sanções ativas.\n\nLevanta `ComprasAuthError` se `TRANSPARENCIA_API_KEY` não estiver configurada.\nSempre use antes de homologar pregões/contratos. Cache 10 min.",
"inputSchema": {
"properties": {
"cnpj": {
"description": "CNPJ do fornecedor (14 dígitos, com ou sem pontuação).",
"type": "string"
}
},
"required": [
"cnpj"
],
"type": "object"
},
"name": "compras_checar_sancoes_fornecedor",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Compara dois períodos lado a lado para a mesma modalidade.\n\nWrapper sobre `compras_aggregate_contratacoes_por_periodo` chamado duas\nvezes (granularidade='ano' implícita — soma todo o período em 1 bucket).\n\nRetorna totais de A e B + delta absoluto + delta percentual.\n\nCaso de uso típico: _\"Houve antecipação de licitações em Jun/2024 (ano\neleitoral) comparado a Jun/2025?\"_ Ou _\"As dispensas em Dez/2024 foram\nmaiores que Dez/2023 no mesmo órgão?\"_.",
"inputSchema": {
"properties": {
"codigo_modalidade": {
"description": "Modalidade PNCP a comparar. Comuns: 6=Pregão Eletrônico, 8=Dispensa, 4=Concorrência Eletrônica.",
"type": "integer"
},
"esfera": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Esfera federativa. Requer métrica de valor (modo paginado)."
},
"label_a": {
"default": "Periodo A",
"description": "Rótulo amigável do período A (ex.: 'Jun/2024').",
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"label_b": {
"default": "Periodo B",
"description": "Rótulo amigável do período B (ex.: 'Jun/2025').",
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"metrica": {
"default": "count",
"description": "Métrica a comparar: 'count' (rápido) ou 'valor_estimado' / 'valor_homologado' (paginado).",
"enum": [
"count",
"valor_estimado",
"valor_homologado"
],
"type": "string"
},
"periodo_a_fim": {
"description": "Data final do período A (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"periodo_a_inicio": {
"description": "Data inicial do período A (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"periodo_b_fim": {
"description": "Data final do período B (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"periodo_b_inicio": {
"description": "Data inicial do período B (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"uf": {
"anyOf": [
{
"maxLength": 2,
"minLength": 2,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "UF opcional."
}
},
"required": [
"periodo_a_inicio",
"periodo_a_fim",
"periodo_b_inicio",
"periodo_b_fim",
"codigo_modalidade"
],
"type": "object"
},
"name": "compras_comparar_periodos_contratacoes",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Consulta uma contratação 14.133 pelo identificador.\n\nEndpoint `/modulo-contratacoes/1.1_consultarContratacoes_PNCP_14133_Id`.\nDevolve detalhes completos: objeto, valor estimado, modalidade,\ninstrumento convocatório, status no PNCP.\n\nAceita os dois identificadores do PNCP. Use `tipo_identificador='idCompra'`\ncom o campo `idCompra` das listagens, ou `'numeroControlePNCPCompra'` com o\nnúmero de controle que aparece no edital (ex.: `10673078000120-1-000021/2025`).\n\nCache 15 min.",
"inputSchema": {
"properties": {
"id_contratacao": {
"description": "Identificador da contratação. Aceita dois formatos, conforme `tipo_identificador`: o `idCompra` (17 dígitos, campo `idCompra` das listagens, ex.: '15813206001272025') ou o número de controle PNCP (alfanumérico com barra, campo `numeroControlePNCP`, ex.: '10673078000120-1-000021/2025' — é o número que aparece no edital).",
"type": "string"
},
"tipo_identificador": {
"default": "idCompra",
"description": "Qual identificador está sendo passado em `id_contratacao`: 'idCompra' (padrão) ou 'numeroControlePNCPCompra'. O upstream rejeita qualquer outro valor com HTTP 500.",
"enum": [
"idCompra",
"numeroControlePNCPCompra"
],
"type": "string"
}
},
"required": [
"id_contratacao"
],
"type": "object"
},
"name": "compras_contratacoes_14133_consultar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista itens de contratações 14.133 incluídos no período.\n\nEndpoint `/modulo-contratacoes/2_consultarItensContratacoes_PNCP_14133`.\n\n**Uso principal — pesquisa de preço por item.** Com `cod_item_catalogo`\n(CATMAT/CATSER) cada linha traz, junto, `quantidade`,\n`valorUnitarioEstimado`, `valorUnitarioResultado`, `valorTotalResultado`,\n`nomeFornecedor` e `unidadeMedida` — ou seja, estimado *versus* homologado\npor item, insumo direto do mapa de preços do ETP.\n\n**Higiene da amostra**: passe `tem_resultado=True` (ou `situacao_item='2'`,\nHomologado) antes de calcular média ou mediana. Item deserto, fracassado ou\ncancelado não é preço praticado.\n\nSem nenhum filtro além das datas, a resposta é \"tudo que o Brasil incluiu no\nPNCP nessa janela\" — quase sempre grande demais para ser útil.\n\nCache 15 min.",
"inputSchema": {
"properties": {
"cnpj_cpf_fornecedor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CNPJ ou CPF do fornecedor vencedor do item (só dígitos)."
},
"cnpj_orgao": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CNPJ do órgão comprador (14 dígitos, com ou sem pontuação)."
},
"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."
},
"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`."
},
"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_uasg": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código da UASG compradora (6 dígitos)."
},
"data_final_inclusao": {
"description": "Data final de inclusão dos itens no PNCP (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"data_inicial_inclusao": {
"description": "Data inicial de inclusão dos itens no PNCP (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"material_ou_servico": {
"anyOf": [
{
"enum": [
"M",
"S"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "'M' para material, 'S' para serviço."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"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."
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
},
"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."
}
},
"required": [
"data_inicial_inclusao",
"data_final_inclusao"
],
"type": "object"
},
"name": "compras_contratacoes_14133_itens_listar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista itens de uma contratação 14.133 específica.\n\nEndpoint `/modulo-contratacoes/2.1_consultarItensContratacoes_PNCP_14133_Id`.\nAceita `idCompra` ou número de controle PNCP, conforme `tipo_identificador`.",
"inputSchema": {
"properties": {
"id_contratacao": {
"description": "Identificador da contratação. Aceita dois formatos, conforme `tipo_identificador`: o `idCompra` (17 dígitos, campo `idCompra` das listagens, ex.: '15813206001272025') ou o número de controle PNCP (alfanumérico com barra, campo `numeroControlePNCP`, ex.: '10673078000120-1-000021/2025' — é o número que aparece no edital).",
"type": "string"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
},
"tipo_identificador": {
"default": "idCompra",
"description": "Qual identificador está sendo passado em `id_contratacao`: 'idCompra' (padrão) ou 'numeroControlePNCPCompra'. O upstream rejeita qualquer outro valor com HTTP 500.",
"enum": [
"idCompra",
"numeroControlePNCPCompra"
],
"type": "string"
}
},
"required": [
"id_contratacao"
],
"type": "object"
},
"name": "compras_contratacoes_14133_itens_por_contratacao",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista contratações da Lei 14.133 publicadas no PNCP (via Dados Abertos).\n\nEndpoint `/modulo-contratacoes/1_consultarContratacoes_PNCP_14133`.\nCobre pregões eletrônicos, dispensas, inexigibilidades e demais\nmodalidades da Nova Lei de Licitações no governo federal.\n\n**Atenção semântica**: o filtro `codigo_modalidade_dados_abertos` usa a\ntabela de modalidade do SIASG/Dados Abertos, NÃO o cheat sheet PNCP de\n`compras_pncp_modalidades`. Os payloads retornam ambos os campos\n(`codigoModalidade` do Dados Abertos e `modalidadeIdPncp` do PNCP) — use\n`modalidadeNome` para o nome amigável.\n\nCache 15 min.",
"inputSchema": {
"properties": {
"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)."
},
"cnpj_orgao": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CNPJ do órgão (14 dígitos, com ou sem pontuação)."
},
"codigo_ibge_municipio": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código IBGE do município da unidade compradora (7 dígitos)."
},
"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`."
},
"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_uasg": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código UASG do órgão licitante."
},
"data_final_publicacao": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Data final de publicação (YYYY-MM-DD)."
},
"data_inicial_publicacao": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Data inicial de publicação (YYYY-MM-DD)."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
},
"uf": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sigla da UF da unidade compradora (2 letras, ex.: 'SP', 'MS')."
}
},
"type": "object"
},
"name": "compras_contratacoes_14133_listar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista resultados (homologações) de itens 14.133 no período.\n\nEndpoint `/modulo-contratacoes/3_consultarResultadoItensContratacoes_PNCP_14133`.\nDevolve fornecedor vencedor, valor adjudicado e quantitativo homologado —\nfonte primária de preço praticado para o ETP.\n\n**Due diligence de fornecedor**: `ni_fornecedor` (CNPJ/CPF) levanta tudo que\num fornecedor ganhou na janela.\n\n**Auditoria por materialidade**: `valor_total_min` monta a fila de\nhomologações acima de um patamar — combine com uma janela curta, já que o\nfiltro de data é obrigatório.\n\nPara recortar por item de catálogo, use\n`compras_contratacoes_14133_itens_listar(cod_item_catalogo=...)`: esta rota\n**não** oferece filtro por CATMAT/CATSER.\n\nCache 15 min.",
"inputSchema": {
"properties": {
"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)."
},
"data_final_resultado": {
"description": "Data final do resultado/homologação (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"data_inicial_resultado": {
"description": "Data inicial do resultado/homologação (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"ni_fornecedor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Número de identificação do fornecedor vencedor (CNPJ ou CPF, só dígitos). Use para levantar tudo que um fornecedor ganhou no período."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"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."
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
},
"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."
},
"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$)."
}
},
"required": [
"data_inicial_resultado",
"data_final_resultado"
],
"type": "object"
},
"name": "compras_contratacoes_14133_resultados_listar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista resultados (homologações) de uma contratação 14.133 específica.\n\nEndpoint `/modulo-contratacoes/3.1_consultarResultadoItensContratacoes...`.\nAceita `idCompra` ou número de controle PNCP, conforme `tipo_identificador`.",
"inputSchema": {
"properties": {
"id_contratacao": {
"description": "Identificador da contratação. Aceita dois formatos, conforme `tipo_identificador`: o `idCompra` (17 dígitos, campo `idCompra` das listagens, ex.: '15813206001272025') ou o número de controle PNCP (alfanumérico com barra, campo `numeroControlePNCP`, ex.: '10673078000120-1-000021/2025' — é o número que aparece no edital).",
"type": "string"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
},
"tipo_identificador": {
"default": "idCompra",
"description": "Qual identificador está sendo passado em `id_contratacao`: 'idCompra' (padrão) ou 'numeroControlePNCPCompra'. O upstream rejeita qualquer outro valor com HTTP 500.",
"enum": [
"idCompra",
"numeroControlePNCPCompra"
],
"type": "string"
}
},
"required": [
"id_contratacao"
],
"type": "object"
},
"name": "compras_contratacoes_14133_resultados_por_contratacao",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Consulta detalhe completo de um contrato no Comprasnet (/api/contrato/id/{id}).\n\nDevolve contrato com sub-recursos embutidos. CPFs mascarados por LGPD.\nCache 15 min.",
"inputSchema": {
"properties": {
"id_contrato": {
"description": "ID interno do contrato no Comprasnet (pode ser diferente do id no Dados Abertos). Obtenha em `compras_contrato_comprasnet_por_uasg`.",
"type": "integer"
}
},
"required": [
"id_contrato"
],
"type": "object"
},
"name": "compras_contrato_comprasnet_consultar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista contratos de uma UASG no Comprasnet.\n\n**Atenção**: o upstream `/api/contrato/ug/{uasg}` não suporta paginação —\ndevolve a lista completa em uma resposta única (pode passar de 1 MB). Esta\ntool fatia o resultado client-side conforme `pagina + tamanho_pagina` para\nevitar inundar o LLM.\n\nCache 15 min do payload completo; fatiamento por chamada é barato.",
"inputSchema": {
"properties": {
"ativos": {
"default": true,
"description": "Se True (padrão), lista apenas contratos ativos. Set False para incluir inativos via /api/contrato/inativo/ug/{uasg}.",
"type": "boolean"
},
"codigo_uasg": {
"description": "Código UASG (5-6 dígitos).",
"type": "integer"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"codigo_uasg"
],
"type": "object"
},
"name": "compras_contrato_comprasnet_por_uasg",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista cronograma financeiro (/api/contrato/{id}/cronograma).\n\nPaginação client-side — alguns contratos têm 200+ entradas mensais.\nCache 15 min.",
"inputSchema": {
"properties": {
"id_contrato": {
"description": "ID do contrato no Comprasnet.",
"type": "integer"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"id_contrato"
],
"type": "object"
},
"name": "compras_contrato_cronograma",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista empenhos do contrato (/api/contrato/{id}/empenhos).\n\nPaginação client-side. Cache 15 min.",
"inputSchema": {
"properties": {
"id_contrato": {
"description": "ID do contrato no Comprasnet.",
"type": "integer"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"id_contrato"
],
"type": "object"
},
"name": "compras_contrato_empenhos",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista NFs/faturas (/api/contrato/{id}/faturas).\n\nPaginação client-side. Cache 15 min. **Atenção LGPD**: o campo\n`infcomplementar` (texto livre) pode conter nome de servidor + matrícula\nSIAPE não estruturados — o mascaramento LGPD só cobre CPFs em campos\nnominais (cpf, niResponsavel, etc.).",
"inputSchema": {
"properties": {
"id_contrato": {
"description": "ID do contrato no Comprasnet.",
"type": "integer"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"id_contrato"
],
"type": "object"
},
"name": "compras_contrato_faturas",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista garantias contratuais (/api/contrato/{id}/garantias).\n\nPaginação client-side. Cache 15 min.",
"inputSchema": {
"properties": {
"id_contrato": {
"description": "ID do contrato no Comprasnet.",
"type": "integer"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"id_contrato"
],
"type": "object"
},
"name": "compras_contrato_garantias",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista aditivos do contrato (/api/contrato/{id}/historico).\n\nPaginação client-side (upstream não pagina). Cache 15 min do payload completo.",
"inputSchema": {
"properties": {
"id_contrato": {
"description": "ID do contrato no Comprasnet.",
"type": "integer"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"id_contrato"
],
"type": "object"
},
"name": "compras_contrato_historico_aditivos",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista ocorrências/penalidades (/api/contrato/{id}/ocorrencias).\n\nIndicador-chave da confiabilidade do fornecedor. Paginação client-side.\nCache 15 min.",
"inputSchema": {
"properties": {
"id_contrato": {
"description": "ID do contrato no Comprasnet.",
"type": "integer"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"id_contrato"
],
"type": "object"
},
"name": "compras_contrato_ocorrencias",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista publicações DOU (/api/contrato/{id}/publicacoes).\n\nPaginação client-side. Cache 15 min.",
"inputSchema": {
"properties": {
"id_contrato": {
"description": "ID do contrato no Comprasnet.",
"type": "integer"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"id_contrato"
],
"type": "object"
},
"name": "compras_contrato_publicacoes",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista fiscais/gestores (/api/contrato/{id}/responsaveis).\n\nCPFs mascarados por LGPD (`123.***.***-45`). Paginação client-side. Cache 15 min.",
"inputSchema": {
"properties": {
"id_contrato": {
"description": "ID do contrato no Comprasnet.",
"type": "integer"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"id_contrato"
],
"type": "object"
},
"name": "compras_contrato_responsaveis",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Consulta um contrato no Dados Abertos (endpoint 1.1).\n\nO upstream exige `codigo + tipo`. Tipos aceitos pela API:\n`idCompra` e `numeroControlePncpContrato`.\n\nCache 15 min.",
"inputSchema": {
"properties": {
"codigo": {
"description": "Identificador do contrato no upstream — interpretação depende de `tipo`. Para tipo='idCompra' é o id da compra (string numérica). Para tipo='numeroControlePncpContrato' é o número de controle PNCP completo (ex.: '00000000000000-1-000001/2024').",
"type": "string"
},
"tipo": {
"default": "numeroControlePncpContrato",
"description": "Como interpretar `codigo`: 'idCompra' (id interno da compra) ou 'numeroControlePncpContrato' (identificador PNCP).",
"enum": [
"idCompra",
"numeroControlePncpContrato"
],
"type": "string"
}
},
"required": [
"codigo"
],
"type": "object"
},
"name": "compras_contratos_consultar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista os itens de um contrato específico, pelo identificador.\n\nEndpoint `/modulo-contratos/2.1_consultarContratosItem_Id`.\n\nUse quando você já tem o contrato em mãos e quer só os itens dele.\n`compras_contratos_itens_listar` exige órgão mais janela de vigência e\ndevolve os itens de todos os contratos do recorte — chegar a um contrato\nespecífico por ali significa paginar centenas de linhas irrelevantes.\n\nO `codigo` aceita o `idCompra` numérico (padrão) ou o número de controle\nPNCP do contrato, conforme `tipo_identificador`. Qualquer outro valor de\ntipo faz o upstream devolver HTTP 500.\n\n**Atenção ao somar valores**: pode haver mais de uma linha por item, uma\npor versão/alteração contratual. Confira o campo de exclusão antes de\nagregar.\n\nCache 15 min.",
"inputSchema": {
"properties": {
"codigo": {
"description": "Identificador do contrato: o `idCompra` numérico ou o número de controle PNCP do contrato, conforme `tipo_identificador`.",
"type": "string"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
},
"tipo_identificador": {
"default": "idCompra",
"description": "Qual identificador está em `codigo`: 'idCompra' (padrão) ou 'numeroControlePncpContrato'. Outro valor devolve HTTP 500.",
"enum": [
"idCompra",
"numeroControlePncpContrato"
],
"type": "string"
}
},
"required": [
"codigo"
],
"type": "object"
},
"name": "compras_contratos_item_consultar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista itens de contratos (endpoint 2).\n\nUpstream exige `codigoOrgao + dataVigenciaInicialMin/Max`. Cache 15 min.",
"inputSchema": {
"properties": {
"codigo_item": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código CATMAT ou CATSER (opcional)."
},
"codigo_orgao": {
"description": "Código do órgão (obrigatório).",
"type": "integer"
},
"data_vigencia_inicial_max": {
"description": "Data máxima de início de vigência (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"data_vigencia_inicial_min": {
"description": "Data mínima de início de vigência (YYYY-MM-DD). Janela ≤ 365 dias.",
"format": "date",
"type": "string"
},
"ni_fornecedor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CPF/CNPJ do fornecedor."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
},
"tipo_item": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Tipo do item: 'M' (material) ou 'S' (serviço)."
}
},
"required": [
"codigo_orgao",
"data_vigencia_inicial_min",
"data_vigencia_inicial_max"
],
"type": "object"
},
"name": "compras_contratos_itens_listar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista contratos federais (Dados Abertos /modulo-contratos/1).\n\nO upstream exige `codigoOrgao` + janela `dataVigenciaInicialMin/Max`\n(≤ 365 dias). Para sub-recursos detalhados (garantias, faturas,\nocorrências), use `compras_contrato_*` que consulta o Comprasnet.\n\nCache 15 min.",
"inputSchema": {
"properties": {
"codigo_modalidade_compra": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Modalidade da compra que originou o contrato."
},
"codigo_orgao": {
"description": "Código do órgão (obrigatório no upstream). Use `compras_orgao_listar` para descobrir.",
"type": "integer"
},
"codigo_unidade_gestora": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtra pela UASG gestora do contrato."
},
"data_vigencia_inicial_max": {
"description": "Data MÁXIMA de início de vigência (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"data_vigencia_inicial_min": {
"description": "Data MÍNIMA de início de vigência do contrato (YYYY-MM-DD). Janela max ≤ 365 dias até data_vigencia_inicial_max.",
"format": "date",
"type": "string"
},
"ni_fornecedor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CPF/CNPJ do fornecedor (apenas dígitos). Opcional."
},
"numero_contrato": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtra por número do contrato (ex.: '00031/2015')."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"codigo_orgao",
"data_vigencia_inicial_min",
"data_vigencia_inicial_max"
],
"type": "object"
},
"name": "compras_contratos_listar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista contratos com vencimento na janela informada (endpoint 1.2).\n\nInventário do que precisa renovar. Upstream exige `codigoOrgao` +\n`dataVigenciaFinalMin/Max` (≤ 365 dias). Cache 15 min.",
"inputSchema": {
"properties": {
"codigo_orgao": {
"description": "Código do órgão (obrigatório).",
"type": "integer"
},
"codigo_unidade_gestora": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "UASG gestora (opcional)."
},
"data_vigencia_final_max": {
"description": "Data MÁXIMA de fim de vigência (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"data_vigencia_final_min": {
"description": "Data MÍNIMA de fim de vigência (YYYY-MM-DD). Janela ≤ 365 dias.",
"format": "date",
"type": "string"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"codigo_orgao",
"data_vigencia_final_min",
"data_vigencia_final_max"
],
"type": "object"
},
"name": "compras_contratos_listar_por_fim_vigencia",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista as compras individuais de um item CATMAT — **sem valor de preço**.\n\nEndpoint: `/modulo-pesquisa-preco/2_consultarMaterialDetalhe`.\n\n**⚠️ Esta tool não devolve preço.** Até a v0.3.12 a docstring prometia\n\"valor unitário homologado\"; auditoria de 2026-08-05 mostrou que o DTO\nupstream (`FtPesqPrecoCompraMaterialDetalheDTO`) tem exatamente 7 campos\ne nenhum deles é valor:\n\n idCompra, idItemCompra, numeroItemCompra, codigoItemCatalogo,\n objetoCompra, descricaoDetalhadaItem, dataAtualizacaoFato\n\nConfirmado nos dois sentidos: chamada crua ao upstream (fora da camada\ndo MCP) devolve as mesmas 7 chaves, e o contrato OpenAPI oficial\ndeclara as mesmas 7. Ou seja: **não somos nós que filtramos** — o campo\nnunca existiu nesta rota. A rota 4 (serviço detalhe) tem DTO idêntico.\n\n**Para preço unitário de material use `compras_pesquisar_preco_material`**,\nque devolve `precoUnitario`, `quantidade`, `dataCompra` e fornecedor por\ncompra — é a fonte correta para a amostragem da IN SEGES/ME 65/2021.\n\nUse esta tool apenas para: descrição detalhada do item como comprado,\nobjeto da compra e rastreio do `idCompra` para cruzar com outras bases.\n\nCache 10 min.",
"inputSchema": {
"properties": {
"codigo_item_catalogo": {
"description": "Código CATMAT do material. Inteiro 4-8 dígitos. Ex.: 460789.",
"type": "integer"
},
"data_fim": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Data final da compra (YYYY-MM-DD). Quando omitida, a API usa a data atual."
},
"data_inicio": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Data inicial da compra (YYYY-MM-DD). Quando omitida, a API usa o início do ano corrente."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
}
},
"required": [
"codigo_item_catalogo"
],
"type": "object"
},
"name": "compras_detalhar_preco_material",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista as compras individuais de um serviço CATSER — **sem valor de preço**.\n\nEndpoint: `/modulo-pesquisa-preco/4_consultarServicoDetalhe`.\n\n**⚠️ Esta tool não devolve preço** (verificado 2026-08-05): o DTO\nupstream é idêntico ao da rota 2 — idCompra, idItemCompra,\nnumeroItemCompra, codigoItemCatalogo, objetoCompra,\ndescricaoDetalhadaItem, dataAtualizacaoFato. Nenhum campo de valor.\n\n**Para preço unitário de serviço use `compras_pesquisar_preco_servico`**,\nque devolve `precoUnitario` e fornecedor por compra.\n\nCache 10 min.",
"inputSchema": {
"properties": {
"codigo_item_catalogo": {
"description": "Código CATSER do serviço. Inteiro 4-6 dígitos. Ex.: 27332.",
"type": "integer"
},
"data_fim": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Data final (YYYY-MM-DD)."
},
"data_inicio": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Data inicial (YYYY-MM-DD)."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
}
},
"required": [
"codigo_item_catalogo"
],
"type": "object"
},
"name": "compras_detalhar_preco_servico",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Dados públicos do CNPJ na Receita Federal (via BrasilAPI/MinhaReceita).\n\nRetorna razão social, nome fantasia, situação cadastral, CNAE primário e\nsecundários, QSA (sócios), capital social, natureza jurídica, porte,\nendereço e datas de início de atividade e da situação cadastral.\n\n**Quando usar**: complemento do `compras_perfil_fornecedor_completo`\npara due diligence (avaliar porte, sócios, CNAEs vs objeto da licitação).\nOs dados são da Receita; este MCP **não** consulta sanções aqui — para\nisso use as tools de sanção (CEIS/CNEP/CEPIM/CEAF).\n\nCache 24h. Em caso de 404 ou erro upstream, retorna `encontrado=false`\ncom diagnóstico em `_erro` em vez de propagar exception.",
"inputSchema": {
"properties": {
"cnpj": {
"description": "CNPJ a consultar (14 dígitos, com ou sem pontuação). Usa BrasilAPI por padrão; trocável via env `CNPJ_PROVIDER=minhareceita`.",
"maxLength": 20,
"minLength": 11,
"type": "string"
}
},
"required": [
"cnpj"
],
"type": "object"
},
"name": "compras_fornecedor_cnpj_receita",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Consulta cadastro de um fornecedor pelo CNPJ ou CPF.\n\nEndpoint Dados Abertos `/modulo-fornecedor/1_consultarFornecedor`.\nDevolve razão social, CNAE, porte da empresa, natureza jurídica.\n\nCache 1h.",
"inputSchema": {
"properties": {
"cnpj_cpf": {
"description": "CNPJ (14 dígitos) ou CPF (11 dígitos) do fornecedor, com ou sem pontuação.",
"type": "string"
}
},
"required": [
"cnpj_cpf"
],
"type": "object"
},
"name": "compras_fornecedor_consultar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista contratos e empenhos por itens (CATMAT/CATSER) no Comprasnet.\n\nEndpoint `POST /api/comprasnet/contratosempenhos`. Útil para descobrir\nquem fornece esses itens hoje no governo (potenciais participantes em\nnovos certames).\n\nCache 1h.",
"inputSchema": {
"properties": {
"codigos_catmat": {
"anyOf": [
{
"items": {
"type": "integer"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Códigos CATMAT a buscar."
},
"codigos_catser": {
"anyOf": [
{
"items": {
"type": "integer"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Códigos CATSER a buscar."
}
},
"type": "object"
},
"name": "compras_fornecedor_contratos_por_item",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Consulta impedimentos no Comprasnet por lista de itens (CATMAT/CATSER).\n\nEndpoint `POST /api/comprasnet/compras/impedimentos`. Retorna fornecedores\nimpedidos de participar de contratações dos itens informados (sanções\naplicadas no SICAF). Essencial antes de homologar pregões eletrônicos.\n\nCache 1h.",
"inputSchema": {
"properties": {
"codigos_catmat": {
"anyOf": [
{
"items": {
"type": "integer"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Lista de códigos CATMAT (materiais) a verificar. Use junto com codigos_catser ou separadamente."
},
"codigos_catser": {
"anyOf": [
{
"items": {
"type": "integer"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Lista de códigos CATSER (serviços)."
}
},
"type": "object"
},
"name": "compras_fornecedor_impedimentos_por_itens",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista fornecedores no Compras.gov.br com filtros estruturais.\n\nEndpoint Dados Abertos `/modulo-fornecedor/1_consultarFornecedor`. Use\npara mapear fornecedores potenciais por porte/CNAE — ex.: levantar\ntodas as MEs com CNAE de TI.\n\nCache 1h.",
"inputSchema": {
"properties": {
"ativo": {
"default": true,
"description": "True (default) para listar apenas ativos, False para apenas inativos.",
"type": "boolean"
},
"cnpj": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtrar por CNPJ (14 dígitos)."
},
"codigo_cnae": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código CNAE para filtrar por atividade."
},
"cpf": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtrar por CPF (11 dígitos)."
},
"natureza_juridica": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código da natureza jurídica."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"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": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"type": "object"
},
"name": "compras_fornecedor_listar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Diz, em ~30 segundos, o que está de pé neste servidor **agora**.\n\nEstende `compras_versao`: além de versão e configuração, dispara um\nprobe paralelo (timeout curto) contra as rotas upstream reais e\ndevolve a situação por módulo funcional.\n\nPor que existe: em 04/08/2026 a tool de pesquisa de preço de material\nestava quebrada havia semanas e ninguém sabia — a SEGES trocou a\nassinatura da rota sem versionar. A descoberta veio de um analista\ntentando usar a ferramenta. Antes de uma demonstração ou de instruir\nprocesso, rode isto: o objetivo é que a descoberta aconteça aqui, não\nno palco.\n\nArgs:\n profundidade: `basico` responde só versão/config (instantâneo);\n `rotas` (padrão) executa o probe upstream.\n modulo: restringe o probe a um módulo (ex.: `pesquisa_preco`,\n `atas`, `pncp`). Sem isso, testa todos.\n\nSituação por módulo:\n - `ok`: todas as rotas responderam com os campos esperados.\n - `degradado`: alguma rota caiu, ou respondeu 200 **sem** os campos\n do contrato (ex.: rota de preço sem `precoUnitario`) — o modo de\n falha silencioso que só o contrato de campos pega.\n - `fora`: todas as rotas testáveis do módulo falharam.\n - `pulado`: faltou credencial (ex.: TRANSPARENCIA_API_KEY).\n\nRota que estoura o relógio é reexecutada em série antes de virar\n`fora`: com dezenas de rotas em paralelo, uma rota apenas lenta seria\nreportada como quebrada. Quando passa na segunda tentativa, o campo\n`problemas` do módulo registra \"lenta sob carga\" em vez de escondê-lo.\n\nO campo `pronto_para_uso` é o resumo honesto: `False` quando existe\nqualquer módulo fora ou degradado.",
"inputSchema": {
"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": {
"default": "rotas",
"description": "'rotas' (padrão) testa as rotas upstream reais em paralelo e devolve situação por módulo (ok/degradado/fora) em ~30s. 'basico' devolve só versão e configuração, sem tocar a rede.",
"enum": [
"basico",
"rotas"
],
"type": "string"
}
},
"type": "object"
},
"name": "compras_healthcheck",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Métricas operacionais consolidadas da API Dados Abertos.\n\nEndpoint `/modulo-indicadores/1_consultarIndicadoresConsolidados`.\nRetorna: total de serviços disponíveis, total de requisições no\nperíodo, percentual de sucesso, latência média (ms), volume total\ne médio de download (GB). Útil para diagnóstico/observabilidade,\n**não** para indicadores de mercado público (ver docstring do módulo).\n\nCache 1h.",
"inputSchema": {
"properties": {
"pagina": {
"default": 1,
"description": "Página (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página (default 50, máximo 500).",
"maximum": 500,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "compras_indicadores_consolidados",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Métricas operacionais da API por período (ano/mês).\n\nEndpoint Dados Abertos `/modulo-indicadores/2_consultarIndicadoresPorPeriodo`.\nRetorna métricas de USO da API (requisições, latência, downloads),\nnão dados de compras. Útil para análise temporal de disponibilidade\ndo upstream.\n\nCache 1h.",
"inputSchema": {
"properties": {
"ano": {
"description": "Ano de referência dos indicadores (4 dígitos).",
"maximum": 2100,
"minimum": 2010,
"type": "integer"
},
"mes": {
"anyOf": [
{
"maximum": 12,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Mês (1-12). Se omitido, agrega o ano inteiro. Se informado, filtra apenas o mês especificado."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"maximum": 500,
"minimum": 1,
"type": "integer"
}
},
"required": [
"ano"
],
"type": "object"
},
"name": "compras_indicadores_por_periodo",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista compras sem licitação (dispensa/inexigibilidade) do regime legado.\n\nEndpoint `/modulo-legado/5_consultarComprasSemLicitacao`. **Upstream\nexige `dt_ano_aviso`** (ano inteiro, ex.: 2024) — não janela de datas.",
"inputSchema": {
"properties": {
"co_modalidade_licitacao": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código da modalidade SIASG."
},
"co_orgao": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código do órgão (opcional)."
},
"co_orgao_superior": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código do órgão superior (opcional)."
},
"co_uasg": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código UASG (opcional)."
},
"dt_ano_aviso": {
"description": "Ano do aviso (ex.: 2024). Obrigatório no upstream.",
"type": "integer"
},
"nu_aviso_licitacao": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Número do aviso de licitação."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"pertence14133": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Vincula à Lei 14.133."
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"dt_ano_aviso"
],
"type": "object"
},
"name": "compras_legado_compras_sem_licitacao",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista itens de licitações legado (`/modulo-legado/2_consultarItemLicitacao`).\n\nUpstream exige `modalidade` obrigatório. Filtros opcionais: `uasg`,\n`numero_aviso`, `codigo_item_material/servico`, `cnpj_fornecedor`.",
"inputSchema": {
"properties": {
"cnpj_fornecedor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CNPJ do fornecedor (opcional)."
},
"codigo_item_material": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código CATMAT (opcional)."
},
"codigo_item_servico": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código CATSER (opcional)."
},
"modalidade": {
"description": "Código de modalidade SIASG (obrigatório). Ex.: 5=Pregão, 6=Dispensa.",
"type": "integer"
},
"numero_aviso": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Número do aviso (opcional)."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
},
"uasg": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código UASG (opcional)."
}
},
"required": [
"modalidade"
],
"type": "object"
},
"name": "compras_legado_itens_licitacao_listar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista itens de pregões do regime legado (Lei 8.666), com a cadeia de preço.\n\nEndpoints `/modulo-legado/4_consultarItensPregoes` (por período de\nhomologação) e `/modulo-legado/4.1_consultarItensPregoes_Id` (quando\n`id_compra` é informado).\n\n**É a única fonte, em todo o MCP, da cadeia completa de formação de preço\npor item**: `valor_estimado_item` → `menor_lance` → `valor_negociado` →\n`valor_homologado_item`. Serve para medir o desconto real obtido em certame\ne para instruir negociação.\n\nTraz também `situacao_item`, que revela itens desertos e fracassados —\ninvisíveis para quem só olha preço homologado, e relevantes para justificar\nrevisão de estimativa.\n\nInforme `id_compra` **ou** o par de datas de homologação. As duas datas\nprecisam ser diferentes entre si (restrição do upstream).\n\nSérie histórica: use para contratações anteriores à Lei 14.133. Para 2022 em\ndiante, prefira `compras_contratacoes_14133_itens_listar`.\n\nCache 15 min.",
"inputSchema": {
"properties": {
"codigo_uasg": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código da UASG que realizou o pregão (só na busca por período)."
},
"data_homologacao_final": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Data final de homologação dos itens (YYYY-MM-DD). Obrigatória quando `id_compra` não é informado."
},
"data_homologacao_inicial": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Data inicial de homologação dos itens (YYYY-MM-DD). Obrigatória quando `id_compra` não é informado."
},
"decreto_7174": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtra itens sujeitos ao Decreto 7.174/2010 (bens e serviços de informática)."
},
"id_compra": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Identificador do pregão, para trazer só os itens dele. É a concatenação zero-padded de UASG(6) + modalidade(2) + número(5) + ano(4) — ex.: '38916105000152022'. Também é o campo `id_compra` devolvido por `compras_legado_pregoes_listar`."
},
"id_compra_item": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Identificador de um item específico dentro do pregão."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"type": "object"
},
"name": "compras_legado_itens_pregao_listar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista itens de contratações diretas do regime legado (dispensa/inexigibilidade).\n\nEndpoints `/modulo-legado/6_consultarCompraItensSemLicitacao` (por ano do\naviso) e `/modulo-legado/6.1_consultarItensComprasSemLicitacao_Id` (quando\n`id_compra` é informado).\n\n**É o único caminho para contratação direta em nível de item no período\nanterior ao PNCP (2019-2021)** — justamente a janela das dispensas\nemergenciais da pandemia, para a qual as rotas da Lei 14.133 retornam vazio.\nTraz `vr_estimado`, fornecedor vencedor e a descrição detalhada do item.\n\nInforme `id_compra` **ou** `ano_aviso`.\n\nCPF de fornecedor pessoa física vem mascarado por padrão (LGPD).\n\nCache 15 min.",
"inputSchema": {
"properties": {
"ano_aviso": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Ano do aviso da contratação direta. Obrigatório quando `id_compra` não é informado. Cobertura útil principalmente entre 2019 e 2021, período anterior ao PNCP — para 2022 em diante prefira `compras_contratacoes_14133_itens_listar`."
},
"codigo_conjunto_materiais": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código do conjunto de materiais (CATMAT legado)."
},
"codigo_modalidade": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código da modalidade legada (dispensa, inexigibilidade)."
},
"codigo_orgao": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Código do órgão contratante."
},
"codigo_servico": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código do serviço (CATSER legado)."
},
"codigo_uasg": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código da UASG contratante."
},
"cpf_cnpj_fornecedor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CPF ou CNPJ do fornecedor vencedor (só dígitos)."
},
"id_compra": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Identificador da compra, para trazer só os itens dela."
},
"id_compra_item": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Identificador de um item específico dentro da compra."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"type": "object"
},
"name": "compras_legado_itens_sem_licitacao_listar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Consulta uma licitação legado pelo id_compra.\n\nEndpoint `/modulo-legado/1.1_consultarLicitacao_Id`. Upstream exige\n`id_compra` (string), não um `id` numérico.",
"inputSchema": {
"properties": {
"id_compra": {
"description": "ID da compra no SIASG (string, retornado em `compras_legado_licitacoes_listar`).",
"type": "string"
}
},
"required": [
"id_compra"
],
"type": "object"
},
"name": "compras_legado_licitacao_consultar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista licitações do regime legado (Lei 8.666/93).\n\nEndpoint `/modulo-legado/1_consultarLicitacao`. **Bug upstream\nconfirmado**: o filtro `uasg`, embora documentado no swagger oficial,\nretorna HTTP 400 (\"Erro ao efetuar a consulta\") porque o atributo não\nexiste no modelo Hibernate da view (`TbVwLicitacao`). Por isso este\nparâmetro foi removido da assinatura.\n\nWorkaround se você precisar filtrar por UASG: liste sem filtro, depois\nfiltre client-side pelo campo `uasg` do resultado.",
"inputSchema": {
"properties": {
"data_publicacao_final": {
"description": "Data final de publicação (YYYY-MM-DD). Obrigatório no upstream.",
"format": "date",
"type": "string"
},
"data_publicacao_inicial": {
"description": "Data inicial de publicação (YYYY-MM-DD). Obrigatório no upstream.",
"format": "date",
"type": "string"
},
"modalidade": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código de modalidade SIASG (opcional)."
},
"numero_aviso": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Número do aviso (opcional)."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"pertence14133": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtrar somente processos vinculados à Lei 14.133."
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"data_publicacao_inicial",
"data_publicacao_final"
],
"type": "object"
},
"name": "compras_legado_licitacoes_listar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista pregões eletrônicos do regime legado.\n\nEndpoint `/modulo-legado/3_consultarPregoes`. **Bug upstream\nconfirmado**: os filtros `co_uasg` e `co_orgao`, embora documentados\nno swagger, retornam HTTP 400 com erro Hibernate\n`Could not resolve attribute 'TbVwPregaoId.coUasg'` porque os atributos\nnão existem no modelo da view. Por isso ambos foram removidos da\nassinatura.\n\nWorkaround para filtrar por UASG: chame sem filtro e filtre client-side\npelos campos `coUasg`/`coOrgao` do resultado.",
"inputSchema": {
"properties": {
"ds_tipo_pregao_compra": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Tipo do pregão de compra (string upstream)."
},
"dt_data_edital_final": {
"description": "Data final do edital (YYYY-MM-DD). Obrigatório.",
"format": "date",
"type": "string"
},
"dt_data_edital_inicial": {
"description": "Data inicial do edital (YYYY-MM-DD). Obrigatório.",
"format": "date",
"type": "string"
},
"numero": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Número do pregão (opcional)."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"pertence14133": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtrar pregões vinculados à Lei 14.133."
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"dt_data_edital_inicial",
"dt_data_edital_final"
],
"type": "object"
},
"name": "compras_legado_pregoes_listar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista contratações pelo RDC (Regime Diferenciado de Contratações).\n\nEndpoint `/modulo-legado/7_consultarRdc`. **Upstream usa\n`data_publicacao_min/max`** (note `min`/`max`, não `inicial`/`final`).\nRDC foi usado principalmente para obras dos megaeventos e da Copa —\nrelevância residual hoje.",
"inputSchema": {
"properties": {
"data_publicacao_max": {
"description": "Data MÁXIMA de publicação (YYYY-MM-DD). Obrigatório.",
"format": "date",
"type": "string"
},
"data_publicacao_min": {
"description": "Data MÍNIMA de publicação (YYYY-MM-DD). Obrigatório.",
"format": "date",
"type": "string"
},
"modalidade": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código de modalidade."
},
"orgao": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código do órgão (opcional)."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
},
"uasg": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código UASG (opcional)."
},
"uf_uasg": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "UF da UASG (sigla, ex.: 'DF')."
}
},
"required": [
"data_publicacao_min",
"data_publicacao_max"
],
"type": "object"
},
"name": "compras_legado_rdc_listar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista os MCP Prompts disponíveis com nome, descrição e argumentos.\n\nTools de descoberta para clientes (como o Claude.ai web) que ainda\nnão expõem UI para prompts. Em Claude Desktop / Cursor / MCP Inspector,\nprompts aparecem em UI dedicada — esta tool é um caminho alternativo,\nnão substituto.\n\nUse depois `compras_obter_prompt(nome, argumentos)` para renderizar\num prompt específico.\n\nRetorno:\n {\n \"total\": int,\n \"prompts\": [\n {\n \"nome\": str,\n \"descricao\": str,\n \"tags\": [str, ...],\n \"argumentos\": [\n {\"nome\": str, \"descricao\": str | None, \"obrigatorio\": bool},\n ...\n ]\n },\n ...\n ]\n }",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "compras_listar_prompts",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista os MCP Resources disponíveis com URI, nome e mime-type.\n\nTools de descoberta para clientes que não expõem UI de attachment de\nresources (como o Claude.ai web). Em Claude Desktop / Cursor / MCP\nInspector, resources aparecem em picker dedicado.\n\nResources contêm dados de referência estáticos (tabelas de domínio,\nglossário, metadados do servidor). Use `compras_obter_resource(uri)`\npara ler o conteúdo.\n\nRetorno:\n {\n \"total\": int,\n \"resources\": [\n {\"uri\": str, \"nome\": str, \"descricao\": str, \"mime_type\": str, \"tags\": [str,...]},\n ...\n ]\n }",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "compras_listar_resources",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Dossiê completo de uma ARP em uma chamada.\n\nComposição: cabeçalho via `/modulo-arp/1.1` (id PNCP) e — se `numero_item`\ninformado — saldo (4), adesões (5) e unidades participantes (3) em\nparalelo. Os 3 últimos endpoints usam a chave composta\n`numeroAta + unidadeGerenciadora`.\n\nOs 3 IDs vêm naturalmente do retorno de `compras_arp_listar` ou\n`compras_arp_itens_listar` (campos: `numeroControlePncpAta`,\n`numeroAta`, `unidadeGerenciadora`, `numeroItem`). Cache 10 min.\n\nQuando `numero_controle_pncp_ata` vem no formato de **compra** (sem\nsufixo `-NNNNNN`), devolvemos diagnóstico explícito antes de bater\nno upstream — caminho que retornava `cabecalho: null` silencioso.",
"inputSchema": {
"properties": {
"numero_ata": {
"description": "Número simples da ata (ex.: '00001/2024'). Usado nos endpoints de saldo, adesões e unidades participantes.",
"type": "string"
},
"numero_controle_pncp_ata": {
"description": "Identificador PNCP completo da **ata** (formato `cnpj14-1-sequencial/ano-NNNNNN`, com sufixo numerando a ata SRP dentro da compra). Ex.: `00394452000103-1-004729/2024-000006`. NÃO confundir com ID de compra (sem o sufixo). Retornado em `compras_arp_por_fim_vigencia` como `numeroControlePncpAta`.",
"type": "string"
},
"numero_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": {
"description": "Código UASG da unidade gerenciadora da ata.",
"type": "integer"
}
},
"required": [
"numero_controle_pncp_ata",
"numero_ata",
"unidade_gerenciadora"
],
"type": "object"
},
"name": "compras_montar_dossie_arp",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Renderiza um MCP Prompt e devolve o texto pronto.\n\nO texto retornado é o conteúdo da `PromptMessage[0]` — tipicamente um\nroteiro que orienta o LLM a executar um fluxo usando as tools deste\nservidor. Depois de obter o texto, o LLM normalmente segue as\ninstruções dele, chamando outras tools conforme indicado.\n\nRetorno:\n {\n \"nome\": str,\n \"texto\": str, # conteúdo renderizado pronto para usar\n \"argumentos_usados\": dict,\n }\n\nSe o prompt não existir ou faltar argumento obrigatório, retorna\n`_erro` com diagnóstico em vez de propagar exception.",
"inputSchema": {
"properties": {
"argumentos": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Mapa de argumentos exigidos pelo prompt. Os nomes e tipos vêm de `compras_listar_prompts`. Ex.: {\"cnpj_orgao\": \"00394460000141\", \"ano\": 2025, \"sequencial\": 12345}."
},
"nome": {
"description": "Nome do prompt a renderizar. Use `compras_listar_prompts` para descobrir nomes disponíveis. Exemplos: `analisar_contratacao_pncp`, `dossie_due_diligence_fornecedor`, `oportunidades_carona_arp`.",
"minLength": 1,
"type": "string"
}
},
"required": [
"nome"
],
"type": "object"
},
"name": "compras_obter_prompt",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lê o conteúdo de um MCP Resource pela URI.\n\nRetorna o conteúdo bruto (texto/JSON-string conforme o mime-type\nregistrado) e os metadados do resource.\n\nRetorno:\n {\n \"uri\": str,\n \"nome\": str,\n \"mime_type\": str,\n \"conteudo\": str,\n }\n\nSe a URI não existir, retorna `_erro` em vez de propagar exception.",
"inputSchema": {
"properties": {
"uri": {
"description": "URI do resource. Use `compras_listar_resources` para descobrir URIs disponíveis. Exemplos: `compras://referencia/modalidades-pncp`, `compras://glossario/lei-14133`, `compras://meta/escopo`.",
"minLength": 5,
"type": "string"
}
},
"required": [
"uri"
],
"type": "object"
},
"name": "compras_obter_resource",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Consulta um órgão específico pelo código.\n\nDevolve nome, sigla, CNPJ, esfera, poder e quantitativos.\nCache 24h.",
"inputSchema": {
"properties": {
"codigo_orgao": {
"description": "Código numérico do órgão (4-6 dígitos).",
"type": "integer"
}
},
"required": [
"codigo_orgao"
],
"type": "object"
},
"name": "compras_orgao_consultar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista órgãos cadastrados no Compras.gov.br.\n\nEndpoint Dados Abertos `/modulo-uasg/2_consultarOrgao`. Inclui órgãos\ndo SISG (Sistema de Serviços Gerais), com código numérico, nome,\nesfera, poder e CNPJ.\n\n**✅ Restaurada em 2026-08-05**: faltava o parâmetro obrigatório\n`statusOrgao` — mesma causa do 404 em `compras_uasg_listar`.\n\n**`nome`, `esfera` e `poder` são aplicados aqui, client-side.** Nenhum\ndos três consta do contrato desta rota, e esta API ignora chave\ndesconhecida em silêncio — mandá-los devolvia os ~11,9 mil órgãos\nativos com cara de resultado filtrado (reconfirmado em 2026-09-07 com\nparâmetro de controle). Desde 2026-09-07 eles não são mais enviados: o\nrecorte é feito sobre a página trazida, e o payload traz\n`_filtro_client_side` dizendo quantos sobraram. Consequência prática:\no filtro só enxerga a página atual, então varra as páginas ou use\n`codigo_orgao` em `compras_orgao_consultar` quando souber o código.\n\nCache 24h.",
"inputSchema": {
"properties": {
"esfera": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Esfera administrativa: 'F' (federal), 'E' (estadual), 'M' (municipal). Dados Abertos cobre majoritariamente federal."
},
"nome": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtro textual pelo nome do órgão (match parcial)."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"poder": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Poder: 'E' (Executivo), 'L' (Legislativo), 'J' (Judiciário)."
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"type": "object"
},
"name": "compras_orgao_listar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Perfil consolidado do fornecedor (cadastro + Receita + sanções + impedimentos).\n\nComposição em paralelo:\n- **cadastro**: Dados Abertos `/modulo-fornecedor/1_consultarFornecedor`\n pelo CNPJ (razão social, CNAE, porte, natureza jurídica);\n- **receita_federal**: BrasilAPI / MinhaReceita — QSA, capital social,\n atividades secundárias, data de início, situação cadastral (RF).\n Provider configurável via `CNPJ_PROVIDER` (default `brasilapi`);\n- **sanções**: Portal da Transparência (CEIS+CNEP+CEPIM) pelo CNPJ;\n- **impedimentos Comprasnet**: `/api/comprasnet/compras/impedimentos`.\n\n**Não inclui lista de contratos** porque os endpoints upstream\n`/modulo-contratos/1` (Dados Abertos) e `/v1/contratos` (PNCP) exigem\n`codigoOrgao` como filtro obrigatório — não é possível listar contratos\nde um fornecedor sem saber em qual órgão ele tem contrato. Se você já\nsouber o órgão, use `compras_contratos_listar(codigo_orgao=X, ni_fornecedor=Y, ...)`.\n\nSanções dependem de `TRANSPARENCIA_API_KEY` — se não configurada ou se\no WAF da CGU bloquear, o bloco retorna aviso e o restante segue.\n\nCache 10 min.",
"inputSchema": {
"properties": {
"cnpj": {
"description": "CNPJ do fornecedor (14 dígitos, com ou sem pontuação).",
"maxLength": 20,
"minLength": 11,
"type": "string"
}
},
"required": [
"cnpj"
],
"type": "object"
},
"name": "compras_perfil_fornecedor_completo",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Pesquisa preços praticados em compras de material (CATMAT) pelo governo.\n\nEndpoint Dados Abertos: `/modulo-pesquisa-preco/1_consultarMaterial`.\nPara visão consolidada estatística (média/mediana no padrão IN 65/2021),\nuse a tool composta `compras_pesquisar_precos_para_etp`.\n\nCada item da resposta traz `precoUnitario`, `quantidade`, `dataCompra`,\n`niFornecedor`/`nomeFornecedor` e a UASG compradora — é **esta** a tool\nque devolve valor unitário para material. A `compras_detalhar_preco_material`\nNÃO devolve preço (ver a docstring dela).\n\n**⚠️ Quebra upstream corrigida em 2026-08-05**: entre ~2026-07 e\n2026-08-05 esta tool respondia \"Recurso nao encontrado\" (HTTP 404). A\nSEGES trocou a assinatura de query da rota sem versionar: o parâmetro\n`codigoItemCatalogo` foi substituído pelo par `tipo` (enum\n`codigoItemCatalogo` | `codigoPdm`) + `codigo`. Como a API responde\n**404** — e não 400 — a parâmetros obrigatórios ausentes, a quebra se\ndisfarçou de \"rota removida\". A rota nunca saiu do swagger oficial.\nCorrigido na v0.3.13; a assinatura de `compras_pesquisar_preco_servico`\n(rota 3) não mudou.\n\nSe voltar a devolver 404, a tool não levanta exception: devolve\n`_erro_upstream` com diagnóstico e alternativas.\n\nCache 10 min.",
"inputSchema": {
"properties": {
"codigo_item_catalogo": {
"description": "Código CATMAT do material. Inteiro 4-8 dígitos. Ex.: 460789.",
"type": "integer"
},
"codigo_municipio": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código IBGE do município (7 dígitos). Filtro mais fino que UF."
},
"codigo_uasg": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código da UASG compradora (filtro mais específico ainda)."
},
"data_fim": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Data final da compra (YYYY-MM-DD). Quando omitida, a API usa a data atual."
},
"data_inicio": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Data inicial da compra (YYYY-MM-DD). Quando omitida, a API usa o início do ano corrente."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
},
"uf": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sigla da UF (ex.: 'DF'). Filtra compras realizadas pelo órgão da UF."
}
},
"required": [
"codigo_item_catalogo"
],
"type": "object"
},
"name": "compras_pesquisar_preco_material",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Pesquisa preços praticados em compras de serviço (CATSER).\n\nEndpoint: `/modulo-pesquisa-preco/3_consultarServico`. Para visão\nconsolidada (mediana, média, desvio no padrão IN 65/2021), use a tool\ncomposta `compras_pesquisar_precos_para_etp` com tipo='servico'.",
"inputSchema": {
"properties": {
"codigo_item_catalogo": {
"description": "Código CATSER do serviço. Inteiro 4-6 dígitos. Ex.: 27332.",
"type": "integer"
},
"codigo_municipio": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código IBGE do município."
},
"codigo_uasg": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código UASG."
},
"data_fim": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Data final (YYYY-MM-DD)."
},
"data_inicio": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Data inicial (YYYY-MM-DD)."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
},
"uf": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sigla da UF."
}
},
"required": [
"codigo_item_catalogo"
],
"type": "object"
},
"name": "compras_pesquisar_preco_servico",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Agrega preços praticados aplicando metodologia IN SEGES/ME 65/2021.\n\nComposição: percorre `compras_pesquisar_preco_material` ou `_servico`\nem até `max_paginas`, agrega os valores unitários e calcula:\nmediana, média, desvio padrão, mínimo, máximo, quartis (Q1, Q3) e\ndescarte de outliers por IQR (1.5×IQR — Tukey).\n\nSaída pronta para colagem em ETP: lista detalhada + sumário estatístico\n+ amostra recomendada (sem outliers). Cache 10 min.",
"inputSchema": {
"properties": {
"codigo_item_catalogo": {
"description": "Código CATMAT (material) ou CATSER (serviço).",
"type": "integer"
},
"max_paginas": {
"default": 5,
"description": "Número máximo de páginas a percorrer ao agregar. Cada página tem 500 registros. Default 5 (até 2500 contratações). Aumente para amostras maiores.",
"type": "integer"
},
"periodo_meses": {
"default": 12,
"description": "Janela de pesquisa em meses contados de hoje para trás. Default 12 (prazo recomendado pela IN SEGES/ME 65/2021 art. 5).",
"type": "integer"
},
"tipo": {
"description": "Tipo do item: 'material' (consulta CATMAT) ou 'servico' (consulta CATSER).",
"enum": [
"material",
"servico"
],
"type": "string"
},
"uf": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtro opcional por UF (ex.: 'DF')."
}
},
"required": [
"tipo",
"codigo_item_catalogo"
],
"type": "object"
},
"name": "compras_pesquisar_precos_para_etp",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Resumo agregado do PGC de um órgão num ano (totais por categoria).\n\nEndpoint Dados Abertos `/modulo-pgc/3_consultarPgcAgregacao`. Retorna\ncontagens e valores totais por categoria/grupo, útil para diagnóstico\nrápido do volume planejado pelo órgão.\n\nCache 1h.",
"inputSchema": {
"properties": {
"ano": {
"description": "Ano do PGC.",
"type": "integer"
},
"codigo_orgao": {
"description": "Código do órgão (obrigatório nesta consulta — é a chave da agregação).",
"type": "integer"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"ano",
"codigo_orgao"
],
"type": "object"
},
"name": "compras_pgc_agregacao",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista itens de PGC (Plano de Gestão de Contratações) do governo federal.\n\nEndpoint Dados Abertos `/modulo-pgc/1_consultarPgcDetalhe`. Cada linha\nrepresenta um item planejado: descrição, quantidade, valor unitário\nestimado, mês previsto de início e categoria de item.\n\nCache 1h.",
"inputSchema": {
"properties": {
"ano": {
"description": "Ano do PGC. Os PGCs do governo federal começam a aparecer a partir de 2020.",
"type": "integer"
},
"codigo_orgao": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código do órgão (filtra os PGCs desse órgão)."
},
"codigo_uasg": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código UASG (filtro mais específico que codigo_orgao)."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
}
},
"required": [
"ano"
],
"type": "object"
},
"name": "compras_pgc_listar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Versão CSV de `compras_pgc_listar` (mesmo dataset, formato planilha).\n\nEndpoint `/modulo-pgc/1.1_consultarPgcDetalhe_CSV`. Útil para colar no\nETP ou planilhar localmente. Retorna o CSV no campo `csv` da resposta.",
"inputSchema": {
"properties": {
"ano": {
"description": "Ano do PGC. Os PGCs do governo federal começam a aparecer a partir de 2020.",
"type": "integer"
},
"codigo_orgao": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código do órgão (filtra os PGCs desse órgão)."
},
"codigo_uasg": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código UASG (filtro mais específico que codigo_orgao)."
}
},
"required": [
"ano"
],
"type": "object"
},
"name": "compras_pgc_listar_csv",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista todos os PGCs que incluem determinado item de catálogo (CATMAT/CATSER).\n\nEndpoint Dados Abertos `/modulo-pgc/2_consultarPgcDetalheCatalogo`.\nÚtil para responder: \"Quais órgãos planejaram comprar esse item este ano?\nEm que quantidade?\". Insumo para ETP e benchmarking de quantitativos.\n\n**Corrigida em 2026-09-07.** A tool mandava `tipo=M`/`tipo=S` e o enum\nupstream é `[Material, Servico]` — **toda** chamada devolvia HTTP 500\n(\"Failed to convert ... EnumPgcDetalheCatalogo ... for value [M]\"). A\ninterface `M`/`S` foi mantida e a tradução passou a ser feita aqui.\nMesma classe de defeito do `tipo=C` das tools de contratações.\n\nCache 1h.",
"inputSchema": {
"properties": {
"ano": {
"description": "Ano do PCA/PGC.",
"type": "integer"
},
"codigo_item": {
"description": "Código do item no catálogo (CATMAT se tipo='M', CATSER se tipo='S').",
"type": "integer"
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
},
"tipo": {
"description": "'M' para CATMAT (material) ou 'S' para CATSER (serviço).",
"enum": [
"M",
"S"
],
"type": "string"
}
},
"required": [
"ano",
"tipo",
"codigo_item"
],
"type": "object"
},
"name": "compras_pgc_por_catalogo",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista os ARQUIVOS de uma Ata de Registro de Preços no PNCP (ata + aditivos).\n\nEndpoint `/v1/orgaos/{cnpj}/compras/{anoCompra}/{sequencialCompra}/atas/{sequencialAta}/arquivos`\nda API pública de arquivos do PNCP (`/api/pncp`, sem chave).\n\nAditivos de reequilíbrio/prorrogação aparecem como documentos adicionais\ndo tipo `Ata de Registro de Preços` — diferencie por `titulo` e\n`dataPublicacaoPncp`. Download: GET simples na `url` de cada item.\n\nCache 15 min.",
"inputSchema": {
"properties": {
"ano_compra": {
"description": "Ano da COMPRA que originou a ata.",
"type": "integer"
},
"cnpj": {
"description": "CNPJ do órgão (14 dígitos, com ou sem pontuação).",
"maxLength": 20,
"minLength": 11,
"type": "string"
},
"sequencial_ata": {
"description": "Sequencial da ATA dentro da compra (1-based). É o sufixo numérico de `numeroControlePncpAta` (ex.: `...-000004/2024` → 4).",
"minimum": 1,
"type": "integer"
},
"sequencial_compra": {
"description": "Sequencial da compra, SEM zeros à esquerda.",
"type": "integer"
}
},
"required": [
"cnpj",
"ano_compra",
"sequencial_compra",
"sequencial_ata"
],
"type": "object"
},
"name": "compras_pncp_ata_arquivos",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista atas registradas no PNCP no período (federal + estadual + municipal).\n\nEndpoint PNCP `/v1/atas`. Permite encontrar atas de qualquer ente da\nfederação — mais amplo que Dados Abertos (só federal SISG).\n\nCache 15 min.",
"inputSchema": {
"properties": {
"cnpj_orgao": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CNPJ do órgão (14 dígitos)."
},
"data_final": {
"description": "Data final (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"data_inicial": {
"description": "Data inicial (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
}
},
"required": [
"data_inicial",
"data_final"
],
"type": "object"
},
"name": "compras_pncp_atas_listar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista os ARQUIVOS anexos de uma contratação no PNCP (Edital, TR, ETP...).\n\nEndpoint `/v1/orgaos/{cnpj}/compras/{ano}/{sequencial}/arquivos` da API\npública de arquivos do PNCP (host `/api/pncp`, sem chave — diferente de\n`/api/consulta`, que exige `chave-api-dadosabertos` e não expõe anexos).\n\nCada item traz `url` (download direto do PDF/ZIP), `sequencialDocumento`,\n`titulo`, `tipoDocumentoNome` (Edital, Termo de Referência, Projeto\nBásico, Estudo Técnico Preliminar...). Atenção: o arquivo do Edital vem\nfrequentemente como ZIP (por vezes ZIP dentro de ZIP) contendo o TR.\nBaixe com GET simples na `url` — não é necessário navegador.\n\nCache 15 min.",
"inputSchema": {
"properties": {
"ano": {
"description": "Ano da contratação (4 dígitos).",
"type": "integer"
},
"cnpj": {
"description": "CNPJ do órgão (14 dígitos, com ou sem pontuação).",
"maxLength": 20,
"minLength": 11,
"type": "string"
},
"sequencial": {
"description": "Sequencial da contratação, SEM zeros à esquerda (ex.: 2101, não 002101).",
"type": "integer"
}
},
"required": [
"cnpj",
"ano",
"sequencial"
],
"type": "object"
},
"name": "compras_pncp_contratacao_arquivos",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista resultados (vencedores) de um item específico de contratação no PNCP.\n\nEndpoint `/v1/orgaos/{cnpj}/compras/{ano}/{sequencial}/itens/{n}/resultados`.\nCache 15 min.",
"inputSchema": {
"properties": {
"ano": {
"description": "Ano da contratação.",
"type": "integer"
},
"cnpj": {
"description": "CNPJ do órgão.",
"maxLength": 20,
"minLength": 11,
"type": "string"
},
"numero_item": {
"description": "Número do item dentro da contratação.",
"type": "integer"
},
"sequencial": {
"description": "Sequencial.",
"type": "integer"
}
},
"required": [
"cnpj",
"ano",
"sequencial",
"numero_item"
],
"type": "object"
},
"name": "compras_pncp_contratacao_item_resultados",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista itens de uma contratação no PNCP.\n\nEndpoint `/v1/orgaos/{cnpj}/compras/{ano}/{sequencial}/itens`.\nCache 15 min.",
"inputSchema": {
"properties": {
"ano": {
"description": "Ano da contratação.",
"type": "integer"
},
"cnpj": {
"description": "CNPJ do órgão.",
"maxLength": 20,
"minLength": 11,
"type": "string"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"sequencial": {
"description": "Sequencial da contratação.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"cnpj",
"ano",
"sequencial"
],
"type": "object"
},
"name": "compras_pncp_contratacao_itens",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Consulta uma contratação específica pelo CNPJ + ano + sequencial.\n\nEndpoint `/v1/orgaos/{cnpj}/compras/{ano}/{sequencial}`. Devolve\ncabeçalho completo da contratação.\n\nCache 15 min.",
"inputSchema": {
"properties": {
"ano": {
"description": "Ano da contratação (4 dígitos).",
"type": "integer"
},
"cnpj": {
"description": "CNPJ do órgão (14 dígitos, com ou sem pontuação).",
"maxLength": 20,
"minLength": 11,
"type": "string"
},
"sequencial": {
"description": "Sequencial da contratação dentro do órgão e ano.",
"type": "integer"
}
},
"required": [
"cnpj",
"ano",
"sequencial"
],
"type": "object"
},
"name": "compras_pncp_contratacao_por_orgao",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista contratações alteradas no período (PNCP).\n\nEndpoint `/v1/contratacoes/atualizacao`. Útil para monitoramento:\ndescobrir editais que sofreram retificações/republicações. Aceita\nfiltro `esfera` client-side.\n\nCache 15 min.",
"inputSchema": {
"properties": {
"codigo_modalidade": {
"description": "Código da modalidade (obrigatório no PNCP). Códigos comuns: 1=Leilão Eletrônico, 4=Concorrência Eletrônica, 6=Pregão Eletrônico, 8=Dispensa, 9=Inexigibilidade, 13=Concurso.",
"type": "integer"
},
"data_final": {
"description": "Data final de atualização (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"data_inicial": {
"description": "Data inicial de atualização (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"esfera": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtro opcional de esfera federativa (`federal`, `estadual`, `municipal` ou `distrital`). Aplicado client-side sobre a página retornada — útil para recortar a lista, mas note que `_total_registros` continua refletindo o total **sem** filtro de esfera."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página (PNCP mínimo 10).",
"type": "integer"
}
},
"required": [
"data_inicial",
"data_final",
"codigo_modalidade"
],
"type": "object"
},
"name": "compras_pncp_contratacoes_atualizacao",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista contratações com prazo de proposta aberto no PNCP.\n\nEndpoint `/v1/contratacoes/proposta`. Útil para mapear oportunidades\nabertas para fornecedores ou para identificar contratações em curso\nem órgãos similares. Filtro `esfera` opcional client-side.\n\nCache 15 min.",
"inputSchema": {
"properties": {
"codigo_modalidade": {
"description": "Código da modalidade (ver PNCPListarContratacoesInput).",
"type": "integer"
},
"data_final": {
"description": "Data limite para propostas (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"esfera": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtro opcional de esfera federativa (`federal`, `estadual`, `municipal` ou `distrital`). Aplicado client-side sobre a página retornada — útil para recortar a lista, mas note que `_total_registros` continua refletindo o total **sem** filtro de esfera."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
},
"uf": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sigla da UF."
}
},
"required": [
"data_final",
"codigo_modalidade"
],
"type": "object"
},
"name": "compras_pncp_contratacoes_proposta",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista contratações publicadas no PNCP no período.\n\nEndpoint `/v1/contratacoes/publicacao`. Cobre todos os entes da\nfederação. Modalidades comuns: 6=Pregão Eletrônico, 8=Dispensa,\n9=Inexigibilidade, 4=Concorrência Eletrônica.\n\nO filtro `esfera` (federal/estadual/municipal/distrital) é aplicado\nclient-side sobre a página retornada. Janela máxima por consulta: ~30\ndias. Cache 15 min.",
"inputSchema": {
"properties": {
"cnpj_orgao": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CNPJ do órgão (14 dígitos)."
},
"codigo_modalidade": {
"description": "Código da modalidade (obrigatório no PNCP). Códigos comuns: 1=Leilão Eletrônico, 4=Concorrência Eletrônica, 6=Pregão Eletrônico, 8=Dispensa, 9=Inexigibilidade, 13=Concurso.",
"type": "integer"
},
"codigo_municipio_ibge": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Código IBGE do município (7 dígitos)."
},
"data_final": {
"description": "Data final de publicação (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"data_inicial": {
"description": "Data inicial de publicação (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"esfera": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtro opcional de esfera federativa (`federal`, `estadual`, `municipal` ou `distrital`). Aplicado client-side sobre a página retornada — útil para recortar a lista, mas note que `_total_registros` continua refletindo o total **sem** filtro de esfera."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página (PNCP mínimo 10).",
"type": "integer"
},
"uf": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sigla da UF."
}
},
"required": [
"data_inicial",
"data_final",
"codigo_modalidade"
],
"type": "object"
},
"name": "compras_pncp_contratacoes_publicacao",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Consulta um contrato específico no PNCP.\n\nEndpoint `/v1/orgaos/{cnpj}/contratos/{ano}/{sequencial}`. Cache 15 min.",
"inputSchema": {
"properties": {
"ano": {
"description": "Ano do contrato.",
"type": "integer"
},
"cnpj": {
"description": "CNPJ do órgão.",
"maxLength": 20,
"minLength": 11,
"type": "string"
},
"sequencial": {
"description": "Sequencial do contrato.",
"type": "integer"
}
},
"required": [
"cnpj",
"ano",
"sequencial"
],
"type": "object"
},
"name": "compras_pncp_contrato_por_orgao",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista contratos publicados no PNCP no período.\n\nEndpoint `/v1/contratos`. Cache 15 min.",
"inputSchema": {
"properties": {
"cnpj_orgao": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CNPJ do órgão (14 dígitos)."
},
"data_final": {
"description": "Data final (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"data_inicial": {
"description": "Data inicial de publicação do contrato (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"required": [
"data_inicial",
"data_final"
],
"type": "object"
},
"name": "compras_pncp_contratos_listar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Cheat sheet local: códigos de modalidade de contratação do PNCP.\n\nTool local (não chama upstream). Fonte: tabela oficial PNCP (Lei 14.133).\n\n**ATENÇÃO — duas tabelas em circulação no ecossistema Compras**:\n- `codigo` aqui (PNCP) é o usado em TODAS as tools `compras_pncp_*` e\n em `modalidadeIdPncp` no payload de retorno.\n- O Dados Abertos / SIASG usa uma enumeração diferente em\n `compras_contratacoes_14133_listar(codigo_modalidade_dados_abertos)`:\n campo `equivalente_dados_abertos` abaixo, ou None se a modalidade\n não estiver disponível naquele endpoint.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "compras_pncp_modalidades",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista unidades administrativas de um órgão no PNCP.\n\nEndpoint PNCP `/v1/orgaos/{cnpj}/unidades`. Útil para descobrir códigos\nde unidade antes de filtrar contratações/contratos do órgão.\n\nCobre estados e municípios (não só federal). Cache 24h.\n\n**Tratamento de 404**: nem todo CNPJ está indexado no PNCP. Em vez de\nlevantar exception, esta tool retorna `_erro_upstream` informativo\ncom lista de alternativas (mesmo padrão das tools `compras_uasg_*` /\n`compras_orgao_*` quando o `/modulo-uasg/*` retorna 404).",
"inputSchema": {
"properties": {
"cnpj": {
"description": "CNPJ do órgão (14 dígitos, com ou sem pontuação). Exemplo: 00394460000141 (Presidência da República).",
"maxLength": 20,
"minLength": 11,
"type": "string"
}
},
"required": [
"cnpj"
],
"type": "object"
},
"name": "compras_pncp_orgao_unidades",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista PCAs atualizados num período (PNCP).\n\nEndpoint PNCP `/v1/pca/atualizacao`. Útil para monitoramento: descobrir\nquais órgãos revisaram seu PCA recentemente.\n\nCache 1h.",
"inputSchema": {
"properties": {
"data_final": {
"description": "Data final do período (YYYY-MM-DD). Janela máxima ~30 dias.",
"format": "date",
"type": "string"
},
"data_inicial": {
"description": "Data inicial do período de atualização (YYYY-MM-DD).",
"format": "date",
"type": "string"
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
}
},
"required": [
"data_inicial",
"data_final"
],
"type": "object"
},
"name": "compras_pncp_pca_atualizacao",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista PCAs (Planos Anuais de Contratações) no PNCP.\n\nEndpoint PNCP `/v1/pca/`. Diferente do PGC, o PCA da Lei 14.133 cobre\nfederais + estaduais + municipais. Filtra por categoria do item\n(`codigo_classificacao_superior` é obrigatório no upstream).\n\nCache 1h.",
"inputSchema": {
"properties": {
"ano": {
"description": "Ano do PCA (Lei 14.133).",
"type": "integer"
},
"cnpj_orgao": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CNPJ do órgão (filtra PCAs desse órgão; 14 dígitos)."
},
"codigo_classificacao_superior": {
"description": "Código da classificação superior do item no catálogo. Obrigatório no endpoint PNCP. Para CATMAT use o código do grupo; para CATSER use o código da seção. Veja `compras_catmat_listar_grupos` ou `compras_catser_listar_secoes`.",
"type": "integer"
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
}
},
"required": [
"ano",
"codigo_classificacao_superior"
],
"type": "object"
},
"name": "compras_pncp_pca_listar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista itens de PCA filtrados por categoria superior do item.\n\nEndpoint PNCP `/v1/pca/` com `codigoClassificacaoSuperior`. Permite\nagregar planejamentos por categoria (ex.: todos os itens de TI\nplanejados para o ano).\n\nCache 1h.",
"inputSchema": {
"properties": {
"ano": {
"description": "Ano do PCA.",
"type": "integer"
},
"codigo_classificacao_superior": {
"description": "Código de classificação superior do item (categoria pai). Veja a tabela de classificação no manual do PNCP.",
"type": "integer"
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
}
},
"required": [
"ano",
"codigo_classificacao_superior"
],
"type": "object"
},
"name": "compras_pncp_pca_por_classificacao_superior",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista PCAs vinculados a um usuário/sistema integrador específico.\n\nEndpoint PNCP `/v1/pca/usuario`. Uso menos comum — geralmente o\nanalista prefere `compras_pncp_pca_listar` com `cnpj_orgao`.\n\nCache 1h.",
"inputSchema": {
"properties": {
"ano": {
"description": "Ano do PCA.",
"type": "integer"
},
"id_usuario": {
"description": "ID interno de usuário/sistema integrador do PNCP. Obtido na documentação interna do órgão; raramente usado por analistas.",
"type": "integer"
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Registros por página.",
"type": "integer"
}
},
"required": [
"ano",
"id_usuario"
],
"type": "object"
},
"name": "compras_pncp_pca_por_usuario",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista acordos de leniência firmados com a CGU.\n\nEndpoint `/api-de-dados/acordos-leniencia`. Empresas com acordo ativo\nestão sob compromisso de compliance reforçado — informação útil para\nanálise de risco em contratações de alto valor.\n\nCache 1h.",
"inputSchema": {
"properties": {
"cnpj": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CNPJ do sancionado (14 dígitos)."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
}
},
"type": "object"
},
"name": "compras_sancao_acordos_leniencia",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Consulta CEAF — Cadastro de Expulsões da Administração Federal.\n\nEndpoint `/api-de-dados/ceaf`. Servidores expulsos do serviço público\nfederal. Útil quando se identifica responsável/preposto suspeito.\n\nCPFs mascarados por LGPD (`123.***.***-45`). Cache 1h.",
"inputSchema": {
"properties": {
"cpf": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CPF do servidor (11 dígitos, com ou sem pontuação)."
},
"nome": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Nome do servidor expulso (busca textual)."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
}
},
"type": "object"
},
"name": "compras_sancao_ceaf",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Consulta CEIS — Cadastro de Empresas Inidôneas e Suspensas.\n\nEndpoint `/api-de-dados/ceis`. Empresas com sanção ativa não podem\ncontratar com a administração pública. Use **sempre** antes de\nhomologar pregões e contratos.\n\nCache 1h.",
"inputSchema": {
"properties": {
"cnpj": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CNPJ do fornecedor (14 dígitos, com ou sem pontuação)."
},
"nome": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Nome (razão social/fantasia) do sancionado para busca textual."
},
"orgao_sancionador": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sigla do órgão sancionador (ex.: 'TCU')."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
}
},
"type": "object"
},
"name": "compras_sancao_ceis",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Consulta CEPIM — Entidades Privadas Sem Fins Lucrativos Impedidas.\n\nEndpoint `/api-de-dados/cepim`. Aplicável a contratações via convênios\ne termos de fomento com OSCs.\n\nCache 1h.",
"inputSchema": {
"properties": {
"cnpj": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CNPJ da entidade (14 dígitos)."
},
"nome": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Nome da entidade (busca textual)."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
}
},
"type": "object"
},
"name": "compras_sancao_cepim",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Consulta CNEP — Cadastro Nacional de Empresas Punidas (Lei Anticorrupção).\n\nEndpoint `/api-de-dados/cnep`. Empresas punidas pela Lei 12.846/2013\n(Lei Anticorrupção). Indicador de risco de integridade.\n\nCache 1h.",
"inputSchema": {
"properties": {
"cnpj": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CNPJ do fornecedor (14 dígitos, com ou sem pontuação)."
},
"nome": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Nome do sancionado."
},
"pagina": {
"default": 1,
"description": "Página (1-based).",
"type": "integer"
}
},
"type": "object"
},
"name": "compras_sancao_cnep",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Busca UASGs por trecho do nome (match parcial, ignora acento e caixa).\n\n**✅ Restaurada em 2026-08-05, com busca local.** Duas correções:\n\n1. A rota exige `statusUasg`; sem ele devolvia 404 (mesma causa de\n `compras_uasg_listar`).\n2. O parâmetro `nome` **não existe** no contrato da rota e era\n ignorado pelo upstream — enviá-lo devolvia o universo inteiro\n (~22 mil UASGs) como se fossem resultados de busca. Corrigir só o\n item 1 teria trocado um erro visível (404) por um erro silencioso,\n que é pior: o analista receberia \"TCU - SECRETARIA DE INFORMATICA\"\n como 1º resultado de qualquer termo.\n\nComo não há filtro textual upstream, a busca é feita **localmente**:\na tool varre as páginas da rota (500 registros cada, ~8s no universo\ncompleto), filtra por `termo` e pagina o resultado filtrado. O varrido\nfica em cache por 24h, então só a primeira busca do dia paga o custo.\n\nO payload informa `_busca_local`, `_paginas_varridas` e\n`_universo_varrido` — se a varredura for truncada, isso fica explícito\nem vez de virar silêncio.\n\nCache 24h.",
"inputSchema": {
"properties": {
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
},
"termo": {
"description": "Trecho do nome da UASG (match literal, ignora acento e caixa). Ex.: 'aquaviarios', 'tribunal regional', 'exercito'. Siglas raramente funcionam — os nomes vêm por extenso no cadastro ('AGÊNCIA NACIONAL DE TRANSPORTES AQUAVIÁRIOS', não 'ANTAQ').",
"maxLength": 100,
"minLength": 2,
"type": "string"
}
},
"required": [
"termo"
],
"type": "object"
},
"name": "compras_uasg_buscar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Consulta uma UASG específica pelo código.\n\nDevolve nome, sigla, CNPJ vinculado, órgão superior e endereço.\nÚtil para resolver `codigo_uasg` antes de consultas filtradas.\n\n**✅ Restaurada em 2026-08-05** — ver `compras_uasg_listar` para o\ndiagnóstico do 404 que afetava toda a família `/modulo-uasg/*`.\n\nBusca primeiro entre as ativas; se não achar, repete entre as inativas\n(o upstream exige `statusUasg` e não aceita \"ambas\"), devolvendo\n`ativa: false` para UASGs extintas.\n\nCache 24h.",
"inputSchema": {
"properties": {
"codigo_uasg": {
"description": "Código numérico da UASG.",
"type": "integer"
}
},
"required": [
"codigo_uasg"
],
"type": "object"
},
"name": "compras_uasg_consultar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Lista UASGs (Unidades Administrativas de Serviços Gerais) do governo.\n\n**✅ Restaurada em 2026-08-05.** Da v0.2.x até a v0.3.12 esta tool\ndevolvia \"endpoint indisponível\" e a documentação atribuía o 404 a um\nbug de roteamento da SEGES. O diagnóstico estava errado: faltava o\nparâmetro obrigatório `statusUasg`, e esta API responde **404** (não\n400) quando um obrigatório não vem. Enviando o parâmetro, a rota\ndevolve 200 com ~22 mil UASGs ativas.\n\nO filtro `ativo` alimenta `statusUasg`; quando não informado, a tool\nassume `True` (ativas), que é o caso de uso dominante.\n\n**Paginação**: o upstream ignora `tamanho_pagina` nesta rota e devolve\npáginas fixas de 500 registros — `_total_paginas` reflete a paginação\nreal do servidor, não o tamanho pedido.\n\n**`codigo_orgao` corrigido em 2026-09-07.** O filtro era enviado como\n`codigoOrgao`, chave que esta rota não declara: a resposta vinha com as\n22 mil UASGs do país, sem aviso, como se o órgão não tivesse recorte\nnenhum. Agora a tool resolve o código para o CNPJ do órgão e filtra por\n`cnpjCpfOrgao` — órgão 26246 (UFSC) devolve 3 UASGs. Custa uma chamada\nextra a `/modulo-uasg/2_consultarOrgao`.\n\nDuas ressalvas, ambas tratadas aqui: **CNPJ não identifica órgão** (599\ndos 11.957 órgãos ativos compartilham CNPJ com outro — as 7 unidades do\nCNPJ da Polícia Federal devolviam 110 UASGs, das quais só 8 do órgão\npedido), então o resultado é reduzido client-side pelo `codigoOrgao` de\ncada UASG; e **39 órgãos não têm CNPJ próprio** (o upstream grava `\"0\"`),\ncaso em que a tool devolve lista vazia com `_aviso_filtro` em vez de um\nrecorte falso.\n\nCache 24h.",
"inputSchema": {
"properties": {
"ativo": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "True para apenas UASGs ativas, False para inativas, None para ambas."
},
"codigo_orgao": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Filtra UASGs subordinadas a este código de órgão."
},
"pagina": {
"default": 1,
"description": "Página de resultados (1-based). Padrão 1.",
"type": "integer"
},
"tamanho_pagina": {
"default": 50,
"description": "Quantidade de registros por página. Padrão 50, máximo 500.",
"type": "integer"
}
},
"type": "object"
},
"name": "compras_uasg_listar",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Healthcheck/diagnóstico do MCP. Retorna versão, fontes upstream e\nestado de configurações sensíveis (sem expor valores).\n\nÚtil para confirmar que o servidor está respondendo, qual a versão\ninstalada, quais APIs estão acessíveis e se a chave da Transparência\nfoi configurada (necessária para tools de sanções).",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "compras_versao",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:8420aff0a50810a38600f4c49ff91e4802d0be294437b546583edfca34469274 | sha256sum