Skip to main content
Glama

๐ŸŽฏ Precision PDF MCP Server (precision-pdf-mcp)

Pixel-Perfect PDF Form and Worksheet Filling for AI Coding Agents.
Powered by Hybrid Vector-Raster Geometry, Set-of-Marks (SoM), and Virtual Excel Grounding.

Python 3.10+ MCP Compliant License: MIT Glama Score Zero Disk Pollution


๐Ÿ’ก Why Precision PDF?

Filling assignment worksheets, tax forms, and scanned PDF workbooks has always been a painful failure mode for Large Language Models (LLMs):

  • โŒ The "Floating Text" Bug: LLMs guess raw (x, y) floats, causing answers to float aimlessly above or below lines.

  • โŒ The "Collision" Bug: Answers smash directly into printed text (e.g., Heis going, Parentsmust, 1)wear).

  • โŒ The "Scanned PDF" Blindspot: Most PDF tools rely only on vector drawings. Scanned workbooks have 0 vector lines, leaving AI completely blind.

  • โŒ Multi-Line Truncation: Long answers get crammed into line 1 or truncated because the agent doesn't realize two lines are printed for that question.

Precision PDF solves this once and for all.


Related MCP server: Visual Document Forensics MCP Server

๐Ÿš€ Key Innovations

[ Input PDF: Digital or Scanned Workbook ]
                    โ”‚
                    โ–ผ
  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
  โ”‚ 1. Tri-Layer Hybrid Detector                            โ”‚
  โ”‚    โ€ข Vector Lines & Rects (pdfplumber)                  โ”‚
  โ”‚    โ€ข In-Memory Morphological Line Scanner (NumPy)       โ”‚
  โ”‚      Detects physical lines in scanned images in RAM!   โ”‚
  โ”‚    โ€ข Text Anchors & Gap Numbers (1), 2., He_________)   โ”‚
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ”‚
                            โ–ผ
  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
  โ”‚ 2. Context Guards & Smart Layout                        โ”‚
  โ”‚    โ€ข Padding Guard: Auto +6pt..+10pt margin after       โ”‚
  โ”‚      printed subjects (He, You, Jenny...)               โ”‚
  โ”‚    โ€ข Multi-Line Grouping: Detects stacked lines & auto- โ”‚
  โ”‚      wraps long sentences at natural word boundaries    โ”‚
  โ”‚    โ€ข Auto-Scale Font: Scales down font to prevent crash โ”‚
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ”‚
                            โ–ผ
  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
  โ”‚ 3. Virtual Excel Matrix & Set-of-Marks (Agent View)     โ”‚
  โ”‚    โ€ข Renders Top Columns (A, B, C...) & Rows (1, 2, 3)  โ”‚
  โ”‚    โ€ข Badges targets: [S01], [S02], [S03]...             โ”‚
  โ”‚    โ€ข STRICTLY VIRTUAL: Only for the agent to inspect!   โ”‚
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ”‚
                            โ–ผ
  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
  โ”‚ 4. Clean Vector Injection (Output PDF)                  โ”‚
  โ”‚    โ€ข Baseline Snapped: Text rests 1.2pt above line      โ”‚
  โ”‚    โ€ข Centered in Boxes: Dead-center horizontally & vert โ”‚
  โ”‚    โ€ข Crisp Circles / Underlines: Vector option markers  โ”‚
  โ”‚    โ€ข ZERO GRID POLLUTION: Output PDF is 100% clean!     โ”‚
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ“ฆ Installation & Quickstart

Method 1: Instant Run with uvx (Recommended)

No installation required. Run directly in Claude Desktop or Cursor via uvx:

uvx precision-pdf-mcp

Method 2: Install via pip

pip install precision-pdf-mcp

Method 3: From Source (Local Development)

git clone https://github.com/zuan412/precision-pdf-mcp.git
cd precision-pdf-mcp
pip install -e .

๐Ÿ› ๏ธ MCP Client Configuration

1. Claude Desktop

Add to your claude_desktop_config.json:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "precision-pdf": {
      "command": "uvx",
      "args": ["precision-pdf-mcp"]
    }
  }
}

2. Cursor IDE

Add to Cursor Settings -> MCP Servers (~/.cursor/mcp.json):

{
  "mcpServers": {
    "precision-pdf": {
      "command": "uvx",
      "args": ["precision-pdf-mcp"]
    }
  }
}

3. Antigravity / Gemini CLI / Windsurf / Cline

In your mcp_config.json:

{
  "mcpServers": {
    "precision-pdf": {
      "command": "python",
      "args": ["-m", "precision_pdf"]
    }
  }
}

๐Ÿงฐ Available MCP Tools

hpe_inspect_virtual_grid

Generates a temporary Virtual Excel Matrix inspector image with Set-of-Marks badges ([S01], [S02]...) and returns a JSON catalog of detected slots.

  • Arguments:

    • pdf_path (string, required): Absolute path to the PDF.

    • page_number (int, required): 1-based page number.

    • dpi (int, optional, default: 150): Image resolution.

  • Returns:

    • inspector_image_path: Path to the image for agent visual inspection.

    • slots: Dictionary of slots containing grid address (e.g. Col D, Row 14), type, baseline, and width.

hpe_fill_slots

Injects answers directly into the target PDF using Slot IDs.

  • Arguments:

    • pdf_path (string, required): Absolute path to the PDF.

    • page_number (int, required): 1-based page number.

    • slot_answers_json (string, required): JSON string of answers.

      • Slot map: {"S01": "must have left", "S02": "could do"}

      • Multi-line wrap: {"S03": ["first line text", "second line text"]}

      • Option circle: {"circle_option": "A"}

      • Option underline: {"underline_option": "Shall"}

    • output_path (string, optional): Output PDF path. If omitted, safely updates in-place.

  • Guarantees:

    • 100% baseline snap (rests naturally on the printed line).

    • Zero grid pollution (no rulers or badges in final output).

hpe_render_clean_verify

Renders the final, clean PDF page to an image for visual QA verification.

  • Arguments:

    • pdf_path (string, required): Path to the completed PDF.

    • page_number (int, required): 1-based page number.

    • dpi (int, optional, default: 150): Output DPI.


๐Ÿงช Testing

Run the included unit test suite:

python -m unittest discover -s tests

๐Ÿ›ก๏ธ Zero Disk Pollution & Safety Guarantee

Precision PDF is engineered to run in memory:

  • All morphological line detection and raster scanning execute in RAM via NumPy arrays and io.BytesIO.

  • Temporary inspector previews use OS-standard tempfile.gettempdir()/precision_pdf or the $PRECISION_PDF_TEMP_DIR environment variable.

  • Stdio JSON-RPC communication is 100% isolated: all logs, warnings, and internal debug outputs route strictly to sys.stderr.


๐Ÿ“„ License

MIT License. See LICENSE for details. Built with โค๏ธ for the AI agent pair-programming community.

Available Tools

6 tools
hpe_fill_slotsA

Inject answers into the PDF using Slot IDs (e.g. {"S01": "answer", "S02": "B"}). Guarantees:

  • 100% baseline snap on printed lines (zero floating text).

  • 100% center alignment in boxes (zero off-center boxes).

  • Automatic multi-line wrapping across consecutive lines for long answers.

  • Automatic font scaling to avoid text collision or overflow.

  • 100% CLEAN OUTPUT: Final PDF contains ONLY answers (zero grid lines, zero badges). Args: pdf_path: Path to target PDF. page_number: 1-based page number. slot_answers_json: JSON string mapping slot tags to answers: e.g. '{"S01": "went", "S02": ["line 1 text", "line 2 text"], "circle_option": "A"}'

output_path: Optional output path. If omitted, overwrites safely via atomic replace. Returns status JSON with saved path.

ParametersJSON Schema
NameRequiredDescriptionDefault
pdf_pathYes
output_pathNo
page_numberYes
slot_answers_jsonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does so well: it discloses overwrite-via-atomic-replace when output_path is omitted, wrapping behavior, font auto-scaling, and that the output contains only answers. It stops short of failure modes or how invalid slot IDs are handled.

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?

Front-loaded with the core action and then an Args list, so it is easy to scan. The repeated emphatic '100% ... zero ...' guarantee phrasing is slightly padded but each line does convey a distinct behavioral trait.

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?

For a 4-param mutation tool with an output schema, the description covers the action, every parameter, and the return shape ('status JSON with saved path'). The main omission is any tie-breaking against the near-identical sibling tools.

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?

Schema description coverage is 0%, yet the Args block documents all four parameters, including that page_number is 1-based and that output_path is optional with atomic-replace semantics. The slot_answers_json entry adds concrete JSON examples covering plain strings, multi-line arrays, and a special key, far exceeding the bare schema.

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

Purpose4/5

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

States a specific verb and resource ('Inject answers into the PDF using Slot IDs') and shows the data shape immediately. However, it never distinguishes itself from the very similar sibling hpe_snap_fill, so an agent must infer the difference without help.

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

Usage Guidelines3/5

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

Usage is implied by the description (fill slot IDs on a given page) but there is no explicit when-to-use or when-not guidance, and no routing to alternatives such as hpe_snap_fill or hpe_render_verify. The agent is left to infer selection.

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

hpe_inspect_geometryC

Backward compatibility alias for hpe_inspect_virtual_grid.

ParametersJSON Schema
NameRequiredDescriptionDefault
pdf_pathYes
page_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It only discloses that the tool is an alias, not whether it is read-only, what permissions it needs, how it handles errors, or what it actually inspects. Little behavioral context is added.

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?

A single sentence, front-loaded and free of filler. It is as short as possible while conveying the alias relationship.

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

Completeness2/5

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

With no annotations and no parameter descriptions, the definition is incomplete for an agent that must know how to call it. The output schema covers return values, but the description does not compensate for the missing input and behavioral context.

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

Parameters1/5

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

Schema description coverage is 0% and the description does not mention pdf_path or page_number at all. For two required parameters, the description adds no semantic meaning beyond the bare names already in the schema.

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

Purpose3/5

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

Description states the tool is an alias for hpe_inspect_virtual_grid, which identifies its relationship but not its actual operation; it does not specify what 'inspect geometry' does or what the inspection entails. It distinguishes from siblings by naming the canonical tool, but the functional purpose remains vague.

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?

'Backward compatibility alias' gives a clear context for when to use it (legacy compatibility) and implicitly points to hpe_inspect_virtual_grid as the modern alternative. No explicit exclusions or step-by-step conditions, but enough routing information for an agent.

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

hpe_inspect_virtual_gridB

Generate a temporary Virtual Excel Grid Inspector Image with Set-of-Marks (SoM) slot badges. This image overlays:

  • Top Excel column letters (A, B, C...)

  • Left Excel row numbers (1, 2, 3...)

  • Labeled slot pill badges: [S01], [S02], [S03]... on every detected blank, underline, or box. Returns JSON containing:

  • inspector_image_path: Path to the image (view it via view_file to visually inspect the layout!)

  • slots: Catalog of detected slots with tag, type, baseline, and Excel grid address (e.g. Col K, Row 9). NOTE: This is strictly a virtual guide for the agent's eyes; it does NOT alter the PDF!

ParametersJSON Schema
NameRequiredDescriptionDefault
dpiNo
pdf_pathYes
page_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it explicitly discloses that it is 'strictly a virtual guide for the agent's eyes; it does NOT alter the PDF', and it documents the returned fields (image path, slot catalog). It stops short of covering lifecycle concerns such as temporary-file cleanup or processing cost.

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 description is front-loaded and bullet-structured, with the artifact defined first, then overlays, then returns. Every line carries information, including the useful closing NOTE; it is slightly longer than strictly necessary but nothing is filler.

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

Completeness3/5

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

An output schema exists, so describing return values is a bonus rather than a requirement, and the read-only nature is well covered. The remaining hole is total silence on the three input parameters, which for a tool with no annotations leaves an avoidable gap before invocation.

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

Parameters2/5

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, and it adds essentially no parameter meaning: pdf_path, page_number, and dpi are never mentioned or explained. A caller gets no guidance on accepted path formats, valid page ranges, or how dpi affects the badge rendering.

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

Purpose4/5

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

The description states a specific verb and resource: 'Generate a temporary Virtual Excel Grid Inspector Image with Set-of-Marks (SoM) slot badges', and even enumerates the overlays it produces. It is clearly distinguishable from a plain render or a fill tool, though it never names a sibling (e.g. hpe_inspect_geometry) to sharpen the boundary.

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

Usage Guidelines3/5

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

Usage is only implied: it says to view the output via view_file 'to visually inspect the layout', which hints at a pre-fill inspection workflow. There is no explicit when-to-use vs hpe_inspect_geometry/hpe_snap_fill guidance, and no stated prerequisites or exclusions.

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

hpe_render_clean_verifyB

Render the final, clean PDF page (with answers, WITHOUT any grid or badges) to a high-resolution PNG image for visual QA before submission.

ParametersJSON Schema
NameRequiredDescriptionDefault
dpiNo
pdf_pathYes
page_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It usefully discloses the rendered content (answers rendered, grid and badges omitted) and output format/resolution, but says nothing about side effects, overwriting an existing image, or where the PNG is written. For a render/QA tool the risk is low, but the disclosure is partial.

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?

A single, front-loaded sentence with the key constraint (no grid or badges) placed early. The parenthetical is slightly cumbersome but earns its place by disambiguating the output content; nothing redundant remains.

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

Completeness3/5

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

With an output schema present, return values need not be described, and calling this tool is straightforward. Still, three parameters at 0% coverage and no annotation coverage means the definition is only minimally complete for anything beyond the happy path.

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

Parameters2/5

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

Schema description coverage is 0% and the description compensates for none of it: dpi (default 150) is only hinted at via 'high-resolution', and pdf_path and page_number are never explained (no path format, no zero-vs-one-based page numbering). An agent must guess the relationship between 'high-resolution' and the default dpi value.

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

Purpose4/5

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

States a specific verb and resource chain: render a PDF page to a high-resolution PNG. The parenthetical '(with answers, WITHOUT any grid or badges)' implicitly distinguishes it from the sibling hpe_render_verify, but the sibling is never named, so the differentiation is inferential rather than explicit.

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

Usage Guidelines3/5

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

The phrase 'for visual QA before submission' gives a clear purpose and timing cue, which is useful context. However, it never states when to prefer this over hpe_render_verify or the inspect_* tools, leaving the agent to infer the alternative from the word 'clean'.

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

hpe_render_verifyC

Backward compatibility alias for hpe_render_clean_verify.

ParametersJSON Schema
NameRequiredDescriptionDefault
dpiNo
pdf_pathYes
page_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, yet it only conveys behavioral equivalence to the canonical tool by implication. It discloses nothing about whether the call reads or writes, what it does to the filesystem, permission needs, or side effects.

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?

A single, front-loaded sentence with zero filler. For a pure alias, brevity is the right shape and nothing is padded.

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

Completeness2/5

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

An output schema exists so return values need not be described, but the description does nothing to compensate for zero annotation coverage and zero parameter documentation on a three-parameter tool. An agent still lacks everything needed to call it correctly beyond the alias pointer.

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

Parameters2/5

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

Schema description coverage is 0% and all three parameters (pdf_path, page_number, dpi) are undocumented in the schema. The description adds no parameter meaning; only the alias relationship weakly implies the same argument contract as the canonical tool, which an agent must infer.

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

Purpose3/5

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

The description identifies the tool as a backward-compatibility alias and names the canonical sibling it forwards to, which lets an agent place it in the family. However, it never states the actual operation (verifying a rendered PDF page), so the functional purpose is only recoverable by opening hpe_render_clean_verify.

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

Usage Guidelines3/5

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

Naming it a 'backward compatibility alias' implies when it would be called (legacy callers) and points at the canonical alternative. It does not explicitly say 'prefer hpe_render_clean_verify for new work' or state any exclusion, so the routing guidance is implied rather than stated.

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

hpe_snap_fillC

Backward compatibility alias for hpe_fill_slots.

ParametersJSON Schema
NameRequiredDescriptionDefault
pdf_pathYes
output_pathNo
page_numberYes
operations_jsonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: it does not say whether the alias is fully equivalent to hpe_fill_slots, whether it is deprecated, or whether output is identical. For an alias tool the key behavioral fact is the equivalence and deprecation status, and neither is stated.

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?

A single short sentence with no filler, and the alias relationship is front-loaded. It is efficient, though the brevity is partly under-specification rather than pure conciseness.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and as a thin alias the description is arguably adequate. Still, an agent deciding between this and hpe_fill_slots needs deprecation/equivalence guidance that is missing, and the 0%-documented parameters are unaddressed.

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

Parameters2/5

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

Schema description coverage is 0% across 4 parameters (pdf_path, output_path, page_number, operations_json), and the description adds no parameter meaning at all. The alias reference weakly implies the parameters mirror hpe_fill_slots, but that requires the agent to consult another tool's docs and is not stated.

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

Purpose3/5

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

"Backward compatibility alias for hpe_fill_slots" tells the agent this tool is a duplicate of a named sibling, which aids disambiguation, but it never states the actual verb+resource โ€” filling slots in a PDF page. The purpose is only inferable by looking up the canonical tool.

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

Usage Guidelines3/5

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

The word "alias" plus "backward compatibility" implicitly signals this is for legacy callers and that hpe_fill_slots is the preferred entry point, which is useful routing. However it never explicitly says "prefer hpe_fill_slots" or states whether this tool is deprecated or scheduled for removal.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.1.0
    • First observedhpe_fill_slots
    • First observedhpe_inspect_geometry
    • First observedhpe_inspect_virtual_grid
    • First observedhpe_render_clean_verify
    • First observedhpe_render_verify
    • First observedhpe_snap_fill

TDQS

B3.1/5.0

Scored across 6 tools

Disambiguation2/5

Three of the six tools (hpe_inspect_geometry, hpe_snap_fill, hpe_render_verify) are explicit backward-compatibility aliases that duplicate hpe_inspect_virtual_grid, hpe_fill_slots, and hpe_render_clean_verify respectively. An agent faces real ambiguity about which name to call, even though the descriptions confess the aliasing. Only three genuinely distinct purposes exist.

Naming Consistency5/5

Every tool uses the same hpe_ prefix and snake_case verb_noun convention (render_clean_verify, inspect_virtual_grid, fill_slots, inspect_geometry, snap_fill, render_verify). The pattern is predictable throughout with no style mixing.

Tool Count3/5

Six tools nominally sits in a healthy range, but half are redundant aliases, leaving an effective surface of only three distinct operations. That makes the set feel thin for the scope despite the raw count looking fine.

Completeness4/5

The core lifecycle is covered: inspect the virtual grid to find slots, fill slots with answers, and render a clean page for visual QA. Minor gaps exist (no PDF text extraction or batch/multi-page handling), but the primary workflow has no dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI-powered extraction and analysis of PDF documents with 40+ specialized tools for text, tables, images, layout analysis, security assessment, and document intelligence. Supports both text-based and scanned PDFs with OCR capabilities.
    273 PyPI
    10
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables deterministic visual and structural analysis of PDF and DOCX documents, extracting measurable evidence such as blur, OCR confidence, and image anomalies for auditable forensic workflows.
    1
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to extract structured data from PDFs with confidence scores and provenance, and to search, review, and correct documents via MCP tools, resources, and prompts.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Interactive PDF workspace shared by a human operator and an AI agent, enabling navigation, search, text extraction, annotations, form filling, and save actions via a PDF.js viewer.
    MIT