Universal document ingestion engine. Converts any document into clean Markdown so you can read it. Handles PDF, Word, PowerPoint, Excel, HTML, EPUB, email, Jupyter notebooks, CSV/JSON, RTF, images and ZIP archives.
Papyrus demonstrates solid tool design with clear, action-oriented names (inspect_document, convert_document, convert_to_file, convert_to_chunks, list_directory) and comprehensive descriptions (150-250 chars each). All tools have documented input schemas with typed parameters and descriptions. However, output schemas are not explicitly documented in the visible code, and error handling guidance is minimal. The tool set is well-composed with clear single responsibilities and good parameter naming conventions. Parameter descriptions are detailed and include constraints (e.g., default values, ranges). Missing: explicit output schema documentation, error recovery guidance, and per-tool risk annotations in the MCP registration.
Read any document as Markdown. Structure is preserved: headings, tables, lists, code blocks, and page markers you can cite. Long documents are returned in slices — the footer tells you the exact call to make for the next one. For very large files prefer `convert_to_file`.
Convert a document and split it into embedding-ready chunks. Returns JSON Lines format with one chunk per line, each carrying its heading path and source page for citation.
Convert a file, or every file in a folder, and write the Markdown to disk instead of returning it. Returns a short receipt listing what was written. This is the right tool for large documents and for batches — it costs almost no context, and you can then read only the parts you need.
Identify a file and report what converting it would cost, without returning its text. Use this first when a file's type or size is unknown. Returns the detected format (from magic bytes, not the file extension), page/sheet/slide counts, word count, the size of the Markdown that conversion would produce, and any warnings.
List files in a directory with their sizes and detected formats. Useful for understanding what documents are available before converting them.
Output schemas not documented in tool definitions. LLMs cannot plan downstream operations or extract required fields without knowing response structure.
Error handling lacks recovery guidance. No indication of which errors are retryable, user-fixable, or fatal. Descriptions do not explain failure modes or next steps.
Tool annotations (readOnlyHint, destructiveHint) not visible in MCP registration. Risk field is documented in comments but not exposed to the protocol.
convert_document and convert_to_chunks lack explicit guidance on when to use one vs. the other. LLMs may struggle to choose between sliced text return vs. chunked JSON output.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
No pagination or result-limiting guidance for list_directory when recursive=true on large directory trees. Could return unbounded results.