{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T19:00:45.936Z","url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp","markdownUrl":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp.md","server":{"slug":"opedrosoares-mcp-compras","name":"MCP Compras.gov.br","registryName":"io.github.opedrosoares/mcp-compras","description":"Preços, atas, contratos e sanções das APIs públicas de compras do governo brasileiro","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"compras-mcp","type":"pypi","identifier":"compras-mcp","withdrawn":false,"url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp","version":"0.4.0","transport":"stdio","scoredAt":"2026-11-05T08:02:29.554Z"},"score":{"total":0,"tier":"low","status":"failed","weekDelta":0,"history":[{"date":"2026-11-05","total":0},{"date":"2026-11-04","total":0},{"date":"2026-11-03","total":0},{"date":"2026-11-02","total":0},{"date":"2026-11-01","total":0},{"date":"2026-10-31","total":0},{"date":"2026-10-30","total":0},{"date":"2026-10-29","total":0},{"date":"2026-10-28","total":0},{"date":"2026-10-27","total":0},{"date":"2026-10-26","total":0},{"date":"2026-10-25","total":0},{"date":"2026-10-24","total":0},{"date":"2026-10-23","total":0},{"date":"2026-10-22","total":0},{"date":"2026-10-21","total":0},{"date":"2026-10-20","total":0},{"date":"2026-10-19","total":0},{"date":"2026-10-18","total":0},{"date":"2026-10-17","total":0},{"date":"2026-10-16","total":0},{"date":"2026-10-15","total":0},{"date":"2026-10-14","total":0},{"date":"2026-10-13","total":0},{"date":"2026-10-12","total":0},{"date":"2026-10-04","total":0},{"date":"2026-10-03","total":0},{"date":"2026-10-02","total":0},{"date":"2026-10-01","total":0},{"date":"2026-09-30","total":0}]},"categories":[{"name":"Supply Chain Security","score":75,"verdict":"fail","reasons":["No malware found by supply-chain analysis.","CVE check failed: an unpatched critical CVE affects this package; the score is capped at 0.","Runs hatchling.build at install time, a recognised build step with no custom scripting around it.","8 of 74 dependencies flagged as unhealthy."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.unpatched_critical","args":{"severity":"high"}},{"code":"installscript.allowlisted","args":{"tool":"hatchling.build","hooks":"build_backend"}},{"code":"dephealth.assessed","args":{"deps":"74","unhealthy":"8"}}]},{"name":"Provenance & Transparency","score":58,"verdict":"fail","reasons":["Repository check failed: the declared repository URL returned HTTP 404.","Cryptographically verified build provenance (signed, bound to opedrosoares/MCP_Compras).","Licence could not be checked: the licence is shipped as a file inside the package, not declared as a standard (SPDX) licence identifier, so we cannot tell whether it is OSI-approved.","Actively maintained (last published 56 days ago).","Security-disclosure policy not yet verified: we couldn't inspect the source repository."],"codes":[{"code":"provenance.repo_http_error","args":{"status":"404"}},{"code":"provenance.verified","args":{"repo":"opedrosoares/MCP_Compras"}},{"code":"license.inconclusive","args":{"reason":"license_file_only"}},{"code":"maintenance.recent","args":{"age_days":"56"}},{"code":"disclosure.repo_inconclusive","args":{"reason":"repo_not_visible"}}]},{"name":"Schema Quality & AI Usability","score":78,"verdict":"fail","reasons":["100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).","AI-judged instruction clarity (excellent).","Context-footprint check failed: tool/resource definitions use about 24361 tokens (~229/item across 106 items; 100 tools + 6 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.descriptions","args":{"pct":"100"}},{"code":"schema.ai_quality","args":{"band":"excellent"}},{"code":"schema.footprint_heavy","args":{"avg":"229","items":"106","tools":"100","tokens":"24361","resources":"6"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":67,"verdict":"partial","reasons":["Stability observed for 20 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"20"}}]},{"name":"Tool Coverage","score":100,"verdict":"pass","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","100% of tool parameters carry a description.","Structured output schemas are declared (100% of tools); any adoption earns full credit."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"100"}},{"code":"toolquality.output_present","args":{"pct":"100"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","We read all 100 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 102 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_none","args":{"tools":"100"}},{"code":"toolsafety.manipulation_clean","args":{"units":"102","judged":"102"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28."],"codes":[{"code":"protocol.supported","args":{"latest":"2026-07-28","version":"2025-11-25"}}]}],"inconclusive":["Licence could not be checked: the licence is shipped as a file inside the package, not declared as a standard (SPDX) licence identifier, so we cannot tell whether it is OSI-approved.","Security-disclosure policy not yet verified: we couldn't inspect the source repository."],"malware":[],"components":[{"slug":"mcp-compras","type":"remote","identifier":"https://mcp-compras.up.railway.app/mcp","withdrawn":false,"score":23,"current":false,"url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/mcp-compras","markdownUrl":"https://verifymcp.io/servers/opedrosoares-mcp-compras/mcp-compras.md"},{"slug":"compras-mcp","type":"pypi","identifier":"compras-mcp","withdrawn":false,"score":0,"current":true,"url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp","markdownUrl":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp.md"}],"facts":[{"label":"Registry","value":"pypi"},{"label":"Package","value":"compras-mcp"},{"label":"Version","value":"0.4.0"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"compras_aggregate_contratacoes_por_periodo","title":null,"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.","inputs":[{"name":"codigo_modalidade","type":"integer","required":true,"description":"Modalidade PNCP a agregar. Comuns: 6=Pregão Eletrônico, 8=Dispensa, 9=Inexigibilidade, 4=Concorrência Eletrônica."},{"name":"data_final","type":"string","required":true,"description":"Data final da janela de agregação (YYYY-MM-DD)."},{"name":"data_inicial","type":"string","required":true,"description":"Data inicial da janela de agregação (YYYY-MM-DD)."},{"name":"esfera","type":null,"required":false,"description":"Filtro de esfera (federal/estadual/municipal/distrital). Só tem efeito no modo 'valor_*' (precisa varrer páginas)."},{"name":"granularidade","type":"string","required":false,"description":"Tamanho de cada bucket da série: 'dia', 'semana', 'mes' ou 'ano'."},{"name":"metrica","type":"string","required":false,"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."},{"name":"uf","type":null,"required":false,"description":"UF opcional."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":374},{"name":"compras_comparar_periodos_contratacoes","title":null,"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?\"_.","inputs":[{"name":"codigo_modalidade","type":"integer","required":true,"description":"Modalidade PNCP a comparar. Comuns: 6=Pregão Eletrônico, 8=Dispensa, 4=Concorrência Eletrônica."},{"name":"esfera","type":null,"required":false,"description":"Esfera federativa. Requer métrica de valor (modo paginado)."},{"name":"label_a","type":"string","required":false,"description":"Rótulo amigável do período A (ex.: 'Jun/2024')."},{"name":"label_b","type":"string","required":false,"description":"Rótulo amigável do período B (ex.: 'Jun/2025')."},{"name":"metrica","type":"string","required":false,"description":"Métrica a comparar: 'count' (rápido) ou 'valor_estimado' / 'valor_homologado' (paginado)."},{"name":"periodo_a_fim","type":"string","required":true,"description":"Data final do período A (YYYY-MM-DD)."},{"name":"periodo_a_inicio","type":"string","required":true,"description":"Data inicial do período A (YYYY-MM-DD)."},{"name":"periodo_b_fim","type":"string","required":true,"description":"Data final do período B (YYYY-MM-DD)."},{"name":"periodo_b_inicio","type":"string","required":true,"description":"Data inicial do período B (YYYY-MM-DD)."},{"name":"uf","type":null,"required":false,"description":"UF opcional."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":373},{"name":"compras_arp_listar","title":null,"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.","inputs":[{"name":"codigo_modalidade_compra","type":null,"required":false,"description":"Filtra por modalidade da compra que originou a ata."},{"name":"codigo_unidade_gerenciadora","type":null,"required":false,"description":"Filtra ARPs pela UASG gerenciadora (5-6 dígitos)."},{"name":"data_vigencia_inicial_max","type":"string","required":true,"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."},{"name":"data_vigencia_inicial_min","type":"string","required":true,"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."},{"name":"numero_ata_registro_preco","type":null,"required":false,"description":"Filtra por número da ata (ex.: '00001/2024')."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":315},{"name":"compras_arp_consultar","title":null,"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.","inputs":[{"name":"numero_controle_pncp_ata","type":"string","required":true,"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…"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":263},{"name":"compras_arp_por_fim_vigencia","title":null,"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.","inputs":[{"name":"codigo_unidade_gerenciadora","type":null,"required":false,"description":"UASG gerenciadora (opcional)."},{"name":"data_vigencia_final_max","type":"string","required":true,"description":"Data MÁXIMA de fim de vigência (YYYY-MM-DD). Obrigatório."},{"name":"data_vigencia_final_min","type":"string","required":true,"description":"Data MÍNIMA de fim de vigência (YYYY-MM-DD). Obrigatório. Janela max ≤ 365 dias."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":196},{"name":"compras_arp_buscar_por_objeto","title":null,"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).","inputs":[{"name":"data_vigencia_final_max","type":"string","required":true,"description":"Limite máximo do fim de vigência (YYYY-MM-DD)."},{"name":"data_vigencia_final_min","type":"string","required":true,"description":"Limite mínimo do fim de vigência (YYYY-MM-DD). Tipicamente hoje para 'apenas vigentes'."},{"name":"max_paginas_varridas","type":"integer","required":false,"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."},{"name":"max_resultados","type":"integer","required":false,"description":"Quantos matches no máximo retornar (curto-circuita a varredura)."},{"name":"palavra_chave","type":"string","required":true,"description":"Termo a procurar no campo `objetoCompra` das ARPs (case-insensitive, com normalização básica de acentos). Exemplos: 'notebook', 'uniformes', 'limpeza'."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":524},{"name":"compras_arp_itens_listar","title":null,"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.","inputs":[{"name":"codigo_item","type":null,"required":false,"description":"Filtra por código CATMAT ou CATSER."},{"name":"codigo_unidade_gerenciadora","type":null,"required":false,"description":"UASG gerenciadora (opcional)."},{"name":"data_vigencia_inicial_max","type":"string","required":true,"description":"Data máxima de início de vigência (YYYY-MM-DD)."},{"name":"data_vigencia_inicial_min","type":"string","required":true,"description":"Data mínima de início de vigência (YYYY-MM-DD)."},{"name":"ni_fornecedor","type":null,"required":false,"description":"CPF/CNPJ do fornecedor (apenas dígitos)."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."},{"name":"tipo_item","type":null,"required":false,"description":"Tipo do item: 'M' (material) ou 'S' (serviço)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":253},{"name":"compras_arp_unidades_item","title":null,"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.","inputs":[{"name":"numero_ata","type":"string","required":true,"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`."},{"name":"numero_item","type":"integer","required":true,"description":"Número do item dentro da ata."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."},{"name":"unidade_gerenciadora","type":"integer","required":true,"description":"Código da UASG gerenciadora da ata."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":206},{"name":"compras_arp_saldo_item","title":null,"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).","inputs":[{"name":"numero_ata","type":"string","required":true,"description":"Número simples da ata (ex.: '00001/2024')."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."},{"name":"unidade_gerenciadora","type":"integer","required":true,"description":"Código da UASG gerenciadora da ata."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":331},{"name":"compras_arp_adesoes_item","title":null,"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.","inputs":[{"name":"numero_ata","type":"string","required":true,"description":"Número simples da ata (ex.: '00001/2024')."},{"name":"numero_item","type":"integer","required":true,"description":"Número do item dentro da ata."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."},{"name":"unidade_gerenciadora","type":"integer","required":true,"description":"Código da UASG gerenciadora da ata."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":180},{"name":"compras_pncp_atas_listar","title":null,"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.","inputs":[{"name":"cnpj_orgao","type":null,"required":false,"description":"CNPJ do órgão (14 dígitos)."},{"name":"data_final","type":"string","required":true,"description":"Data final (YYYY-MM-DD)."},{"name":"data_inicial","type":"string","required":true,"description":"Data inicial (YYYY-MM-DD)."},{"name":"pagina","type":"integer","required":false,"description":"Página (1-based)."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Registros por página."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":141},{"name":"compras_catmat_listar_grupos","title":null,"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.","inputs":[{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":151},{"name":"compras_catmat_listar_classes","title":null,"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.","inputs":[{"name":"codigo_grupo","type":null,"required":false,"description":"Restringe a classes pertencentes a este grupo CATMAT. Se omitido, lista classes de todos os grupos."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":141},{"name":"compras_catmat_consultar","title":null,"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.","inputs":[{"name":"codigo_item","type":"integer","required":true,"description":"Código numérico do item no CATMAT (Catálogo de Materiais). Inteiro de 4 a 8 dígitos. Exemplo: 460789."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":115},{"name":"compras_catmat_listar_pdms","title":null,"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.","inputs":[{"name":"apenas_ativos","type":null,"required":false,"description":"Se `true`, só PDMs com status ativo no catálogo."},{"name":"codigo_classe","type":null,"required":false,"description":"Código da classe CATMAT (4 dígitos). É o recorte mais útil: uma classe devolve suas dezenas de PDMs em uma única chamada."},{"name":"codigo_grupo","type":null,"required":false,"description":"Código do grupo CATMAT (2 dígitos) para listar seus PDMs."},{"name":"codigo_pdm","type":null,"required":false,"description":"Código de um PDM específico."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":415},{"name":"compras_catmat_buscar","title":null,"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).","inputs":[{"name":"codigo_classe","type":null,"required":false,"description":"Filtro estrutural por classe CATMAT (4 dígitos). Use em conjunto com `codigo_grupo` para focar a busca."},{"name":"codigo_grupo","type":null,"required":false,"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`."},{"name":"codigo_pdm","type":null,"required":false,"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`."},{"name":"pagina","type":"integer","required":false,"description":"Página (1-based)."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Registros por página."},{"name":"termo","type":"string","required":true,"description":"Termo de busca textual (descrição do material/serviço). Aceita fragmento — a API faz match parcial. Ex.: 'cadeira ergonomica'."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":563},{"name":"compras_catser_listar_secoes","title":null,"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.","inputs":[{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":124},{"name":"compras_catser_listar_classes","title":null,"description":"Lista as classes CATSER, opcionalmente filtradas por grupo.\n\nCache de 24h.","inputs":[{"name":"codigo_grupo","type":null,"required":false,"description":"Restringe a classes do grupo CATSER informado."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":95},{"name":"compras_catser_consultar","title":null,"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.","inputs":[{"name":"codigo_item","type":"integer","required":true,"description":"Código numérico do item no CATSER (Catálogo de Serviços). Inteiro de 4 a 6 dígitos. Exemplo: 27332."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":108},{"name":"compras_pesquisar_precos_para_etp","title":null,"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.","inputs":[{"name":"codigo_item_catalogo","type":"integer","required":true,"description":"Código CATMAT (material) ou CATSER (serviço)."},{"name":"max_paginas","type":"integer","required":false,"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."},{"name":"periodo_meses","type":"integer","required":false,"description":"Janela de pesquisa em meses contados de hoje para trás. Default 12 (prazo recomendado pela IN SEGES/ME 65/2021 art. 5)."},{"name":"tipo","type":"string","required":true,"description":"Tipo do item: 'material' (consulta CATMAT) ou 'servico' (consulta CATSER)."},{"name":"uf","type":null,"required":false,"description":"Filtro opcional por UF (ex.: 'DF')."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":305},{"name":"compras_checar_sancoes_fornecedor","title":null,"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.","inputs":[{"name":"cnpj","type":"string","required":true,"description":"CNPJ do fornecedor (14 dígitos, com ou sem pontuação)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":144},{"name":"compras_montar_dossie_arp","title":null,"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.","inputs":[{"name":"numero_ata","type":"string","required":true,"description":"Número simples da ata (ex.: '00001/2024'). Usado nos endpoints de saldo, adesões e unidades participantes."},{"name":"numero_controle_pncp_ata","type":"string","required":true,"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…"},{"name":"numero_item","type":null,"required":false,"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."},{"name":"unidade_gerenciadora","type":"integer","required":true,"description":"Código UASG da unidade gerenciadora da ata."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":426},{"name":"compras_buscar_contratacoes_similares","title":null,"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.","inputs":[{"name":"codigo_catmat","type":null,"required":false,"description":"Código CATMAT do item. Mutuamente exclusivo com codigo_catser."},{"name":"codigo_catser","type":null,"required":false,"description":"Código CATSER do serviço. Mutuamente exclusivo com codigo_catmat."},{"name":"max_resultados","type":"integer","required":false,"description":"Máximo de contratações similares a retornar (deduplicadas)."},{"name":"periodo_meses","type":"integer","required":false,"description":"Janela de busca em meses contados de hoje para trás."},{"name":"uf","type":null,"required":false,"description":"Filtro opcional por UF."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":358},{"name":"compras_perfil_fornecedor_completo","title":null,"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.","inputs":[{"name":"cnpj","type":"string","required":true,"description":"CNPJ do fornecedor (14 dígitos, com ou sem pontuação)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":340},{"name":"compras_contratacoes_14133_listar","title":null,"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.","inputs":[{"name":"amparo_legal","type":null,"required":false,"description":"Código do amparo legal no PNCP (campo `amparoLegalCodigoPncp`). Ex.: 18 = Lei 14.133/2021, Art. 75, I (dispensa por valor)."},{"name":"cnpj_orgao","type":null,"required":false,"description":"CNPJ do órgão (14 dígitos, com ou sem pontuação)."},{"name":"codigo_ibge_municipio","type":null,"required":false,"description":"Código IBGE do município da unidade compradora (7 dígitos)."},{"name":"codigo_modalidade_dados_abertos","type":null,"required":false,"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)…"},{"name":"codigo_orgao_pncp","type":null,"required":false,"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_con…"},{"name":"codigo_uasg","type":null,"required":false,"description":"Código UASG do órgão licitante."},{"name":"data_final_publicacao","type":null,"required":false,"description":"Data final de publicação (YYYY-MM-DD)."},{"name":"data_inicial_publicacao","type":null,"required":false,"description":"Data inicial de publicação (YYYY-MM-DD)."},{"name":"pagina","type":"integer","required":false,"description":"Página (1-based)."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Registros por página."},{"name":"uf","type":null,"required":false,"description":"Sigla da UF da unidade compradora (2 letras, ex.: 'SP', 'MS')."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":696},{"name":"compras_contratacoes_14133_consultar","title":null,"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.","inputs":[{"name":"id_contratacao","type":"string","required":true,"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 (al…"},{"name":"tipo_identificador","type":"string","required":false,"description":"Qual identificador está sendo passado em `id_contratacao`: 'idCompra' (padrão) ou 'numeroControlePNCPCompra'. O upstream rejeita qualquer outro valor com HTTP 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":301},{"name":"compras_contratacoes_14133_itens_listar","title":null,"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.","inputs":[{"name":"cnpj_cpf_fornecedor","type":null,"required":false,"description":"CNPJ ou CPF do fornecedor vencedor do item (só dígitos)."},{"name":"cnpj_orgao","type":null,"required":false,"description":"CNPJ do órgão comprador (14 dígitos, com ou sem pontuação)."},{"name":"cod_item_catalogo","type":null,"required":false,"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…"},{"name":"codigo_classe","type":null,"required":false,"description":"Código da classe do catálogo. Vem nulo em boa parte dos serviços — nesses casos use `codigo_grupo`."},{"name":"codigo_grupo","type":null,"required":false,"description":"Código do grupo do catálogo. Recorte por família quando o código exato do item ainda não é conhecido."},{"name":"codigo_uasg","type":null,"required":false,"description":"Código da UASG compradora (6 dígitos)."},{"name":"data_final_inclusao","type":"string","required":true,"description":"Data final de inclusão dos itens no PNCP (YYYY-MM-DD)."},{"name":"data_inicial_inclusao","type":"string","required":true,"description":"Data inicial de inclusão dos itens no PNCP (YYYY-MM-DD)."},{"name":"material_ou_servico","type":null,"required":false,"description":"'M' para material, 'S' para serviço."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"situacao_item","type":null,"required":false,"description":"Situação do item da compra. '2' = Homologado, '4' = Cancelado. Filtre por '2' antes de calcular qualquer estatística de preço."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."},{"name":"tem_resultado","type":null,"required":false,"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…"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":684},{"name":"compras_contratacoes_14133_itens_por_contratacao","title":null,"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`.","inputs":[{"name":"id_contratacao","type":"string","required":true,"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 (al…"},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."},{"name":"tipo_identificador","type":"string","required":false,"description":"Qual identificador está sendo passado em `id_contratacao`: 'idCompra' (padrão) ou 'numeroControlePNCPCompra'. O upstream rejeita qualquer outro valor com HTTP 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":271},{"name":"compras_contratacoes_14133_resultados_listar","title":null,"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.","inputs":[{"name":"cnpj_orgao","type":null,"required":false,"description":"CNPJ do órgão comprador (14 dígitos, com ou sem pontuação)."},{"name":"codigo_uasg","type":null,"required":false,"description":"Código da UASG compradora (6 dígitos)."},{"name":"data_final_resultado","type":"string","required":true,"description":"Data final do resultado/homologação (YYYY-MM-DD)."},{"name":"data_inicial_resultado","type":"string","required":true,"description":"Data inicial do resultado/homologação (YYYY-MM-DD)."},{"name":"ni_fornecedor","type":null,"required":false,"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."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"porte_fornecedor","type":null,"required":false,"description":"Código do porte do fornecedor (ex.: 1=ME, 2=EPP, 3=Demais). Preenchimento irregular na origem — trate ausência como desconhecido."},{"name":"situacao_resultado","type":null,"required":false,"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."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."},{"name":"valor_total_max","type":null,"required":false,"description":"Valor total homologado máximo (R$)."},{"name":"valor_total_min","type":null,"required":false,"description":"Valor total homologado mínimo (R$). Combinado com a janela de datas, monta fila de auditoria por materialidade."},{"name":"valor_unitario_max","type":null,"required":false,"description":"Valor unitário homologado máximo (R$)."},{"name":"valor_unitario_min","type":null,"required":false,"description":"Valor unitário homologado mínimo (R$)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":536},{"name":"compras_contratacoes_14133_resultados_por_contratacao","title":null,"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`.","inputs":[{"name":"id_contratacao","type":"string","required":true,"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 (al…"},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."},{"name":"tipo_identificador","type":"string","required":false,"description":"Qual identificador está sendo passado em `id_contratacao`: 'idCompra' (padrão) ou 'numeroControlePNCPCompra'. O upstream rejeita qualquer outro valor com HTTP 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":271},{"name":"compras_legado_licitacoes_listar","title":null,"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.","inputs":[{"name":"data_publicacao_final","type":"string","required":true,"description":"Data final de publicação (YYYY-MM-DD). Obrigatório no upstream."},{"name":"data_publicacao_inicial","type":"string","required":true,"description":"Data inicial de publicação (YYYY-MM-DD). Obrigatório no upstream."},{"name":"modalidade","type":null,"required":false,"description":"Código de modalidade SIASG (opcional)."},{"name":"numero_aviso","type":null,"required":false,"description":"Número do aviso (opcional)."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"pertence14133","type":null,"required":false,"description":"Filtrar somente processos vinculados à Lei 14.133."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":278},{"name":"compras_legado_licitacao_consultar","title":null,"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.","inputs":[{"name":"id_compra","type":"string","required":true,"description":"ID da compra no SIASG (string, retornado em `compras_legado_licitacoes_listar`)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":94},{"name":"compras_legado_itens_licitacao_listar","title":null,"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`.","inputs":[{"name":"cnpj_fornecedor","type":null,"required":false,"description":"CNPJ do fornecedor (opcional)."},{"name":"codigo_item_material","type":null,"required":false,"description":"Código CATMAT (opcional)."},{"name":"codigo_item_servico","type":null,"required":false,"description":"Código CATSER (opcional)."},{"name":"modalidade","type":"integer","required":true,"description":"Código de modalidade SIASG (obrigatório). Ex.: 5=Pregão, 6=Dispensa."},{"name":"numero_aviso","type":null,"required":false,"description":"Número do aviso (opcional)."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."},{"name":"uasg","type":null,"required":false,"description":"Código UASG (opcional)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":220},{"name":"compras_legado_pregoes_listar","title":null,"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.","inputs":[{"name":"ds_tipo_pregao_compra","type":null,"required":false,"description":"Tipo do pregão de compra (string upstream)."},{"name":"dt_data_edital_final","type":"string","required":true,"description":"Data final do edital (YYYY-MM-DD). Obrigatório."},{"name":"dt_data_edital_inicial","type":"string","required":true,"description":"Data inicial do edital (YYYY-MM-DD). Obrigatório."},{"name":"numero","type":null,"required":false,"description":"Número do pregão (opcional)."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"pertence14133","type":null,"required":false,"description":"Filtrar pregões vinculados à Lei 14.133."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":288},{"name":"compras_legado_compras_sem_licitacao","title":null,"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.","inputs":[{"name":"co_modalidade_licitacao","type":null,"required":false,"description":"Código da modalidade SIASG."},{"name":"co_orgao","type":null,"required":false,"description":"Código do órgão (opcional)."},{"name":"co_orgao_superior","type":null,"required":false,"description":"Código do órgão superior (opcional)."},{"name":"co_uasg","type":null,"required":false,"description":"Código UASG (opcional)."},{"name":"dt_ano_aviso","type":"integer","required":true,"description":"Ano do aviso (ex.: 2024). Obrigatório no upstream."},{"name":"nu_aviso_licitacao","type":null,"required":false,"description":"Número do aviso de licitação."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"pertence14133","type":null,"required":false,"description":"Vincula à Lei 14.133."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":238},{"name":"compras_legado_rdc_listar","title":null,"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.","inputs":[{"name":"data_publicacao_max","type":"string","required":true,"description":"Data MÁXIMA de publicação (YYYY-MM-DD). Obrigatório."},{"name":"data_publicacao_min","type":"string","required":true,"description":"Data MÍNIMA de publicação (YYYY-MM-DD). Obrigatório."},{"name":"modalidade","type":null,"required":false,"description":"Código de modalidade."},{"name":"orgao","type":null,"required":false,"description":"Código do órgão (opcional)."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."},{"name":"uasg","type":null,"required":false,"description":"Código UASG (opcional)."},{"name":"uf_uasg","type":null,"required":false,"description":"UF da UASG (sigla, ex.: 'DF')."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":240},{"name":"compras_legado_itens_pregao_listar","title":null,"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.","inputs":[{"name":"codigo_uasg","type":null,"required":false,"description":"Código da UASG que realizou o pregão (só na busca por período)."},{"name":"data_homologacao_final","type":null,"required":false,"description":"Data final de homologação dos itens (YYYY-MM-DD). Obrigatória quando `id_compra` não é informado."},{"name":"data_homologacao_inicial","type":null,"required":false,"description":"Data inicial de homologação dos itens (YYYY-MM-DD). Obrigatória quando `id_compra` não é informado."},{"name":"decreto_7174","type":null,"required":false,"description":"Filtra itens sujeitos ao Decreto 7.174/2010 (bens e serviços de informática)."},{"name":"id_compra","type":null,"required":false,"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…"},{"name":"id_compra_item","type":null,"required":false,"description":"Identificador de um item específico dentro do pregão."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":543},{"name":"compras_legado_itens_sem_licitacao_listar","title":null,"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.","inputs":[{"name":"ano_aviso","type":null,"required":false,"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_co…"},{"name":"codigo_conjunto_materiais","type":null,"required":false,"description":"Código do conjunto de materiais (CATMAT legado)."},{"name":"codigo_modalidade","type":null,"required":false,"description":"Código da modalidade legada (dispensa, inexigibilidade)."},{"name":"codigo_orgao","type":null,"required":false,"description":"Código do órgão contratante."},{"name":"codigo_servico","type":null,"required":false,"description":"Código do serviço (CATSER legado)."},{"name":"codigo_uasg","type":null,"required":false,"description":"Código da UASG contratante."},{"name":"cpf_cnpj_fornecedor","type":null,"required":false,"description":"CPF ou CNPJ do fornecedor vencedor (só dígitos)."},{"name":"id_compra","type":null,"required":false,"description":"Identificador da compra, para trazer só os itens dela."},{"name":"id_compra_item","type":null,"required":false,"description":"Identificador de um item específico dentro da compra."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":446},{"name":"compras_contratos_listar","title":null,"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.","inputs":[{"name":"codigo_modalidade_compra","type":null,"required":false,"description":"Modalidade da compra que originou o contrato."},{"name":"codigo_orgao","type":"integer","required":true,"description":"Código do órgão (obrigatório no upstream). Use `compras_orgao_listar` para descobrir."},{"name":"codigo_unidade_gestora","type":null,"required":false,"description":"Filtra pela UASG gestora do contrato."},{"name":"data_vigencia_inicial_max","type":"string","required":true,"description":"Data MÁXIMA de início de vigência (YYYY-MM-DD)."},{"name":"data_vigencia_inicial_min","type":"string","required":true,"description":"Data MÍNIMA de início de vigência do contrato (YYYY-MM-DD). Janela max ≤ 365 dias até data_vigencia_inicial_max."},{"name":"ni_fornecedor","type":null,"required":false,"description":"CPF/CNPJ do fornecedor (apenas dígitos). Opcional."},{"name":"numero_contrato","type":null,"required":false,"description":"Filtra por número do contrato (ex.: '00031/2015')."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":321},{"name":"compras_contratos_consultar","title":null,"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.","inputs":[{"name":"codigo","type":"string","required":true,"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 co…"},{"name":"tipo","type":"string","required":false,"description":"Como interpretar `codigo`: 'idCompra' (id interno da compra) ou 'numeroControlePncpContrato' (identificador PNCP)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":164},{"name":"compras_contratos_listar_por_fim_vigencia","title":null,"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.","inputs":[{"name":"codigo_orgao","type":"integer","required":true,"description":"Código do órgão (obrigatório)."},{"name":"codigo_unidade_gestora","type":null,"required":false,"description":"UASG gestora (opcional)."},{"name":"data_vigencia_final_max","type":"string","required":true,"description":"Data MÁXIMA de fim de vigência (YYYY-MM-DD)."},{"name":"data_vigencia_final_min","type":"string","required":true,"description":"Data MÍNIMA de fim de vigência (YYYY-MM-DD). Janela ≤ 365 dias."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":208},{"name":"compras_contratos_itens_listar","title":null,"description":"Lista itens de contratos (endpoint 2).\n\nUpstream exige `codigoOrgao + dataVigenciaInicialMin/Max`. Cache 15 min.","inputs":[{"name":"codigo_item","type":null,"required":false,"description":"Código CATMAT ou CATSER (opcional)."},{"name":"codigo_orgao","type":"integer","required":true,"description":"Código do órgão (obrigatório)."},{"name":"data_vigencia_inicial_max","type":"string","required":true,"description":"Data máxima de início de vigência (YYYY-MM-DD)."},{"name":"data_vigencia_inicial_min","type":"string","required":true,"description":"Data mínima de início de vigência (YYYY-MM-DD). Janela ≤ 365 dias."},{"name":"ni_fornecedor","type":null,"required":false,"description":"CPF/CNPJ do fornecedor."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."},{"name":"tipo_item","type":null,"required":false,"description":"Tipo do item: 'M' (material) ou 'S' (serviço)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":211},{"name":"compras_contratos_item_consultar","title":null,"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.","inputs":[{"name":"codigo","type":"string","required":true,"description":"Identificador do contrato: o `idCompra` numérico ou o número de controle PNCP do contrato, conforme `tipo_identificador`."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."},{"name":"tipo_identificador","type":"string","required":false,"description":"Qual identificador está em `codigo`: 'idCompra' (padrão) ou 'numeroControlePncpContrato'. Outro valor devolve HTTP 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":325},{"name":"compras_contrato_comprasnet_consultar","title":null,"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.","inputs":[{"name":"id_contrato","type":"integer","required":true,"description":"ID interno do contrato no Comprasnet (pode ser diferente do id no Dados Abertos). Obtenha em `compras_contrato_comprasnet_por_uasg`."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":103},{"name":"compras_contrato_comprasnet_por_uasg","title":null,"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.","inputs":[{"name":"ativos","type":"boolean","required":false,"description":"Se True (padrão), lista apenas contratos ativos. Set False para incluir inativos via /api/contrato/inativo/ug/{uasg}."},{"name":"codigo_uasg","type":"integer","required":true,"description":"Código UASG (5-6 dígitos)."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":214},{"name":"compras_contrato_historico_aditivos","title":null,"description":"Lista aditivos do contrato (/api/contrato/{id}/historico).\n\nPaginação client-side (upstream não pagina). Cache 15 min do payload completo.","inputs":[{"name":"id_contrato","type":"integer","required":true,"description":"ID do contrato no Comprasnet."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":108},{"name":"compras_contrato_garantias","title":null,"description":"Lista garantias contratuais (/api/contrato/{id}/garantias).\n\nPaginação client-side. Cache 15 min.","inputs":[{"name":"id_contrato","type":"integer","required":true,"description":"ID do contrato no Comprasnet."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":100},{"name":"compras_contrato_faturas","title":null,"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.).","inputs":[{"name":"id_contrato","type":"integer","required":true,"description":"ID do contrato no Comprasnet."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":155},{"name":"compras_contrato_ocorrencias","title":null,"description":"Lista ocorrências/penalidades (/api/contrato/{id}/ocorrencias).\n\nIndicador-chave da confiabilidade do fornecedor. Paginação client-side.\nCache 15 min.","inputs":[{"name":"id_contrato","type":"integer","required":true,"description":"ID do contrato no Comprasnet."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":110},{"name":"compras_contrato_responsaveis","title":null,"description":"Lista fiscais/gestores (/api/contrato/{id}/responsaveis).\n\nCPFs mascarados por LGPD (`123.***.***-45`). Paginação client-side. Cache 15 min.","inputs":[{"name":"id_contrato","type":"integer","required":true,"description":"ID do contrato no Comprasnet."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":116},{"name":"compras_contrato_empenhos","title":null,"description":"Lista empenhos do contrato (/api/contrato/{id}/empenhos).\n\nPaginação client-side. Cache 15 min.","inputs":[{"name":"id_contrato","type":"integer","required":true,"description":"ID do contrato no Comprasnet."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":99},{"name":"compras_contrato_publicacoes","title":null,"description":"Lista publicações DOU (/api/contrato/{id}/publicacoes).\n\nPaginação client-side. Cache 15 min.","inputs":[{"name":"id_contrato","type":"integer","required":true,"description":"ID do contrato no Comprasnet."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":97},{"name":"compras_contrato_cronograma","title":null,"description":"Lista cronograma financeiro (/api/contrato/{id}/cronograma).\n\nPaginação client-side — alguns contratos têm 200+ entradas mensais.\nCache 15 min.","inputs":[{"name":"id_contrato","type":"integer","required":true,"description":"ID do contrato no Comprasnet."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":107},{"name":"compras_listar_prompts","title":null,"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    }","inputs":[],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":172},{"name":"compras_obter_prompt","title":null,"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.","inputs":[{"name":"argumentos","type":null,"required":false,"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}."},{"name":"nome","type":"string","required":true,"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`."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":267},{"name":"compras_listar_resources","title":null,"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    }","inputs":[],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":151},{"name":"compras_obter_resource","title":null,"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.","inputs":[{"name":"uri","type":"string","required":true,"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`."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":158},{"name":"compras_fornecedor_cnpj_receita","title":null,"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.","inputs":[{"name":"cnpj","type":"string","required":true,"description":"CNPJ a consultar (14 dígitos, com ou sem pontuação). Usa BrasilAPI por padrão; trocável via env `CNPJ_PROVIDER=minhareceita`."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":232},{"name":"compras_fornecedor_consultar","title":null,"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.","inputs":[{"name":"cnpj_cpf","type":"string","required":true,"description":"CNPJ (14 dígitos) ou CPF (11 dígitos) do fornecedor, com ou sem pontuação."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":92},{"name":"compras_fornecedor_listar","title":null,"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.","inputs":[{"name":"ativo","type":"boolean","required":false,"description":"True (default) para listar apenas ativos, False para apenas inativos."},{"name":"cnpj","type":null,"required":false,"description":"Filtrar por CNPJ (14 dígitos)."},{"name":"codigo_cnae","type":null,"required":false,"description":"Código CNAE para filtrar por atividade."},{"name":"cpf","type":null,"required":false,"description":"Filtrar por CPF (11 dígitos)."},{"name":"natureza_juridica","type":null,"required":false,"description":"Código da natureza jurídica."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"porte_empresa","type":null,"required":false,"description":"Código de porte da empresa (1=ME, 2=EPP, 3=Demais). Consulte os códigos no manual do Compras.gov.br."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":233},{"name":"compras_fornecedor_impedimentos_por_itens","title":null,"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.","inputs":[{"name":"codigos_catmat","type":null,"required":false,"description":"Lista de códigos CATMAT (materiais) a verificar. Use junto com codigos_catser ou separadamente."},{"name":"codigos_catser","type":null,"required":false,"description":"Lista de códigos CATSER (serviços)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":139},{"name":"compras_fornecedor_contratos_por_item","title":null,"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.","inputs":[{"name":"codigos_catmat","type":null,"required":false,"description":"Códigos CATMAT a buscar."},{"name":"codigos_catser","type":null,"required":false,"description":"Códigos CATSER a buscar."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":108},{"name":"compras_indicadores_consolidados","title":null,"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.","inputs":[{"name":"pagina","type":"integer","required":false,"description":"Página (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Registros por página (default 50, máximo 500)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":150},{"name":"compras_indicadores_por_periodo","title":null,"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.","inputs":[{"name":"ano","type":"integer","required":true,"description":"Ano de referência dos indicadores (4 dígitos)."},{"name":"mes","type":null,"required":false,"description":"Mês (1-12). Se omitido, agrega o ano inteiro. Se informado, filtra apenas o mês especificado."},{"name":"pagina","type":"integer","required":false,"description":"Página (1-based)."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Registros por página."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":159},{"name":"compras_uasg_listar","title":null,"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.","inputs":[{"name":"ativo","type":null,"required":false,"description":"True para apenas UASGs ativas, False para inativas, None para ambas."},{"name":"codigo_orgao","type":null,"required":false,"description":"Filtra UASGs subordinadas a este código de órgão."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":579},{"name":"compras_uasg_consultar","title":null,"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.","inputs":[{"name":"codigo_uasg","type":"integer","required":true,"description":"Código numérico da UASG."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":166},{"name":"compras_orgao_listar","title":null,"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.","inputs":[{"name":"esfera","type":null,"required":false,"description":"Esfera administrativa: 'F' (federal), 'E' (estadual), 'M' (municipal). Dados Abertos cobre majoritariamente federal."},{"name":"nome","type":null,"required":false,"description":"Filtro textual pelo nome do órgão (match parcial)."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"poder","type":null,"required":false,"description":"Poder: 'E' (Executivo), 'L' (Legislativo), 'J' (Judiciário)."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":413},{"name":"compras_orgao_consultar","title":null,"description":"Consulta um órgão específico pelo código.\n\nDevolve nome, sigla, CNPJ, esfera, poder e quantitativos.\nCache 24h.","inputs":[{"name":"codigo_orgao","type":"integer","required":true,"description":"Código numérico do órgão (4-6 dígitos)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":61},{"name":"compras_pncp_orgao_unidades","title":null,"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).","inputs":[{"name":"cnpj","type":"string","required":true,"description":"CNPJ do órgão (14 dígitos, com ou sem pontuação). Exemplo: 00394460000141 (Presidência da República)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":192},{"name":"compras_uasg_buscar","title":null,"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.","inputs":[{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."},{"name":"termo","type":"string","required":true,"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 NACIONA…"}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":438},{"name":"compras_pesquisar_preco_material","title":null,"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.","inputs":[{"name":"codigo_item_catalogo","type":"integer","required":true,"description":"Código CATMAT do material. Inteiro 4-8 dígitos. Ex.: 460789."},{"name":"codigo_municipio","type":null,"required":false,"description":"Código IBGE do município (7 dígitos). Filtro mais fino que UF."},{"name":"codigo_uasg","type":null,"required":false,"description":"Código da UASG compradora (filtro mais específico ainda)."},{"name":"data_fim","type":null,"required":false,"description":"Data final da compra (YYYY-MM-DD). Quando omitida, a API usa a data atual."},{"name":"data_inicio","type":null,"required":false,"description":"Data inicial da compra (YYYY-MM-DD). Quando omitida, a API usa o início do ano corrente."},{"name":"pagina","type":"integer","required":false,"description":"Página (1-based)."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Registros por página."},{"name":"uf","type":null,"required":false,"description":"Sigla da UF (ex.: 'DF'). Filtra compras realizadas pelo órgão da UF."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":545},{"name":"compras_detalhar_preco_material","title":null,"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.","inputs":[{"name":"codigo_item_catalogo","type":"integer","required":true,"description":"Código CATMAT do material. Inteiro 4-8 dígitos. Ex.: 460789."},{"name":"data_fim","type":null,"required":false,"description":"Data final da compra (YYYY-MM-DD). Quando omitida, a API usa a data atual."},{"name":"data_inicio","type":null,"required":false,"description":"Data inicial da compra (YYYY-MM-DD). Quando omitida, a API usa o início do ano corrente."},{"name":"pagina","type":"integer","required":false,"description":"Página (1-based)."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Registros por página."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":444},{"name":"compras_pesquisar_preco_servico","title":null,"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'.","inputs":[{"name":"codigo_item_catalogo","type":"integer","required":true,"description":"Código CATSER do serviço. Inteiro 4-6 dígitos. Ex.: 27332."},{"name":"codigo_municipio","type":null,"required":false,"description":"Código IBGE do município."},{"name":"codigo_uasg","type":null,"required":false,"description":"Código UASG."},{"name":"data_fim","type":null,"required":false,"description":"Data final (YYYY-MM-DD)."},{"name":"data_inicio","type":null,"required":false,"description":"Data inicial (YYYY-MM-DD)."},{"name":"pagina","type":"integer","required":false,"description":"Página (1-based)."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Registros por página."},{"name":"uf","type":null,"required":false,"description":"Sigla da UF."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":204},{"name":"compras_detalhar_preco_servico","title":null,"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.","inputs":[{"name":"codigo_item_catalogo","type":"integer","required":true,"description":"Código CATSER do serviço. Inteiro 4-6 dígitos. Ex.: 27332."},{"name":"data_fim","type":null,"required":false,"description":"Data final (YYYY-MM-DD)."},{"name":"data_inicio","type":null,"required":false,"description":"Data inicial (YYYY-MM-DD)."},{"name":"pagina","type":"integer","required":false,"description":"Página (1-based)."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Registros por página."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":244},{"name":"compras_pgc_listar","title":null,"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.","inputs":[{"name":"ano","type":"integer","required":true,"description":"Ano do PGC. Os PGCs do governo federal começam a aparecer a partir de 2020."},{"name":"codigo_orgao","type":null,"required":false,"description":"Código do órgão (filtra os PGCs desse órgão)."},{"name":"codigo_uasg","type":null,"required":false,"description":"Código UASG (filtro mais específico que codigo_orgao)."},{"name":"pagina","type":"integer","required":false,"description":"Página (1-based)."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Registros por página."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":174},{"name":"compras_pgc_por_catalogo","title":null,"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.","inputs":[{"name":"ano","type":"integer","required":true,"description":"Ano do PCA/PGC."},{"name":"codigo_item","type":"integer","required":true,"description":"Código do item no catálogo (CATMAT se tipo='M', CATSER se tipo='S')."},{"name":"pagina","type":"integer","required":false,"description":"Página (1-based)."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Registros por página."},{"name":"tipo","type":"string","required":true,"description":"'M' para CATMAT (material) ou 'S' para CATSER (serviço)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":293},{"name":"compras_pgc_agregacao","title":null,"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.","inputs":[{"name":"ano","type":"integer","required":true,"description":"Ano do PGC."},{"name":"codigo_orgao","type":"integer","required":true,"description":"Código do órgão (obrigatório nesta consulta — é a chave da agregação)."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":162},{"name":"compras_pgc_listar_csv","title":null,"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.","inputs":[{"name":"ano","type":"integer","required":true,"description":"Ano do PGC. Os PGCs do governo federal começam a aparecer a partir de 2020."},{"name":"codigo_orgao","type":null,"required":false,"description":"Código do órgão (filtra os PGCs desse órgão)."},{"name":"codigo_uasg","type":null,"required":false,"description":"Código UASG (filtro mais específico que codigo_orgao)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":146},{"name":"compras_pncp_pca_listar","title":null,"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.","inputs":[{"name":"ano","type":"integer","required":true,"description":"Ano do PCA (Lei 14.133)."},{"name":"cnpj_orgao","type":null,"required":false,"description":"CNPJ do órgão (filtra PCAs desse órgão; 14 dígitos)."},{"name":"codigo_classificacao_superior","type":"integer","required":true,"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 `compr…"},{"name":"pagina","type":"integer","required":false,"description":"Página (1-based)."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Registros por página."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":221},{"name":"compras_pncp_pca_atualizacao","title":null,"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.","inputs":[{"name":"data_final","type":"string","required":true,"description":"Data final do período (YYYY-MM-DD). Janela máxima ~30 dias."},{"name":"data_inicial","type":"string","required":true,"description":"Data inicial do período de atualização (YYYY-MM-DD)."},{"name":"pagina","type":"integer","required":false,"description":"Página (1-based)."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Registros por página."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":127},{"name":"compras_pncp_pca_por_usuario","title":null,"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.","inputs":[{"name":"ano","type":"integer","required":true,"description":"Ano do PCA."},{"name":"id_usuario","type":"integer","required":true,"description":"ID interno de usuário/sistema integrador do PNCP. Obtido na documentação interna do órgão; raramente usado por analistas."},{"name":"pagina","type":"integer","required":false,"description":"Página (1-based)."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Registros por página."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":140},{"name":"compras_pncp_pca_por_classificacao_superior","title":null,"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.","inputs":[{"name":"ano","type":"integer","required":true,"description":"Ano do PCA."},{"name":"codigo_classificacao_superior","type":"integer","required":true,"description":"Código de classificação superior do item (categoria pai). Veja a tabela de classificação no manual do PNCP."},{"name":"pagina","type":"integer","required":false,"description":"Página (1-based)."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Registros por página."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":141},{"name":"compras_pncp_contratacoes_publicacao","title":null,"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.","inputs":[{"name":"cnpj_orgao","type":null,"required":false,"description":"CNPJ do órgão (14 dígitos)."},{"name":"codigo_modalidade","type":"integer","required":true,"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."},{"name":"codigo_municipio_ibge","type":null,"required":false,"description":"Código IBGE do município (7 dígitos)."},{"name":"data_final","type":"string","required":true,"description":"Data final de publicação (YYYY-MM-DD)."},{"name":"data_inicial","type":"string","required":true,"description":"Data inicial de publicação (YYYY-MM-DD)."},{"name":"esfera","type":null,"required":false,"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` c…"},{"name":"pagina","type":"integer","required":false,"description":"Página (1-based)."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Registros por página (PNCP mínimo 10)."},{"name":"uf","type":null,"required":false,"description":"Sigla da UF."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":380},{"name":"compras_pncp_contratacoes_proposta","title":null,"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.","inputs":[{"name":"codigo_modalidade","type":"integer","required":true,"description":"Código da modalidade (ver PNCPListarContratacoesInput)."},{"name":"data_final","type":"string","required":true,"description":"Data limite para propostas (YYYY-MM-DD)."},{"name":"esfera","type":null,"required":false,"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` c…"},{"name":"pagina","type":"integer","required":false,"description":"Página (1-based)."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Registros por página."},{"name":"uf","type":null,"required":false,"description":"Sigla da UF."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":217},{"name":"compras_pncp_contratacoes_atualizacao","title":null,"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.","inputs":[{"name":"codigo_modalidade","type":"integer","required":true,"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."},{"name":"data_final","type":"string","required":true,"description":"Data final de atualização (YYYY-MM-DD)."},{"name":"data_inicial","type":"string","required":true,"description":"Data inicial de atualização (YYYY-MM-DD)."},{"name":"esfera","type":null,"required":false,"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` c…"},{"name":"pagina","type":"integer","required":false,"description":"Página (1-based)."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Registros por página (PNCP mínimo 10)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":282},{"name":"compras_pncp_contratacao_por_orgao","title":null,"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.","inputs":[{"name":"ano","type":"integer","required":true,"description":"Ano da contratação (4 dígitos)."},{"name":"cnpj","type":"string","required":true,"description":"CNPJ do órgão (14 dígitos, com ou sem pontuação)."},{"name":"sequencial","type":"integer","required":true,"description":"Sequencial da contratação dentro do órgão e ano."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":120},{"name":"compras_pncp_contratacao_itens","title":null,"description":"Lista itens de uma contratação no PNCP.\n\nEndpoint `/v1/orgaos/{cnpj}/compras/{ano}/{sequencial}/itens`.\nCache 15 min.","inputs":[{"name":"ano","type":"integer","required":true,"description":"Ano da contratação."},{"name":"cnpj","type":"string","required":true,"description":"CNPJ do órgão."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"sequencial","type":"integer","required":true,"description":"Sequencial da contratação."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":129},{"name":"compras_pncp_contratacao_item_resultados","title":null,"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.","inputs":[{"name":"ano","type":"integer","required":true,"description":"Ano da contratação."},{"name":"cnpj","type":"string","required":true,"description":"CNPJ do órgão."},{"name":"numero_item","type":"integer","required":true,"description":"Número do item dentro da contratação."},{"name":"sequencial","type":"integer","required":true,"description":"Sequencial."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":111},{"name":"compras_pncp_contratos_listar","title":null,"description":"Lista contratos publicados no PNCP no período.\n\nEndpoint `/v1/contratos`. Cache 15 min.","inputs":[{"name":"cnpj_orgao","type":null,"required":false,"description":"CNPJ do órgão (14 dígitos)."},{"name":"data_final","type":"string","required":true,"description":"Data final (YYYY-MM-DD)."},{"name":"data_inicial","type":"string","required":true,"description":"Data inicial de publicação do contrato (YYYY-MM-DD)."},{"name":"pagina","type":"integer","required":false,"description":"Página de resultados (1-based). Padrão 1."},{"name":"tamanho_pagina","type":"integer","required":false,"description":"Quantidade de registros por página. Padrão 50, máximo 500."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":131},{"name":"compras_pncp_contrato_por_orgao","title":null,"description":"Consulta um contrato específico no PNCP.\n\nEndpoint `/v1/orgaos/{cnpj}/contratos/{ano}/{sequencial}`. Cache 15 min.","inputs":[{"name":"ano","type":"integer","required":true,"description":"Ano do contrato."},{"name":"cnpj","type":"string","required":true,"description":"CNPJ do órgão."},{"name":"sequencial","type":"integer","required":true,"description":"Sequencial do contrato."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":82},{"name":"compras_pncp_modalidades","title":null,"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.","inputs":[],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":169},{"name":"compras_pncp_contratacao_arquivos","title":null,"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.","inputs":[{"name":"ano","type":"integer","required":true,"description":"Ano da contratação (4 dígitos)."},{"name":"cnpj","type":"string","required":true,"description":"CNPJ do órgão (14 dígitos, com ou sem pontuação)."},{"name":"sequencial","type":"integer","required":true,"description":"Sequencial da contratação, SEM zeros à esquerda (ex.: 2101, não 002101)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":273},{"name":"compras_pncp_ata_arquivos","title":null,"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.","inputs":[{"name":"ano_compra","type":"integer","required":true,"description":"Ano da COMPRA que originou a ata."},{"name":"cnpj","type":"string","required":true,"description":"CNPJ do órgão (14 dígitos, com ou sem pontuação)."},{"name":"sequencial_ata","type":"integer","required":true,"description":"Sequencial da ATA dentro da compra (1-based). É o sufixo numérico de `numeroControlePncpAta` (ex.: `...-000004/2024` → 4)."},{"name":"sequencial_compra","type":"integer","required":true,"description":"Sequencial da compra, SEM zeros à esquerda."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":256},{"name":"compras_sancao_ceis","title":null,"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.","inputs":[{"name":"cnpj","type":null,"required":false,"description":"CNPJ do fornecedor (14 dígitos, com ou sem pontuação)."},{"name":"nome","type":null,"required":false,"description":"Nome (razão social/fantasia) do sancionado para busca textual."},{"name":"orgao_sancionador","type":null,"required":false,"description":"Sigla do órgão sancionador (ex.: 'TCU')."},{"name":"pagina","type":"integer","required":false,"description":"Página (1-based)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":147},{"name":"compras_sancao_cnep","title":null,"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.","inputs":[{"name":"cnpj","type":null,"required":false,"description":"CNPJ do fornecedor (14 dígitos, com ou sem pontuação)."},{"name":"nome","type":null,"required":false,"description":"Nome do sancionado."},{"name":"pagina","type":"integer","required":false,"description":"Página (1-based)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":117},{"name":"compras_sancao_ceaf","title":null,"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.","inputs":[{"name":"cpf","type":null,"required":false,"description":"CPF do servidor (11 dígitos, com ou sem pontuação)."},{"name":"nome","type":null,"required":false,"description":"Nome do servidor expulso (busca textual)."},{"name":"pagina","type":"integer","required":false,"description":"Página (1-based)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":123},{"name":"compras_sancao_cepim","title":null,"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.","inputs":[{"name":"cnpj","type":null,"required":false,"description":"CNPJ da entidade (14 dígitos)."},{"name":"nome","type":null,"required":false,"description":"Nome da entidade (busca textual)."},{"name":"pagina","type":"integer","required":false,"description":"Página (1-based)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":104},{"name":"compras_sancao_acordos_leniencia","title":null,"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.","inputs":[{"name":"cnpj","type":null,"required":false,"description":"CNPJ do sancionado (14 dígitos)."},{"name":"pagina","type":"integer","required":false,"description":"Página (1-based)."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":103},{"name":"compras_versao","title":null,"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).","inputs":[],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":82},{"name":"compras_healthcheck","title":null,"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.","inputs":[{"name":"modulo","type":null,"required":false,"description":"Restringe o probe a um módulo funcional: 'pesquisa_preco', 'catalogo', 'organizacoes', 'atas', 'contratacoes', 'contratos', 'fornecedores', 'indicadores', 'legado', 'planejamento', 'pncp', 'sancoes',…"},{"name":"profundidade","type":"string","required":false,"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."}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":581}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T08:02:29.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"verified","label":"Verified","reason":"verified","reasonLabel":"Verified","discovery":"attestation_endpoint","discoveryLabel":"Registry attestation endpoint","sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[{"hook":"build_backend","tier":"allowlisted"}],"installScriptsTotal":null,"vulnerabilities":[{"id":"GHSA-m8x7-r2rg-vh5g","cve":"CVE-2025-64340","severity":"medium","fixAvailable":true},{"id":"GHSA-rww4-4w9c-7733","cve":"CVE-2026-27124","severity":"high","fixAvailable":true},{"id":"GHSA-vv7q-7jx5-f767","cve":"CVE-2026-32871","severity":"critical","fixAvailable":true},{"id":"PYSEC-2026-2475","cve":"CVE-2025-64340","severity":"medium","fixAvailable":true},{"id":"PYSEC-2026-2476","cve":"CVE-2026-27124","severity":"none","fixAvailable":true},{"id":"PYSEC-2026-338","cve":"CVE-2026-32871","severity":"critical","fixAvailable":true}],"vulnerabilitiesTotal":6,"dependencies":{"nodes":74,"partial":false,"deprecated":null,"stale":5,"noRepo":3}},"mismatches":[],"changelog":{"trackingSince":"2026-09-07","recent":[{"id":"chg_01a1aabb-145f-78bd-86a8-bd1e42cf0217","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp#chg-chg_01a1aabb-145f-78bd-86a8-bd1e42cf0217"},{"id":"chg_01a1aabb-1460-7f0c-97fc-3f1c2b50c2a3","kind":"check.verdict","summary":"Stability (pass → 0.67)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp#chg-chg_01a1aabb-1460-7f0c-97fc-3f1c2b50c2a3"},{"id":"chg_01a1a617-c970-7ccf-890e-d11bb21553d0","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp#chg-chg_01a1a617-c970-7ccf-890e-d11bb21553d0"},{"id":"chg_01a1a16d-a597-7ada-b5cb-9892d7ac02bc","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp#chg-chg_01a1a16d-a597-7ada-b5cb-9892d7ac02bc"},{"id":"chg_01a19bcb-19e7-73b9-b427-503de0f55e42","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp#chg-chg_01a19bcb-19e7-73b9-b427-503de0f55e42"},{"id":"chg_01a19171-1c5d-740a-a9f4-37774db9d0bf","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp#chg-chg_01a19171-1c5d-740a-a9f4-37774db9d0bf"},{"id":"chg_01a18c4a-efad-7237-b29e-5619671cca86","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp#chg-chg_01a18c4a-efad-7237-b29e-5619671cca86"},{"id":"chg_01a18c4a-efaf-73cf-bd27-008ddcc69102","kind":"check.verdict","summary":"Stability (0.97 → pass)","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp#chg-chg_01a18c4a-efaf-73cf-bd27-008ddcc69102"},{"id":"chg_01a1867c-22e6-79f9-a7d9-a6ac672f6743","kind":"check.verdict","summary":"Stability (pass → 0.97)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp#chg-chg_01a1867c-22e6-79f9-a7d9-a6ac672f6743"},{"id":"chg_01a16792-13e5-72fb-a394-5fd5154c68ab","kind":"check.verdict","summary":"Stability (0.97 → pass)","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-23","url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp#chg-chg_01a16792-13e5-72fb-a394-5fd5154c68ab"},{"id":"chg_01a1626c-6391-7913-bf6b-340b1e374500","kind":"check.verdict","summary":"Stability (pass → 0.97)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp#chg-chg_01a1626c-6391-7913-bf6b-340b1e374500"},{"id":"chg_01a1469c-b92d-7832-8acb-a140afa92ee2","kind":"check.reverified","summary":"Stability (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-16","url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp#chg-chg_01a1469c-b92d-7832-8acb-a140afa92ee2"},{"id":"chg_01a1469c-b92f-74d6-a921-af2062cc2e99","kind":"check.reverified","summary":"MCP protocol (unverified → pass)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-16","url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp#chg-chg_01a1469c-b92f-74d6-a921-af2062cc2e99"},{"id":"chg_01a1469c-b92e-745c-9185-624edfc2df10","kind":"check.reverified","summary":"Tool coverage (unverified → 100)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-16","url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp#chg-chg_01a1469c-b92e-745c-9185-624edfc2df10"},{"id":"chg_01a1469c-b92f-7d8c-a5d6-925bbad6eed5","kind":"check.reverified","summary":"Schema quality (unverified → 100)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-16","url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp#chg-chg_01a1469c-b92f-7d8c-a5d6-925bbad6eed5"},{"id":"chg_01a1469c-b92a-7d16-912e-bd7bfb30b7a3","kind":"check.reverified","summary":"Injection markers (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-16","url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp#chg-chg_01a1469c-b92a-7d16-912e-bd7bfb30b7a3"},{"id":"chg_01a13184-9f13-751f-b8e7-08c546970bd1","kind":"check.unverifiable","summary":"Tool coverage (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-12","url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp#chg-chg_01a13184-9f13-751f-b8e7-08c546970bd1"},{"id":"chg_01a13184-9f13-79e4-a638-a75c69194407","kind":"check.unverifiable","summary":"Capabilities (pass → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-12","url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp#chg-chg_01a13184-9f13-79e4-a638-a75c69194407"},{"id":"chg_01a13184-9f14-74ae-8e1c-16bcbffd5508","kind":"check.verdict","summary":"Dependency health (partial → 0.97)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-12","url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp#chg-chg_01a13184-9f14-74ae-8e1c-16bcbffd5508"},{"id":"chg_01a13184-9f12-7045-b345-109cb69ad582","kind":"check.unverifiable","summary":"Tool safety (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-12","url":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp#chg-chg_01a13184-9f12-7045-b345-109cb69ad582"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp/changelog.json"},"links":{"html":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp","markdown":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp.md","changelogJson":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp/changelog.json","changelogRss":"https://verifymcp.io/servers/opedrosoares-mcp-compras/compras-mcp.xml","external":[{"label":"PyPI project","href":"https://pypi.org/project/compras-mcp/"},{"label":"Socket report","href":"https://socket.dev/pypi/package/compras-mcp"}]}}