Precision PDF MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Precision PDF MCP Serverinspect the answer slots in /home/user/worksheet.pdf"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
๐ฏ 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.
๐ก 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-mcpMethod 2: Install via pip
pip install precision-pdf-mcpMethod 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_pdfor the$PRECISION_PDF_TEMP_DIRenvironment 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 toolshpe_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.
| Name | Required | Description | Default |
|---|---|---|---|
| pdf_path | Yes | ||
| output_path | No | ||
| page_number | Yes | ||
| slot_answers_json | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pdf_path | Yes | ||
| page_number | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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!
| Name | Required | Description | Default |
|---|---|---|---|
| dpi | No | ||
| pdf_path | Yes | ||
| page_number | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dpi | No | ||
| pdf_path | Yes | ||
| page_number | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dpi | No | ||
| pdf_path | Yes | ||
| page_number | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pdf_path | Yes | ||
| output_path | No | ||
| page_number | Yes | ||
| operations_json | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
6 tool updates
v0.1.0- First observed
hpe_fill_slots - First observed
hpe_inspect_geometry - First observed
hpe_inspect_virtual_grid - First observed
hpe_render_clean_verify - First observed
hpe_render_verify - First observed
hpe_snap_fill
TDQS
Scored across 6 tools
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.
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.
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.
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
Related MCP Connectors
Detect, review and fill existing PDF forms from JSON or Excel; reuse saved templates
Deterministic PDF tools for AI agents: inspect fields, fill forms, merge PDFs, invoices.
Verified OCR with per-value coordinates, plus a workspace agents can file documents into and query.
- iFillPDFOAuthcom.ifillpdf
Detect fillable fields in any PDF with AI, scans included, then fill and sign it.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables 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 PyPI10MIT
- FlicenseNot gradedqualityDmaintenanceEnables 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-
- FlicenseNot gradedqualityDmaintenanceEnables 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.-
- AlicenseNot gradedqualityCmaintenanceInteractive 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