Skip to main content
Glama
fxbarros

MCP-DOE-PI

by fxbarros

Server Quality Checklist

58%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v0.1.0

  • Disambiguation5/5

    Each tool has a clearly distinct purpose: listing editions, searching acts, reading act text, and downloading PDFs. No overlap or ambiguity between them.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern in Portuguese (ler_ato, baixar_edicao, listar_edicoes, buscar_conteudo), using lowercase and underscores throughout.

    Tool Count5/5

    The set of 4 tools is well-scoped for the server's purpose, covering the essential operations without unnecessary bloat or missing core functionality.

    Completeness4/5

    The tools cover the main workflows: browsing editions, searching acts, reading full text, and downloading PDFs. A minor gap is the lack of a direct way to list all acts within a specific edition, but search can compensate.

  • Average 4.8/5 across 4 of 4 tools scored.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 3 commits in the last 12 weeks
    • No stable releases found
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI status not available
  • Add a LICENSE file by following GitHub's guide. Once GitHub recognizes the license, the system will automatically detect it within a few hours.

    If the license does not appear after some time, you can manually trigger a new scan using the MCP server admin interface.

    MCP servers without a LICENSE cannot be installed.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • Add a glama.json file to provide metadata about your server.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Despite having no annotations, the description discloses important behavioral details: ordering (most recent to oldest), archive scope (starts at edition 240/2022), and date format restrictions (only yyyy-mm-dd). These limitations go beyond basic expectations and help the agent understand the tool's boundaries.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The front-loaded summary sentence clearly states the tool's purpose, followed by a structured Args block. While slightly detailed, every piece of information serves a purpose, and the formatting improves scannability. No redundant content was introduced.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    The description covers the tool's purpose, parameters, ordering, output link, and archive limitation. Since there is no output schema, it would benefit from explicitly stating the full item structure, but for a filtering/listing tool it is reasonably complete.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters5/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    The input schema provides only names and types with zero coverage in its descriptions, but the description fully compensates by explaining each parameter's meaning, format, example values, default behavior, and edge cases (e.g., dd/mm/yyyy does not work; numero returns matches across all years). This adds substantial value beyond the schema.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the tool lists editions of the Piauí State Official Diary, ordered from most recent to oldest, with a PDF link for each. This distinguishes it from siblings like ler_ato (read act), baixar_edicao (download edition), and buscar_conteudo (search content) by defining the listing action and resource.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description provides clear guidance on how to use the optional filters (data, numero, quantidade) with examples and defaults, but it does not explicitly mention when not to use this tool or when to prefer alternatives. The context is clear but lacks exclusions.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations provided, the description carries the full burden and discloses the key side effect (saving the PDF to ~/Downloads) and default naming behavior. It does not cover error handling, overwrite behavior, or return values, but these are less critical for a download tool and the core behavior is well explained.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is highly concise, front-loading the purpose and usage guidance in the first sentence, followed by a clear and compact Args section. Every sentence adds value, with no redundant or filler content.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness5/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the tool's low complexity (2 params, no output schema, no annotations), the description covers purpose, when to use, alternatives, parameter semantics, and source of required data. It is complete enough for an agent to correctly select and invoke the tool without additional information.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters5/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    Even though the schema has 0% description coverage, the description thoroughly explains both parameters: `url_pdf` (source and how to obtain it) and `nome_arquivo` (optional, default behavior). This goes beyond the schema and effectively compensates for the lack of structured descriptions.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description uses a specific verb ('Baixa') and clearly identifies the resource (official PDF of a DOE-PI edition) and destination (~/Downloads). It also distinguishes itself from siblings by noting that for reading, one should prefer `ler_ato`.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines5/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    Explicitly states when to use this tool ('apenas quando o usuário precisar do documento em si') and provides a clear alternative (`ler_ato` for reading). It also indicates where to obtain the required `url_pdf` from sibling tools (`listar_edicoes` or `buscar_conteudo`).

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior5/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals several important traits: accent normalization by the server, partial matching for multi-word searches, the `ano` filter being applied locally (not server-side), and the fact that results include `uuid_ato` instead of full text. This goes beyond a simple 'search' description and helps the agent anticipate behavior.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is well-structured and concise. It opens with a clear purpose, then uses a compact list for arguments, and ends with a coverage note. Every sentence provides valuable information without redundancy. It is appropriately sized for the tool's complexity.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness5/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Despite having no output schema or annotations, the description covers essential context: what the tool does, what each parameter means, what the results contain (uuid_ato, palavras_encontradas, total_encontrado), how to proceed with `ler_ato`, and the coverage scope. This is complete enough for an agent to select and invoke the tool correctly.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters5/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    The input schema provides only types and defaults (0% description coverage). The description compensates fully by explaining each parameter: `termo` (keywords, accent normalization, partial matching), `ano` (year restriction, local filter), and `limite` (max results, default 20, with `total_encontrado` field). This adds substantive meaning beyond the schema.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description clearly states the tool's function: 'Busca palavras-chave no TEXTO dos atos publicados no DOE-PI' (searches keywords in the text of published acts). It also lists the types of acts covered (leis, decretos, etc.) and distinguishes itself from siblings by explaining that it returns `uuid_ato` to be used with `ler_ato` for full text.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description provides clear context for use: search text content, then use `ler_ato` with the returned `uuid_ato` to get the full text. It also notes that the `ano` filter is applied locally because the API does not filter by date, which helps set expectations. However, it does not explicitly contrast with sibling tools like `listar_edicoes` or `baixar_edicao`, so a perfect score is not warranted.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior5/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations provided, the description carries the full burden. It discloses that the text comes from the portal's notes database, not the typeset PDF, and that it returns plain text. This caveat is important for understanding the tool's output limitations and differentiates it from the PDF-based alternative.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is succinct: one purpose statement, a short Args section, and a single caveat sentence. It is well-structured with clear labels ('Args', 'Atenção') and avoids redundant filler, making it easy to scan.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness5/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a simple read tool with no output schema and no annotations, the description covers the purpose, parameter source, data source caveat, and an alternative tool. It provides all essential information for an agent to select and invoke the tool correctly, including the nuance about formal use.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters5/5

    Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

    The input schema provides only the parameter name 'uuid' with no description (0% coverage). The description compensates by explaining that uuid is the act identifier from the `uuid_ato` field of `buscar_conteudo` results, adding critical provenance and context.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description opens with a specific action: 'Retorna o texto integral de um ato publicado no DOE-PI, em texto plano, direto da base do portal' – clearly stating verb, resource, and output format. It distinguishes from siblings by contrasting with 'sem precisar baixar o PDF da edição' and referencing `buscar_conteudo` for obtaining the UUID.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines5/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description explicitly tells the user how to obtain the UUID ('obtido no campo `uuid_ato` dos resultados de `buscar_conteudo`) and when to use an alternative ('Para citação formal ou juntada, baixe a edição com `baixar_edicao`'). This provides clear when-to-use and when-not-to-use guidance.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

MCP-DOE-PI MCP server

Copy to your README.md:

Score Badge

MCP-DOE-PI MCP server

Copy to your README.md:

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/fxbarros/MCP-DOE-PI'

If you have feedback or need assistance with the MCP directory API, please join our Discord server