Model Context Protocol server that wraps the PDFlow API, allowing AI agents to extract content from PDFs. Provides tools for uploading PDFs, extracting content in various formats, checking processing status, and retrieving extracted content.
PDFlow MCP server has 4 tools with mostly clear naming and descriptions, but exhibits critical gaps in schema completeness, parameter documentation, and error handling guidance. Tool names follow verb-noun convention well (pdflow_extract_pdf, pdflow_check_status, pdflow_get_results, pdflow_health_check), and descriptions are present for all tools and most parameters. However, input schemas lack type specifications for parameters, and output schemas are entirely undocumented. The primary tool (pdflow_extract_pdf) has a complex parameter set with enums and defaults but missing output schema documentation. Error recovery guidance is minimal, tools return status but don't guide agents on next steps when processing is async. Security checks for file path validation are present but not reflected in descriptions.
[OPTIONAL] Check the processing status of a PDF extraction session. Only needed if pdflow_extract_pdf returns "processing" status for large documents. Most PDFs complete immediately and return full content from pdflow_extract_pdf. Returns information about total pages, processed pages, and current status.
Extract structured content from a PDF file using AI-powered extraction. This is the primary tool - it handles the complete workflow: upload, conversion, extraction, and returns the full content. Supports multiple output formats: markdown, json, xml, html, yaml, mdx. Returns the complete extracted content directly - no need to call additional tools. Optionally saves the output to a local file if outputPath is provided. For very large documents, use pdflow_check_status and pdflow_get_results for async processing.
[OPTIONAL] Retrieve the extracted content from a completed session. Only needed if you want to re-fetch results or if content was too large to return inline. Most use cases get full content directly from pdflow_extract_pdf. Returns the actual extracted content as text.
Check if the PDFlow service is running and accessible. Use this to verify connectivity before attempting PDF extraction.
Output schemas completely undocumented. No documentation of what pdflow_extract_pdf returns (structure, fields, data types). LLMs cannot plan downstream operations or extract needed fields without seeing return schema.
Input parameter types missing from schema. pdfPath, sessionId, format parameters show descriptions but lack explicit 'type' field in JSON Schema (should be 'type': 'string'). Cannot properly validate inputs.
No error recovery guidance. Description states 'For very large documents, use pdflow_check_status and pdflow_get_results for async processing' but doesn't explain when/how the agent knows to call these tools or what status values trigger them. Missing pattern:recovery-guide.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | D | 52 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 19 | - | v1 |
pdflow_health_check has empty parameter schema (no properties, empty required array). Missing type declarations for all parameters across all tools.
No documentation of supported output formats in tool descriptions. pdflow_extract_pdf supports 'markdown, json, xml, html, yaml, mdx' (enum present) but pdflow_get_results description doesn't explain format options clearly or link to the primary tool.
Path validation security implemented in code (validateFilePath) but NOT surfaced in tool descriptions or parameter docs. User should understand file access restrictions, but descriptions don't explain the ALLOWED_DIRECTORIES security model.
outputPath parameter description mentions special values ('same', '.', './') but uses examples in description text rather than documenting them formally. LLMs may not consistently recognize these special values.