A stdio MCP server wrapping the aspose-pdf-foss-for-go PDF library, providing tools for PDF manipulation including text extraction, rendering, merging, splitting, encryption, form handling, and content addition.
20 tools with consistent verb_noun naming (pdf_*). All have descriptions (avg ~100 chars, baseline 194). Input schemas present with typed parameters and descriptions. However, output schemas are NOT documented in the source, only inferred from test assertions. Parameter descriptions lack format constraints (e.g., no enum for 'format' in pdf_render_page, no min/max for numeric params like 'dpi', 'page'). Error handling is basic (tool errors reported but no recovery guidance). No tool annotations (readOnlyHint, destructiveHint). Risk classifications visible in metadata but not exposed to LLM. Missing idempotency guarantees and confirmation patterns for destructive ops (delete_pages, decrypt, encrypt).
Add an image to a PDF page at a specified rectangle
Add a table to a PDF page with customizable styling and layout
Add text to a PDF page with customizable font, size, color, and alignment
Impose a PDF as a saddle-stitch booklet with optional custom spread dimensions
Convert a PDF to PDF/A format with specified conformance level
Create a new PDF document with specified page format and count
Remove encryption from a PDF file
Output schemas not documented. Tool descriptions state what is returned (e.g., 'page_count', 'valid': true) but no formal schema is visible in source. LLMs cannot plan downstream calls or extract fields reliably.
Numeric parameters lack min/max constraints. 'dpi' in pdf_render_page, 'page' in pdf_add_text, 'font_size' in pdf_add_table have no documented bounds. LLMs may pass absurd values (dpi=999999, page=0, font_size=-10).
Enum parameters not declared. 'format' in pdf_render_page (png|jpeg), 'level' in pdf_convert_pdfa (pdfa-1b|pdfa-2b|...), 'shape' in pdf_draw (line|rectangle|circle|ellipse) are free-form strings. Should be JSON Schema enums.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
Delete specified pages from a PDF document
Draw shapes (line, rectangle, circle, ellipse) on a PDF page with customizable styling
Encrypt a PDF with user and/or owner passwords using specified algorithm
Extract specified pages from a PDF into a new document
Extract text content from a PDF file, optionally from specific pages
Fill form fields in a PDF with specified values, optionally flattening the form
Flatten form fields in a PDF into static page content
List all form fields in a PDF with their types, values, and properties
Get information about a PDF file including page count and other metadata
Merge multiple PDF files into a single document
Render a PDF page to an image file (PNG or JPEG)
Split a PDF into individual page files
Validate a PDF file for conformance and issues
Destructive operations lack confirmation or dry-run. pdf_delete_pages, pdf_decrypt, pdf_encrypt, pdf_flatten are irreversible but have no confirmation step or preview mode. Agents can accidentally destroy data.
Tool annotations missing. No readOnlyHint, destructiveHint, or idempotentHint in tool definitions. LLMs cannot distinguish safe reads from destructive writes without parsing descriptions.