PNCP
Server Details
Search Brazilian government tenders and public procurement (PNCP): find notices and auctions by keyw
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- mcp-dir/pncp-mcp
- GitHub Stars
- 0
TDQS
Scored across 19 tools
The pncp_* tools are mostly differentiated by data type, but there is real overlap: pncp_buscar, pncp_listar, and pncp_oportunidades all search licitações, while pncp_detalhe and pncp_processo both return full details and pncp_resultado overlaps with pncp_detalhe(resultado=true). Detailed descriptions help, but an agent could easily pick the wrong search or detail tool.
Naming is inconsistent: English platform tools (authenticate, connect, marketplace, report_bug, show_version, toolkit_info) sit alongside Portuguese pncp_* names, with some verbs (buscar, listar) and mostly nouns (atas, contratos, detalhe, processo, texto). There is no single predictable verb_noun or resource_action convention.
19 tools is in the heavy range and includes 6 generic platform/account tools that are unrelated to the PNCP procurement domain. The 13 pncp_* tools are defensible for a broad read-only procurement API, but several overlap enough that the count feels slightly bloated rather than tightly scoped.
The PNCP side covers the core read-only procurement lifecycle well: keyword search, value-ranked listing, opportunities, full detail, edital text, document downloads, winners, contracts, atas, historical data, PCA, and buyer organs. Minor gaps exist, such as losing bids/lances being explicitly unavailable and the marketplace features being bundled into one overloaded tool instead of separate ones.
Available Tools
19 toolsauthenticateAIdempotentInspect
MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header Authorization: Bearer <token> for a permanent, non-expiring connection. Or paste it here for a session-only login: call with { token: "" } after the user pastes, or with no args to get the link.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavior beyond the annotations: config header yields a permanent connection, while passing a token yields a session-only login, and no args returns a link. It does not fully spell out side effects or success/failure return values, but annotations already cover idempotency and non-destructiveness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded, with no fluff, but the long single sentence with parenthetical clauses and multiple alternatives could be structured into clearer separate instructions. Still, every part adds necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter auth tool with no output schema, it covers the no-arg return (the link), the token-paste path, and the persistent-config alternative. It doesn't state the response on a token success/failure, but the invocation guidance is sufficient for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description carries the full burden for the optional `token` parameter. It explains that token is a JWT/access token pasted by the user and how to pass it, compensating well for the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as MCP.AI authentication for IDE agents, with a concrete browser-login + access-token flow and two invocation paths (no args for a link, token for login). This specific verb+resource is unambiguous and easily distinguished from the unrelated calculo_* sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly differentiates the persistent config-header approach ('best... permanent, non-expiring') from the session-only paste/login path, and states exactly when to call with no args versus with { token }. This gives the agent clear selection criteria for both setup and invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connectARead-onlyIdempotentInspect
Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns connect_url for the toolkit and per-install URLs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this is read-only, idempotent, and non-destructive. The description adds useful behavioral detail beyond that by specifying the two main response states: authenticated:true with empty pending[] when all providers are connected, and connect_url plus per-install URLs when credentials are missing. This helps an agent predict what to expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loads the core purpose, and then adds only the essential conditional details. Every sentence contributes meaningful information, and there is no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only status tool with no output schema, the description is complete enough. It tells the agent what information will be returned, what the success condition looks like, and what happens when credentials are missing. The low complexity means no additional guidance is required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description does not need to explain any input semantics. The baseline of 4 applies because there is no parameter burden at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: returning connection status and URLs. It distinguishes connect from its sibling authenticate by framing it as a status/read operation rather than an action, and the conditional output descriptions reinforce this.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear that this is the tool to call when checking connection state or getting URLs. It does not explicitly mention alternatives like authenticate, but the context strongly implies connect is for status checking rather than initiating authentication, so usage is clear without being fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marketplaceAInspect
The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. Covers capability requests like "find an MCP that does X", "consulta um CPF", "is there a tool for Y". Core flow: action=search discovers MCPs by intent → describe returns one MCP's full profile (every tool with its id + params, pricing, auth) so you pick the right tool_id → invoke RUNS that tool. KEY: invoke works even when the MCP is NOT installed — it runs the tool pontualmente (one-off), without adding the MCP to the toolkit and without bloating the tool list. If the MCP needs a credential/login, invoke returns a connect link; if it is paid and the wallet is empty, invoke returns a checkout/top-up link (the user opens it, then you retry). Use install only to make an MCP PERMANENT in the active toolkit (its tools then show up natively in future sessions); prefer invoke for a single/occasional use. list_tools lists what is callable right now. subscribe/cancel handle per-MCP billing; report_bug sends feedback; request_mcp asks us to build a NEW MCP when nothing fits. Search/describe flag installed_in_toolkit vs installed_in_workspace. Writes (install/uninstall/subscribe/cancel and the one-off install behind invoke) require workspace owner/admin. It also carries the mcp.ai PROMPT LIBRARY, which is about ready-made prompt TEXT rather than MCPs: search_prompts finds one, get_prompt returns its full text with {{variables}} filled, and publish_prompt saves a prompt and returns a shareable mcp.ai/p/ link that opens without login.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| action | No | search | |
| mcp_id | No | ||
| message | No | ||
| tool_id | No | ||
| arguments | No | {} | |
| immediate | No | ||
| tier_slug | No | ||
| prompt_body | No | ||
| prompt_slug | No | ||
| prompt_tool | No | ||
| prompt_vars | No | {} | |
| conversation | No | [] | |
| prompt_title | No | ||
| request_name | No | ||
| cancel_reason | No | ||
| cancel_comment | No | ||
| prompt_targets | No | ||
| report_context | No | ||
| prompt_category | No | ||
| request_details | No | ||
| prompt_description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses important behaviors: invoke runs an MCP even when it is not installed, does a one-off run without adding the MCP to the toolkit, returns a connect link when credentials are needed, returns a checkout/top-up link when payment is needed, and requires workspace owner/admin for write operations. The description enriches the annotations and does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with identity and the core flow, and nearly every sentence carries useful guidance. However, it is one dense, wall-of-text paragraph with mixed language ("pontualmente") and heavy inline emphasis, which makes the many action alternatives hard to scan and parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 23-parameter, 14-action facade with no output schema, the description is remarkably complete: it covers the core flow, one-off invoke semantics, auth/credential/payment behavior, permission requirements, installed flags, the prompt library, and most action outcomes. The main gaps are the resume action and return-shape details for a few actions, but the overall guidance is sufficient for correct invocation in most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description does a lot of compensating work: it maps action values such as search, describe, invoke, install, list_tools, publish_prompt, and explains tool_id, arguments, and prompt-related intent. However, several parameters and enum actions remain unexplained, including resume, limit, immediate, tier_slug, cancel_reason, report_context, conversation, request_name, and request_details, leaving agents under-specified for those paths.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as the official mcp.ai marketplace: the in-platform catalog of MCPs/tools and the way to run them. It states the core discovery→describe→invoke flow, distinguishes the prompt-library subdomain from the MCP flow, and makes it clear this is a marketplace orchestrator rather than one of the sibling calculator/authenticate tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: use install only to make an MCP permanent, prefer invoke for one-off use, use list_tools to see what is callable now, use subscribe/cancel for billing, and use request_mcp when nothing fits. It also explains what to do when invoke returns a connect link or checkout link, including retry behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pncp_arquivosARead-onlyIdempotentInspect
Documentos de uma licitação/edital (edital, termo de referência, anexos) com o LINK de download de cada arquivo (em geral PDF). A partir de cnpj+ano+sequencial (a referência devolvida pela pncp_buscar). Use pra trazer o PDF do edital pro usuário ou pra outra IA ler o conteúdo.
| Name | Required | Description | Default |
|---|---|---|---|
| ano | Yes | ||
| cnpj | Yes | ||
| sequencial | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, idempotentHint, destructiveHint). The description adds behavioral context by specifying it returns download links (not the content itself) and that files are usually PDFs. This is useful beyond the annotations, though it doesn't detail error cases or pagination—acceptable given the simple retrieval nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the tool's function and key output (links). It avoids redundancy and mentions only essential details, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (a retrieval of download links) and the combination of annotations plus description, it is fairly complete. It clarifies the output type (links) and the intended use case. However, it could hint at the response structure (e.g., a list of documents), but that's minor. No output schema exists, so some return details are missing, but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no descriptions (0% coverage), so the description must explain parameters. It does so by stating they are 'cnpj+ano+sequencial (a referência devolvida pela pncp_buscar)', which connects them to a known reference. It doesn't detail formats, but the explanation is sufficient for an agent to understand they are a compound key from another tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves documents of a bidding process with download links, and explicitly mentions the input format (cnpj+ano+sequencial) and its relationship to pncp_buscar. It distinguishes itself from siblings with its specific focus on document retrieval, not search or details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides direct usage guidance: 'Use pra trazer o PDF do edital pro usuário ou pra outra IA ler o conteúdo.' It also establishes the prerequisite that the reference comes from pncp_buscar, which implies when this tool is appropriate. While it doesn't state exclusions, the context is clear enough for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pncp_atasARead-onlyIdempotentInspect
Lista atas de registro de preços vigentes num período (referência de preços praticados pelo governo), opcionalmente por órgão (CNPJ).
| Name | Required | Description | Default |
|---|---|---|---|
| cnpj | No | ||
| pagina | No | ||
| data_final | Yes | ||
| data_inicial | Yes | ||
| tamanho_pagina | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds that records are 'vigentes' (active) and optionally filtered by CNPJ. However, it does not mention pagination behavior, output format, or data-scope limitations, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded Portuguese sentence with no filler. Every phrase adds meaning: the resource type, temporal scope, optional filter, and purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list operation with strong annotations, the description provides the essential context: active price-registration records in a period, optionally filtered by agency. It could additionally clarify pagination and differentiate from siblings, but it is sufficient for basic correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates by explaining that the period maps to the required date range and that 'órgão' corresponds to the cnpj parameter. It does not elaborate on pagina/tamanho_pagina or requiredness, though those are partly inferable from parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Lista' and clearly identifies the resource: 'atas de registro de preços vigentes num período', with an optional filter by 'órgão (CNPJ)'. This distinguishes it from sibling tools like pncp_contratos and pncp_oportunidades.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context: the tool lists currently valid price registration agreements within a period and can be filtered by agency CNPJ. It does not explicitly name alternatives or exclusions, but the intended use is easily inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pncp_buscarARead-onlyIdempotentInspect
Busca licitações por PALAVRA-CHAVE no objeto (cobertura NACIONAL ampla, índice full-text), em editais, atas ou contratos. Retorna órgão, estado, município, modalidade, situação, datas e a referência (cnpj/ano/sequencial) pra detalhar. Aceita VÁRIOS termos em termos[]: cada um vira uma busca separada (disparadas com um intervalo entre si pra não pegar rate limit), e os resultados voltam fundidos e deduplicados numa lista só, com termos_buscados. IMPORTANTE: a busca full-text NÃO traz valor (vem sempre null) e não filtra por valor. Pra filtrar/ordenar por VALOR use pncp_listar (com apenas_abertas + termos + valor_min/valor_max) ou pncp_historico (faixa de valor sobre a base acumulada).
| Name | Required | Description | Default |
|---|---|---|---|
| tipo | No | ||
| termo | No | ||
| pagina | No | ||
| status | No | ||
| termos | No | ||
| ordenacao | No | ||
| tam_pagina | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, non-destructive), the description elaborates on behavioral details: the full-text search does not return or filter by value, it handles multiple terms via separate searches with intervals to avoid rate limits, and outputs merged deduplicated results. This transparency goes well beyond the basic annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: it starts with the primary function, then details the multiple-term behavior, and finally includes an important caveat about value. Despite its length, it is concise and front-loaded, with each sentence adding necessary information. The structure aids readability and comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema, the description compensates by specifying the returned fields (órgão, estado, município, modalidade, situação, datas, referência) and noting that `termos_buscados` is included. It also explains the tool's limitations (no value) and points to alternatives, providing a holistic understanding of its role. This makes the description sufficiently complete for the given context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no descriptions (0% coverage), so the description must compensate. It explains the core parameter `termos[]` (and implies `termo` as singular) and the behavior of multiple terms. However, it does not elaborate on `pagina`, `tam_pagina`, `ordenacao`, or `status`, which are common pagination/ordering/filter parameters. While it adds significant meaning for the main search term, it omits some parameter details, so a score of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: searching licitações by keyword in the object across national scope (editais, atas, contratos). It also distinguishes itself from related tools by noting that it does not return or filter by value, directing users to pncp_listar and pncp_historico for those needs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool versus alternatives: it mentions that for value-based filtering/ordering, one should use pncp_listar or pncp_historico. It also explains the behavior with multiple terms (separate searches, merging, deduplication) and the rate-limiting caveat, offering clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pncp_contratosARead-onlyIdempotentInspect
Lista contratos públicos firmados num período, opcionalmente filtrando por órgão (CNPJ).
| Name | Required | Description | Default |
|---|---|---|---|
| pagina | No | ||
| cnpj_orgao | No | ||
| data_final | Yes | ||
| data_inicial | Yes | ||
| tamanho_pagina | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
As anotações já informam que a operação é somente leitura, idempotente e não destrutiva, então o risco comportamental é baixo. A descrição acrescenta o comportamento de filtragem por período/CNPJ, mas não fala sobre paginação, formato da resposta ou limites relevantes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A descrição é uma frase curta, com o verbo no início e sem palavras redundantes. Transmite o objetivo principal, o escopo temporal e o filtro opcional de forma eficiente, sem poluição.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Para uma ferramenta de listagem simples, a descrição cobre o essencial: o recurso, o período e o filtro por CNPJ. A ausência de menção à paginação é parcialmente suprida pelos parâmetros pagina/tamanho_pagina no schema, mas não há descrição do retorno nem de limites, lembrando que não há output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
A descrição ajuda a dar sentido a data_inicial/data_final como 'período' e a cnpj_orgao como filtro por 'órgão', com 0% de cobertura no schema. Porém, não explica os parâmetros pagina e tamanho_pagina, deixando lacuna parcial; os nomes autoexplicativos do schema compensam um pouco.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A descrição usa verbo específico 'Lista' mais o recurso 'contratos públicos' e o escopo temporal ('num período'), além do filtro opcional por órgão (CNPJ). Isso distingue claramente o tool de irmãos como pncp_atas, pncp_orgaos e pncp_buscar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
A descrição indica claramente o caso de uso: listar contratos públicos firmados em um período, com filtro opcional por CNPJ. No entanto, não menciona explicitamente quando não usar a ferramenta ou qual alternativa preferir, o que impede o 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pncp_detalheARead-onlyIdempotentInspect
Detalhe completo de uma licitação/contratação a partir de cnpj+ano+sequencial (a referência devolvida pela pncp_buscar). Com itens=true, inclui os itens da contratação com preços unitários, essencial pra pesquisa de preços. Com resultado=true, anexa o bloco resultado com o(s) fornecedor(es) vencedor(es) homologado(s).
| Name | Required | Description | Default |
|---|---|---|---|
| ano | Yes | ||
| cnpj | Yes | ||
| itens | No | ||
| resultado | No | ||
| sequencial | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it returns details, and optionally includes items and resultado blocks. It does not mention side effects or errors, but read-only behavior is covered by annotations. The added context about the reference from pncp_buscar is helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, direct, and contains no unnecessary information. It is well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters and no output schema, the description covers the main purpose and the optional behavior. It does not describe the return format or error conditions, but these are not critical given the simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description goes beyond the schema by explaining that cnpj+ano+sequencial is the reference from pncp_buscar, and clarifies the meaning of the boolean flags itens and resultado. This fully documents the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves complete details of a licitação/contratação using CNPJ, ano, and sequencial, and references the source (pncp_buscar). This is specific and distinguishes it from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the effect of the optional parameters itens and resultado, which is useful. It does not explicitly state when to prefer this over other tools, but the purpose is clear enough that usage is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pncp_historicoARead-onlyIdempotentInspect
Arquivo histórico de licitações: consulta editais que a plataforma acumulou ao longo do tempo (inclusive os que já encerraram ou saíram do ar), por PALAVRA-CHAVE no objeto, estado (UF), modalidade, situação e período de publicação. Diferente da pncp_buscar (consulta ao vivo), aqui a base é o arquivo próprio, útil pra histórico e séries.
| Name | Required | Description | Default |
|---|---|---|---|
| uf | No | ||
| ate | No | ||
| desde | No | ||
| termo | No | ||
| pagina | No | ||
| situacao | No | ||
| valor_max | No | ||
| valor_min | No | ||
| modalidade | No | ||
| tam_pagina | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the annotations (readOnlyHint, idempotentHint, destructiveHint) by explaining that it includes notices that have already closed or been taken offline, and that it operates on the platform's own archive. This is useful context that is not present in the annotations. No contradiction is observed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the purpose and quickly explains the difference from the live tool. No unnecessary words are used, and it is appropriately sized for a query tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description effectively conveys the core use case and differentiates from siblings, it lacks details on output format, pagination, and some filters (e.g., value ranges). Since there is no output schema, the description could have better described the return shape, but it is adequate for a read-only tool with annotations covering safety.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions several filter dimensions (termo, uf, modalidade, situacao, desde/ate) but omits others like pagina, tam_pagina, valor_min, and valor_max. Given that schema description coverage is 0%, the description partially compensates by explaining some parameters conceptually, but it is not comprehensive for all 10 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it is a historical archive of public procurement notices (licitações), and it explicitly contrasts itself with pncp_buscar (live query). This gives a specific verb ('consulta') and resource ('arquivo histórico de licitações'), and distinguishes it from a sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance by stating 'Diferente da pncp_buscar (consulta ao vivo), aqui a base é o arquivo próprio, útil pra histórico e séries.' This tells the user when to use this tool (for historical data) versus the alternative (live queries), and even notes it is useful for historical and series analysis.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pncp_listarARead-onlyIdempotentInspect
Busca PRINCIPAL de licitações abertas por palavra-chave, faixa de VALOR, estado, modalidade e período. Cobertura agregada e instantânea de vários portais. Já vem com VALOR estimado por item e RANQUEADA por valor (maior 1º) automaticamente. Os termos são EXPANDIDOS em sinônimos automaticamente (ex.: 'software' busca também saas, licença de uso, sistema...). TUDO opcional: sem datas, usa os próximos 30 dias por abertura. Use termos[] pra palavra-chave, valor_min/valor_max pra faixa, uf/modalidade pra estreitar; apenas_abertas=true (default). Cada item traz id + valor; pra itens/preços e leitura do edital use pncp_processo/pncp_texto. Passe incluir_valor:false pra uma lista rápida sem valor, ou expandir:false pra não expandir os termos. Modalidades: 1 Leilão-Elet, 4 Concorrência-Elet, 6 Pregão-Elet, 8 Dispensa, 9 Inexigibilidade, 12 Credenciamento.
| Name | Required | Description | Default |
|---|---|---|---|
| uf | No | ||
| cnpj | No | ||
| pagina | No | ||
| termos | No | ||
| expandir | No | ||
| municipio | No | ||
| ordenacao | No | ||
| valor_max | No | ||
| valor_min | No | ||
| data_final | No | ||
| modalidade | No | ||
| data_inicial | No | ||
| incluir_valor | No | ||
| apenas_abertas | No | ||
| tamanho_pagina | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds rich behavioral context beyond annotations: automatic synonym expansion, ranking by value, default 30-day window, default values (apenas_abertas=true), and item structure (id+valor). No contradiction with readOnlyHint=true or idempotentHint=true—the operation is purely a query.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded, starting with the core purpose. While it uses ALL CAPS for emphasis, which could be seen as shouting, every sentence provides actionable information. It's compact for the amount of guidance offered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter tool with no output schema, the description covers critical defaults, alternatives, and list of modalities. It explains the return structure minimally (id+valor) and directs to sibling tools for detailed data. Gaps like pagination or handling of 'cnpj' are not addressed, but the description is sufficiently complete for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description compensates by explaining key parameters (termos[], valor_min/max, uf, modalidade, incluir_valor, expandir, apenas_abertas) and the enum values for modalidade. However, not all 15 params are covered (e.g., cnpj, pagina, tamanho_pagina), leaving some room for ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Busca PRINCIPAL de licitações abertas' with specific filters (keyword, value range, state, modality, period). It also distinguishes itself from siblings by labeling itself as the main search and referencing specialized tools (pncp_processo/pncp_texto) for other use cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly explains when to use this tool vs alternatives: 'pra itens/preços e leitura do edital use pncp_processo/pncp_texto.' It also provides parameter-specific usage (e.g., 'Passe incluir_valor:false pra uma lista rápida sem valor') and default behaviors, making it clear when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pncp_oportunidadesARead-onlyIdempotentInspect
Busca de OPORTUNIDADES de licitação (editais/pregões) com filtros ricos por palavra-chave, FAIXA DE VALOR da compra, UFs, modalidades, portais, registro de preço, participação exclusiva ME/EPP e superoportunidades. Cobertura agregada de vários portais. Devolve uma página com o id de cada oportunidade (use em pncp_processo pro detalhe completo), datas de abertura/encerramento e, quando edital_legivel:true, os campos cnpj/ano/sequencial pra LER o edital com pncp_texto/pncp_arquivos. Mesma fonte da pncp_listar, com mais filtros de qualificação.
| Name | Required | Description | Default |
|---|---|---|---|
| ufs | No | ||
| termo | No | ||
| pagina | No | ||
| termos | No | ||
| excluir | No | ||
| portais | No | ||
| expandir | No | ||
| tipo_item | No | ||
| valor_max | No | ||
| valor_min | No | ||
| data_final | No | ||
| modalidades | No | ||
| data_inicial | No | ||
| tipo_periodo | No | ||
| itens_desertos | No | ||
| pesquisa_ampla | No | ||
| somente_sigilosos | No | ||
| superoportunidades | No | ||
| excluir_registro_preco | No | ||
| participacao_exclusiva | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the description need only add contextual behavior. It adds useful detail such as aggregate coverage over several portals, return of a page with IDs and dates, and optional readable edital fields when edital_legivel is true. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it first defines what is searched, then describes return values and follow-up tools, and finally relates the tool to pncp_listar. Every sentence contributes meaningful information without repetition or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 20-filter search tool with no output schema, the description gives valuable output context: one page of results, IDs, opening/closing dates, and optional edital fields for downstream reading. Still, it does not fully describe the outcome shape, pagination behavior, or the exact semantics of several filters, so completeness is adequate but not strong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for 20 parameters. It explains major filters like keyword, value range, UFs, modalidades, portais, participation exclusiva, and superoportunidades. However, it leaves gaps around parameters such as itens_desertos, somente_sigilosos, pesquisa_ampla, expandir, tipo_periodo, and date semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Busca de OPORTUNIDADES de licitação') and clearly defines the scope: editais/pregões with rich filters and aggregate portal coverage. It also distinguishes itself from pncp_listar by noting it is the same source but with more qualification filters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides practical routing guidance: same source as pncp_listar but with more filters, use pncp_processo for full opportunity detail, and use pncp_texto/pncp_arquivos to read the edital. It lacks explicit when-not-to-use advice or exclusions for other search siblings like pncp_buscar, but the guidance is clear enough for most agents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pncp_orgaosARead-onlyIdempotentInspect
Busca de ÓRGÃOS/entidades compradoras por nome, UF e/ou portal. Devolve portal, UF, uasg, nome e info de pagamento. Útil pra achar o órgão e usar o filtro em outras buscas. Aceita VÁRIOS nomes em termos[]: cada um vira uma busca separada (disparadas com intervalo entre si pra não pegar rate limit), resultados fundidos e deduplicados. ATENÇÃO: termo muito amplo (ex.: 'prefeitura', 'ministerio') estoura a fonte, prefira UF/portal ou um nome específico. Com antecipagov=true, consulta a base do programa AntecipaGov.
| Name | Required | Description | Default |
|---|---|---|---|
| uf | No | ||
| termo | No | ||
| pagina | No | ||
| termos | No | ||
| portais | No | ||
| antecipagov | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true and destructiveHint=false; the description adds meaningful behavior: multiple termos are searched separately with staggered delays to avoid rate limits, results are merged and deduplicated, broad terms can overwhelm the source, and antecipagov=true switches to a different database. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose and return fields, then adds parameter behavior and a warning in a compact block. Every sentence contributes: search scope, outputs, intended use, multi-search semantics, and a caution about broad terms.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter read-only search with no output schema, the description covers the core selection and invocation needs: result fields, dangerous input patterns, batch behavior, and the special antecipagov mode. The main gap is pagination/page semantics, which would be needed for a fully complete invocation guide.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description compensates well for most parameters: it explains termos[] (multiple independent searches, merged/deduped), the search criteria (nome, UF, portal), and antecipagov behavior. However, 'pagina' is not addressed and the 'portais' values are only implied, so it is not fully complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Busca de ÓRGÃOS/entidades compradoras por nome, UF e/ou portal' and states the returned fields (portal, UF, uasg, nome, payment info). This clearly differentiates it from sibling search tools by focusing on the buyer-entity registry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the practical use: 'Útil pra achar o órgão e usar o filtro em outras buscas' and gives explicit guidance to avoid broad terms, preferring UF/portal or specific names. It does not name direct alternatives, so it misses the top-level 'when-not to use this versus sibling' exclusion, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pncp_pcaARead-onlyIdempotentInspect
Plano anual de contratações (PCA) por ano e classificação superior do catálogo: o que os órgãos planejam contratar no ano.
| Name | Required | Description | Default |
|---|---|---|---|
| pagina | No | ||
| ano_pca | Yes | ||
| tamanho_pagina | No | ||
| codigo_classificacao_superior | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive, so the safety profile is covered. The description adds the useful semantic distinction that this tool exposes planned procurements (PCA) rather than actual contracts, but it does not mention pagination behavior, response format, or other operational details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the resource type and key filters. It contains no filler, redundant wording, or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with two required filters and two optional pagination parameters, the description is largely adequate: it explains the core subject matter and the filter semantics. It is not fully complete because there is no output schema and no description of the return payload, but the low complexity keeps the gap from being severe.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description carries the burden for parameter meaning. It successfully maps the two required parameters: ano_pca corresponds to the year and codigo_classificacao_superior to the superior catalog classification. The pagination parameters are left implicit but their names make them reasonably self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as the annual contracting plan (PCA) filtered by year and superior catalog classification, and adds a clarifying clause about what agencies plan to contract. It is specific enough to distinguish the tool from siblings like pncp_contratos or pncp_oportunidades, though it lacks an explicit retrieval verb such as 'list' or 'get'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to choose this tool over the many sibling pncp_* tools. There is no mention of exclusions, prerequisites, or alternative tools, so the intended usage context must be inferred entirely from the resource name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pncp_processoARead-onlyIdempotentInspect
Detalhe de oportunidade(s) por id (de pncp_listar/pncp_oportunidades). DOIS modos: (1) id único → detalhe COMPLETO (objeto, situação, órgão, modalidade, ITENS com preços, valor estimado, datas) + cnpj/ano/sequencial pra LER o edital (pncp_texto/pncp_arquivos). (2) ids em LOTE → detalha vários numa só chamada (com throttle interno) e devolve RANKING por VALOR (maior 1º) — é a forma certa de RANQUEAR POR VALOR, já que a listagem não traz valor. Passe os id da página do pncp_listar em ids pra montar o ranking sem N chamadas.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly annotation, the description reveals that batch mode has internal throttling and returns results ranked by value, which are useful behavioral details. It also implies the single mode returns richer detail. No contradictory side effects are mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear mode breakdowns and uses uppercase for emphasis. It is slightly repetitive regarding ranking but remains efficient and informative without excessive verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides sufficient context for both usage patterns and references related tools (pncp_texto, pncp_arquivos) for further actions. It doesn't cover error handling or return formats, but given the read-only nature and clear purpose, it is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema lists both id and ids without descriptions, the description clarifies their distinct usage: id for a single opportunity, ids for a batch. It also explains the expected input (from pncp_listar) and the output difference, adding meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool provides details of opportunities by id, with two modes (single and batch). It distinguishes itself from sibling tools by mentioning it complements pncp_listar/pncp_oportunidades and provides ranking by value, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly explains when to use each mode: single id for complete details, batch ids for ranking by value. It contrasts with pncp_listar (which lacks value) and directs users to pass ids from pncp_listar for ranking, offering clear alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pncp_resultadoARead-onlyIdempotentInspect
Quem GANHOU a licitação: o(s) fornecedor(es) vencedor(es) homologado(s) a partir de cnpj+ano+sequencial (a referência da pncp_buscar). Retorna, por vencedor, o CNPJ, a razão social, o valor REAL homologado (já com o desconto da disputa, melhor que o estimado), a natureza jurídica (separa estatal de privada, ex.: 'Empresa Pública') e o porte (ME/EPP vs Demais). Agrega por fornecedor (vários itens do mesmo vencedor viram uma linha) e traz o total homologado. Itens sem resultado são ignorados. Use numero_item pra um item específico; omita pra todos. Observação: a lista de PERDEDORES e os lances não vêm por aqui (só no Termo).
| Name | Required | Description | Default |
|---|---|---|---|
| ano | Yes | ||
| cnpj | Yes | ||
| sequencial | Yes | ||
| numero_item | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
As annotations já declaram readOnly e idempotente, e a descrição acrescenta comportamento valioso: agregação por fornecedor, total homologado, itens sem resultado ignorados e ausência de lista de perdedores/lances. Isso vai bem além do que annotations já provêm.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
O texto é denso porém sem redundância: começa com o verbo claro 'GANHOU', agrupa relacionado, e cada frase adiciona uma instrução ou um comportamento. Mantém todas as informações relevantes sem bloates.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Mesmo sem output schema, a descrição informa campos retornados, agregação, total, filtragem por item e limitações. Para um tool de read simples com 4 parâmteros, isso cobre o contexto operacional essencial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
O schema tem cobertura 0% e a descrição compensa explicando que cnpj+ano+sequencial formam a referência de pncp_buscar e que `numero_item` filtra por item ou pode ser omitido. Não detalha formatos de cnpj/ano, mas dá o entendimento funcional necessário.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A descrição afirma claramente que o objetivo é retornar quem ganhou a licitação e lista exatamente o que é retornado: CNPJ, razão social, valor homologado, natureza jurídica e porte. Também diferencia a ferramenta de outros recursos ao dizer que perdedores e lances não vêm por aqui.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
A instrução é explícita sobre usar a referência de pncp_buscar e sobre o parâmetro `numero_item` para item específico ou omitir para todos. Também diz claramente o que este tool não faz, embora a alternativa para perdedores seja mencionada apenas como 'Termo' e não como um sibling-tool nomeado.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pncp_textoARead-onlyIdempotentInspect
Texto INTEIRO do edital em markdown (com marcadores '## Página N'), pra você RESUMIR ou ler o documento todo. Mantém o link de download do PDF no retorno. A partir de cnpj+ano+sequencial (referência da pncp_buscar). Editais muito grandes vêm truncados (use de_pagina/ate_pagina). Documento escaneado retorna aviso (OCR pendente).
| Name | Required | Description | Default |
|---|---|---|---|
| ano | Yes | ||
| cnpj | Yes | ||
| de_pagina | No | ||
| documento | No | ||
| ate_pagina | No | ||
| sequencial | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (read-only, idempotent), the description discloses key behaviors: returns markdown with page markers, preserves PDF download link, truncation for large texts, and OCR pending warnings for scanned documents. This adds significant transparency about the tool's runtime behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with the main purpose stated up front, followed by important usage notes. It is well-structured and free of fluff, conveying all necessary information in a few sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the minimal schema (no parameter descriptions, no output schema) and the annotations (read-only, idempotent), the description covers all essential aspects: what it returns, how to identify the resource, pagination handling, and special cases like OCR. It is complete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the meaning of the required parameters (cnpj, ano, sequencial) as a reference from pncp_buscar, and clarifies the optional page-range parameters (de_pagina/ate_pagina) for pagination. Since the schema has no descriptions, this provides essential semantic context that the raw schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: returns the full text of an edital in markdown format, distinguishing it from sibling tools like pncp_buscar or pncp_detalhe. It specifies the action (read/summarize) and the resource (full document).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit usage context: the identifiers (cnpj+ano+sequencial) come from pncp_buscar, and it explains when to use pagination (de_pagina/ate_pagina) for large documents, plus the OCR warning for scanned files. This clearly guides when to invoke this tool vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_bugAIdempotentInspect
Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction.
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | ||
| message | Yes | ||
| conversation | No | [] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile with idempotentHint=true and destructiveHint=false. The description adds that conversation data is needed for reproduction, which is useful context. However, it does not disclose what happens after submission, such as whether a ticket is created or whether the report is asynchronous, though the annotations lower the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two tight sentences: the first states the purpose, the second gives the key usage instruction. There is no filler, repetition, or irrelevant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter reporting tool with annotations already covering idempotency and destructiveness, the description is mostly sufficient. The main gaps are the unexplained `context` parameter and the absence of any indication of what the response or outcome will be, though no output schema is expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for undocumented parameters. It only clarifies the `conversation` parameter via 'conversation array with recent messages,' leaving the required `message` and optional `context` undefined. The agent must guess at their intended content.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the verb 'Report' and explicitly enumerates three targets: 'bug, missing feature, or send feedback'. This makes the tool's purpose unmistakable and easily distinguishable from the sibling calculo_* and authentication tools, which serve entirely different functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes a clear context: use when a user reports a problem or wants to provide feedback. It also adds practical guidance to 'Include the conversation array with recent messages for reproduction.' It does not name alternatives, but none of the sibling tools overlap with bug reporting, so exclusions are unnecessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_versionARead-onlyIdempotentInspect
Show the current MCP platform and adapter versions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and idempotentHint=true, so the agent knows this is a safe, non-mutating call. The description adds little beyond that—it names the output as versions but doesn't specify the format (e.g., semver strings, JSON object) or whether the output is human-readable. Since the annotations carry the safety profile, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 9 words, front-loading the action ('Show') and the object ('version'). There is zero waste, and it fully conveys the tool's purpose within its scope. This is a model of conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only, idempotent tool with no output schema, the description is nearly complete. An agent can confidently invoke it without additional context. The only minor gap is that the return format is unspecified, but since there is no output schema, a brief note on the output structure (e.g., 'returns a plain-text summary') would elevate completeness. Still, the description is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is 100% (no properties). The description doesn't need to explain parameters. The baseline for zero-parameter tools is 4, and the description is consistent with that—it correctly implies that no input is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Show the current MCP platform and adapter versions.' This is a specific verb-resource pair that distinguishes it from sibling tools, which are all calculation or authentication tools. It could be slightly more explicit about what 'show' returns (e.g., a text summary vs. structured data), but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool is for checking version information, which makes sense in contexts where an agent needs to confirm platform/adapter versions before proceeding. However, it does not explicitly state when to use this tool versus alternatives, nor does it mention whether version information is needed for authentication or compatibility checks. Given the sibling tools are all calculations, the usage context is reasonably clear, but not explicitly delineated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toolkit_infoARead-onlyIdempotentInspect
Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description does not need to restate safety. It adds value by detailing what kind of state is returned, including connection status and account bindings, which helps the agent understand the tool's informational scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tightly packed sentence with the main action front-loaded, followed by a colon-delimited list of return contents. Every phrase earns its place with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only introspection tool, the description fully covers what the agent needs to know before calling: what information it will receive. No output schema exists, but the description essentially provides a light output contract by enumerating the returned components.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty with zero parameters, and schema description coverage is 100%, so the description has no parameter burden. Per calibration, zero-parameter tools receive a baseline of 4; the description's output-focused content is more than sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Returns') and resource ('current toolkit state'), then enumerates exactly what is included: installed MCPs, connection status, connected accounts, and catalog tool counts. This is specific enough to distinguish it from computational siblings like calculo_* and action tools like authenticate or connect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly conveys that this is the tool to call when an agent needs an overview or snapshot of the toolkit's current state. It does not explicitly list exclusion criteria or name alternatives such as show_version, but the context is clear enough for routine selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Related MCP Connectors
Brazilian public procurement (PNCP): search, deadlines, tender markdown, alerts and watches.
Searches MUNICIPAL official gazettes from thousands of city halls (Querido Diário / Open Knowledge B
Free Brazilian CNPJ lookup (legal name, status, partners) + lawsuit discovery. Public data, no login
Public search of the Brazilian Federal Court of Accounts (TCU) case law: keyword search across rulin
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceMCP server that provides access to Brazilian public and commercial data, including CNPJ company info, government procurement (PNCP) searches, and FIPE vehicle pricing, with optional alert registration for new tenders.-
- AlicenseAqualityAmaintenanceIntegrates public APIs from the Brazilian Compras.gov.br procurement ecosystem to support price research, supplier sanctions, contract analysis, and procurement planning.1005MIT

licinexus-mcpofficial
AlicenseAqualityAmaintenancerazilian public procurement (PNCP) and Federal Revenue CNPJ data for any MCP client. 18 tools covering bids, contracts, atas de registro de preço, annual procurement plans, CNPJ enrichment, plus temporal aggregation and period comparison. MIT licensed, maintained by Licinexus under Law 14.133/2021.18137 npm78MIT- AlicenseNot gradedqualityCmaintenanceProvides access to Brazilian government procurement (PNCP) data without API keys, enabling natural language queries through Pipeworx's AI gateway.1 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.