Skip to main content
Glama

papyrio-mcp

npm Listed on mcpservers.org Glama score

An MCP server for the Papyrio PDF API. Setup for Claude, Cursor and VS Code: papyrio.net/mcp. It lets an assistant compress, merge, OCR and convert PDFs on your own machine, reading and writing local files, so multi-step work does not mean uploading and downloading between every step.

OCR every scan in ~/invoices, merge them into one PDF, compress it under 5 MB

is four tool calls the assistant makes by itself.

Install

Claude Desktop, one click

Download papyrio-mcp.mcpb and double-click it. Claude Desktop opens an install screen; leave the API key empty for the free guest tier or paste a RapidAPI key (see below). You can change it later under Settings, Extensions.

By hand, or any other client

Add this to your Claude Desktop config:

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

{
  "mcpServers": {
    "papyrio": {
      "command": "npx",
      "args": ["-y", "papyrio-mcp"]
    }
  }
}

Restart Claude Desktop. The tools appear under the connector icon.

Related MCP server: quillpdf-mcp

API key

The server works without one, metered as ordinary free web traffic: three operations a day per IP address. Enough to see whether it is useful.

For real use, subscribe on RapidAPI and pass the key:

{
  "mcpServers": {
    "papyrio": {
      "command": "npx",
      "args": ["-y", "papyrio-mcp"],
      "env": { "PAPYRIO_API_KEY": "your-rapidapi-key" }
    }
  }
}

The free RapidAPI tier is 50 requests a month and needs no card.

Tools

Tool

Does

Writes

compress_pdf

Shrinks a PDF, 30–80% on image-heavy files

.pdf

merge_pdfs

Joins 2–10 PDFs in order

.pdf

split_pdf

Separates every page into its own file

.zip

extract_pdf_text

Returns the text layer as UTF-8

.txt

pdf_to_word

Rebuilds the document as an editable .docx

.docx

pdf_to_jpg

Renders every page as a JPG

.zip

ocr_pdf

Adds a searchable text layer to a scan; lang picks English, Russian, Spanish, Italian, Uzbek or Kazakh

.pdf

office_to_pdf

Word, PowerPoint or Excel to PDF

.pdf

image_to_pdf

Wraps a JPG, PNG or WebP in a PDF page

.pdf

webpage_to_pdf

Renders a public URL in a headless browser

.pdf

protect_pdf

Encrypts with AES-256

.pdf

unlock_pdf

Removes a password you already know

.pdf

Every tool takes absolute paths. output_path is optional and defaults to the input name with a -papyrio suffix — except webpage_to_pdf, which has no input file to derive a name from and so requires it.

Adding a tool

Add an entry to src/tools.ts. The MCP tool, its input schema and the HTTP call are all generated from it.

Testing

npm run build
PAPYRIO_API_KEY=your-key node smoke.mjs

Drives all twelve tools over the real MCP protocol against the live API and checks the returned file's magic bytes, so a JSON error body named .pdf fails rather than passes. Without a key it runs on the guest tier, where three operations a day means most cases will hit rate_limit_exceeded.

Develop

npm install
npm run build

Point your config at the local build while working on it:

{
  "mcpServers": {
    "papyrio": {
      "command": "node",
      "args": ["/absolute/path/to/mcp/dist/index.js"]
    }
  }
}

Privacy: files are sent to the Papyrio API, processed in memory, and discarded when the response is sent. Nothing is stored.

Licence

MIT

Available Tools

12 tools
compress_pdfA

Shrink a PDF by downsampling its images. Image-heavy files lose 30-80% of their size; text stays selectable. Use this when a PDF is too large to email or upload. Already-optimized files come back unchanged rather than larger. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

NameRequiredDescriptionDefault
fileYesAbsolute path to the PDF to compress.
levelNoCompression strength. low keeps images at 300 DPI, medium at 150, high at 72.medium
output_pathNoAbsolute path to write the result to. Defaults to the input file with a "-papyrio.pdf" suffix.

TDQS

A4.7/5.0
Behavior5/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 it well: overwrite semantics on output_path, the return value (path plus size in bytes), the 50 MB input cap, quota consumption per call, in-memory processing with no storage, and the no-op behavior for already-optimized inputs.

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?

Five short sentences, front-loaded with the action and effect, then the use case, then operational constraints. No sentence is filler and the ordering follows what an agent needs before deciding to call.

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

Completeness5/5

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

No output schema exists, and the description still explains exactly what comes back (path and byte size). Size limit, quota cost, overwrite risk and storage behavior are all covered, leaving nothing an agent would need to infer before calling.

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

Parameters4/5

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

Schema coverage is 100% so the schema already explains file, level and output_path. The description adds real value on top, spelling out that output_path replaces any existing file and defaulting behavior, and tying level indirectly to the quality/size tradeoff.

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

Purpose5/5

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

States a specific verb and resource ('Shrink a PDF') plus the mechanism (image downsampling), and notes text stays selectable. This clearly separates it from conversion/extraction siblings like extract_pdf_text or pdf_to_jpg, none of which compress.

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?

Gives an explicit trigger case ('when a PDF is too large to email or upload') and notes already-optimized files are returned unchanged, which heads off a wasteful retry. It doesn't name an alternative tool or an exclusion condition, but no sibling covers compression, so the guidance is effectively complete.

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

extract_pdf_textA

Return the text of a PDF as UTF-8, so it can be read or summarized. Fast and exact when the PDF already has a text layer. A scanned PDF has none — run ocr_pdf on it first. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

NameRequiredDescriptionDefault
fileYesAbsolute path to the PDF.
output_pathNoAbsolute path to write the result to. Defaults to the input file with a "-papyrio.txt" suffix.

TDQS

A4.9/5.0
Behavior5/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 so thoroughly: it discloses the upload to the Papyrio API, in-memory processing with no storage, an overwrite of output_path (a destructive side effect), the return payload (path and byte size), a 50 MB limit, and per-call quota consumption. This is exactly the behavioral context an agent needs before committing.

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?

Five tight sentences, front-loaded with the core action and immediately followed by the scanned-PDF caveat. Each sentence conveys distinct, operationally relevant information with no padding.

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

Completeness5/5

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

For a two-parameter tool with no output schema, the description still explains the return value (path and byte size in bytes) and covers safety, limits, and quota. An agent has everything needed to call it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so both parameters are already documented and the baseline is 3. The description adds genuine value beyond the schema by warning that output_path replaces any existing file and that the result is written to that path, which the schema does not state.

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

Purpose5/5

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

States a specific verb and resource ('Return the text of a PDF as UTF-8') plus the downstream intent (read or summarize). It explicitly distinguishes itself from the sibling ocr_pdf, so an agent can route correctly without opening either schema.

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

Usage Guidelines5/5

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

Gives an explicit condition for use ('when the PDF already has a text layer'), an explicit exclusion ('A scanned PDF has none'), and names the alternative to run first ('run ocr_pdf on it first'). Nothing is left to inference.

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

image_to_pdfA

Wrap a JPG, PNG or WebP image in a PDF page. Use this when an image needs to be submitted or printed as a PDF. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

NameRequiredDescriptionDefault
fileYesAbsolute path to the image.
output_pathNoAbsolute path to write the result to. Defaults to the input file with a "-papyrio.pdf" suffix.

TDQS

A4.7/5.0
Behavior5/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: it discloses data handling (uploaded to the API, processed in memory, not stored), destructive overwrite of output_path, the 50 MB input limit, and per-call quota consumption. It also states exactly what the call returns.

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?

Four short sentences, front-loaded with purpose then usage, then behavior and limits. No sentence is redundant; each conveys a distinct operationally useful fact.

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

Completeness5/5

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

For a two-parameter conversion tool with no annotations and no output schema, the description covers everything an agent needs: input formats, size cap, storage behavior, overwrite risk, return value, and quota impact.

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

Parameters4/5

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

Schema coverage is 100%, so both parameters are already documented. The description still adds real semantics beyond the schema by stating that output_path is overwritten if a file already exists, which the schema does not say.

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

Purpose5/5

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

States a specific verb and resource ('wrap a JPG, PNG or WebP image in a PDF page') and names the accepted input formats. It is clearly distinguishable from sibling conversions like office_to_pdf, webpage_to_pdf, and the reverse pdf_to_jpg.

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?

Gives a clear usage condition: 'Use this when an image needs to be submitted or printed as a PDF.' It does not explicitly exclude alternatives (e.g. when to prefer office_to_pdf for a document), but the image-format scoping makes the selection obvious in practice.

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

merge_pdfsA

Combine 2 to 10 PDFs into one document, in the order given. Use this to join separate scans, chapters or invoices into a single file. Password-protected files must be unlocked first. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

NameRequiredDescriptionDefault
filesYesAbsolute paths to the PDFs, in the order they should appear.
output_pathNoAbsolute path to write the result to. Defaults to the input file with a "-papyrio.pdf" suffix.

TDQS

A4.7/5.0
Behavior5/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 so: it discloses upload to the Papyrio API, in-memory processing with no storage, an overwrite of any existing file at output_path, the 50 MB input cap, and quota consumption. The destructive overwrite warning is especially valuable since no annotations flag it.

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?

Five tight sentences, front-loaded with the core action and scope, followed by prerequisites, privacy, side effects, and limits. Every sentence carries distinct information with no repetition of the schema.

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

Completeness5/5

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

Although there is no output schema, the description states the return value (path and size in bytes), covers side effects, size limits, and quota cost. An agent has everything needed to invoke this correctly on the first try.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: it reinforces that file order determines output order and that output_path replaces any existing file. It does not otherwise elaborate on path formats, but the added overwrite semantics are real value.

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

Purpose5/5

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

Opens with a specific verb and resource ("Combine 2 to 10 PDFs into one document") plus a scope constraint (order preserved, count bounded). It is clearly distinguishable from siblings like split_pdf or extract_pdf_text without needing the schema.

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?

Gives concrete use cases (scans, chapters, invoices) and an explicit prerequisite: password-protected files must be unlocked first, which implicitly routes to unlock_pdf. It does not explicitly name alternatives or state when not to use it, but the context is clear.

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

ocr_pdfA

Add an invisible text layer to a scanned PDF so its text can be searched, selected and extracted. Use this before extract_pdf_text or pdf_to_word on a scan or photographed document, and set lang when the text is not English. The page images are kept, so the output is about the same size as the input, and pages that already have text are left untouched. Takes roughly 2-10 seconds per page. Scans at 300 DPI or higher read well; below 150 DPI accuracy degrades badly. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

NameRequiredDescriptionDefault
fileYesAbsolute path to the scanned PDF.
langNoLanguage of the document's text as a Tesseract code: eng (English), rus (Russian), spa (Spanish), ita (Italian), uzb (Uzbek, Latin script), uzb_cyrl (Uzbek, Cyrillic) or kaz (Kazakh). For mixed documents join two with '+', for example rus+eng. Any other value is rejected. Defaults to eng.eng
output_pathNoAbsolute path to write the result to. Defaults to the input file with a "-papyrio.pdf" suffix.

TDQS

A4.8/5.0
Behavior5/5

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

No annotations exist, so the description carries the full burden and does so richly: page images preserved and output size similar to input, already-texted pages untouched, 2-10s per page runtime, DPI thresholds for accuracy, upload to the Papyrio API processed in memory and not stored, overwrite of output_path, return value, 50 MB input cap, and one-operation quota 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?

Purpose and the ordering instruction are front-loaded, and every sentence carries operational information (limits, timing, DPI, privacy, return value). It is on the dense side with several clauses per sentence, but no sentence is filler.

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

Completeness5/5

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

There is no output schema, and the description compensates by stating exactly what is returned ('that path and the size in bytes'). Given the simple three-parameter schema and full behavioral disclosure, an agent has everything needed to invoke this correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description adds value beyond the schema by giving the conditional rule for lang ('when the text is not English') and by flagging that output_path replacement overwrites existing files. It stops short of elaborating the '+' language-joining syntax, which the schema already covers.

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

Purpose5/5

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

Specific verb+resource ('Add an invisible text layer to a scanned PDF') with the outcome stated (searchable, selectable, extractable text). It is clearly distinguishable from every sibling, since none of the other tools operate on a scan to produce an OCR layer.

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

Usage Guidelines5/5

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

Explicitly says to use this before extract_pdf_text or pdf_to_word on a scan or photographed document, and adds the conditional 'set lang when the text is not English'. Both the when-to-use and the ordering relative to alternatives are stated.

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

office_to_pdfA

Convert a Word (.doc, .docx, .odt), PowerPoint (.ppt, .pptx) or Excel (.xls, .xlsx) document to PDF with LibreOffice, keeping fonts, tables, images and page layout; each slide or sheet becomes one or more pages. Use this to turn an Office file into a fixed, shareable PDF, not for files that are already PDFs. Large presentations can take 30 seconds or more. Password-protected Office files are not supported. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

NameRequiredDescriptionDefault
fileYesAbsolute path to the Office document. The extension decides how it is read, so it must be one of .doc, .docx, .odt, .ppt, .pptx, .xls or .xlsx.
output_pathNoAbsolute path to write the result to. Defaults to the input file with a "-papyrio.pdf" suffix.

TDQS

A4.8/5.0
Behavior5/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: it discloses latency ('30 seconds or more'), the privacy model (uploaded to the Papyrio API, processed in memory, not stored), destructive behavior (output_path is replaced if it exists), the return value (path and size in bytes), a 50 MB input cap, and per-call quota consumption.

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?

Single dense block, front-loaded with the verb and supported formats, with constraints following. Nearly every clause carries actionable information, though the privacy and quota details could be split more cleanly for scanning.

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

Completeness5/5

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

For a two-parameter conversion tool with no output schema, everything an agent needs is present: accepted formats, output destination behavior, size limit, failure mode (encrypted files), runtime expectations, and the shape of the return value.

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

Parameters4/5

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

Schema coverage is already 100%, so the baseline is 3; the description adds meaning beyond it by explaining that output_path is overwritten and that the resolved path is returned, and by noting the extension drives parsing. It does not restate the default suffix logic, but that is fully covered in the schema.

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

Purpose5/5

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

States a specific verb and resource ('Convert a Word (.doc, .docx, .odt), PowerPoint ... or Excel ... document to PDF') with all supported extensions and the engine used. It is clearly distinguishable from siblings such as pdf_to_word (reverse direction) and image_to_pdf/webpage_to_pdf (different sources).

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

Usage Guidelines5/5

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

Explicitly gives the use case ('turn an Office file into a fixed, shareable PDF') and an exclusion ('not for files that are already PDFs'), plus a hard constraint that password-protected Office files are not supported. No alternatives need inferring.

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

pdf_to_jpgA

Render every page of a PDF as a JPG image, returned as a ZIP archive. Use this when the pages are needed as pictures, for a thumbnail, a slide or an image pipeline. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

NameRequiredDescriptionDefault
fileYesAbsolute path to the PDF.
output_pathNoAbsolute path to write the result to. Defaults to the input file with a "-papyrio.zip" suffix.

TDQS

A4.7/5.0
Behavior5/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: 50 MB input cap, per-call quota cost, in-memory processing with no storage, and destructive overwrite of output_path. These are exactly the operational facts an agent needs before invoking.

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?

Four tight sentences: what it does first, then when to use it, then storage/safety behavior, then limits and return value. No filler.

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

Completeness5/5

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

No output schema, but the description states the return shape (path and byte size), plus limits, overwrite semantics, and processing model — everything needed to call it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so baseline would be 3. The description adds value beyond the schema by disclosing that output_path is overwritten if it exists and by describing the return payload (path plus size in bytes), which the schema lacks.

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

Purpose5/5

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

States a specific verb and resource: render every page of a PDF as JPG, returned as a ZIP. The output format detail (ZIP of JPGs) clearly separates it from extract_pdf_text, ocr_pdf, and pdf_to_word.

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?

Gives explicit use cases — thumbnail, slide, image pipeline — which implies when to pick this over text-extraction siblings. It does not name an alternative tool or state exclusions, so it stops short of a 5.

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

pdf_to_wordA

Convert a PDF into an editable Word document. PDFs exported from Word, Google Docs or InDesign come through well. A scanned PDF is a picture of a page, so run ocr_pdf on it first. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

NameRequiredDescriptionDefault
fileYesAbsolute path to the PDF.
output_pathNoAbsolute path to write the result to. Defaults to the input file with a "-papyrio.docx" suffix.

TDQS

A4.8/5.0
Behavior5/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: it discloses the upload destination (Papyrio API), that processing is in-memory and non-persistent, that output_path is overwritten destructively, the 50 MB input cap, and that each call consumes one unit of daily quota. These are exactly the operational facts an agent cannot infer elsewhere.

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 purpose and the scanned-PDF caveat before operational details, and nearly every sentence adds distinct information. It is dense but not padded; one could argue the privacy sentence and quota sentence are separable, but both are load-bearing for agent behavior.

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

Completeness5/5

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

Given no annotations and no output schema, the description covers safety (overwrite), limits (50 MB, quota), data handling, failure-mode routing (scanned PDFs), and return shape. An agent has everything needed to call it correctly and to know when to call ocr_pdf instead.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds value the schema does not: it explains that the result is written to output_path and that any existing file there is replaced, clarifying the destructive side effect of that parameter. It also states the call returns the path and byte size, which compensates for the absence of an output schema.

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

Purpose5/5

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

States a specific verb and resource ('Convert a PDF into an editable Word document') and immediately distinguishes itself from pdf_to_jpg, extract_pdf_text, and office_to_pdf by naming the output format. The routing sentence about scanned PDFs further separates its domain from ocr_pdf.

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

Usage Guidelines5/5

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

Gives explicit when-it-works conditions (Word, Google Docs, InDesign exports) and an explicit when-not plus alternative ('A scanned PDF is a picture of a page, so run ocr_pdf on it first'). This is exactly the agent routing signal that matters when ten sibling conversion tools exist.

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

protect_pdfA

Encrypt a PDF with AES-256 so it cannot be opened without the password. Use this before sending a document that contains anything private. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

NameRequiredDescriptionDefault
fileYesAbsolute path to the PDF to encrypt.
passwordYesPassword that will be required to open the resulting PDF.
output_pathNoAbsolute path to write the result to. Defaults to the input file with a "-papyrio.pdf" suffix.

TDQS

A4.7/5.0
Behavior5/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 so well: it says the input is uploaded to the Papyrio API, processed in memory and not stored, that output_path is overwritten (a destructive side effect the schema does not flag), the return value shape, the 50 MB input limit, and per-call quota consumption.

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?

Four sentences, each carrying distinct new information (purpose, trigger, data handling, side effects/limits), with the core action stated first and zero filler.

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

Completeness5/5

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

No output schema exists, so the description supplies the return value itself, and it covers the destructive overwrite, privacy handling, size cap, and quota. For a 3-parameter encryption tool this is complete enough to call correctly without guessing.

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

Parameters4/5

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

Schema description coverage is 100%, so a baseline of 3 is warranted, but the description adds real meaning beyond the schema by disclosing that output_path replaces any existing file and that the call returns the path and byte size. It doesn't discuss password strength requirements, a minor omission.

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

Purpose5/5

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

States a specific verb and resource ('Encrypt a PDF with AES-256') along with the concrete effect: the file cannot be opened without a password. This is instantly distinguishable from sibling tools such as unlock_pdf or compress_pdf.

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?

Gives a clear usage trigger: 'Use this before sending a document that contains anything private.' That tells an agent when to reach for it, though it never names unlock_pdf or other alternatives as the opposite operation, so the alternative framing is only implicit.

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

split_pdfA

Separate every page of a PDF into its own file, returned as a ZIP archive. Use this to pull single pages out of a long document. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

NameRequiredDescriptionDefault
fileYesAbsolute path to the PDF to split.
output_pathNoAbsolute path to write the result to. Defaults to the input file with a "-papyrio.zip" suffix.

TDQS

A4.7/5.0
Behavior5/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 so thoroughly: it discloses that input is uploaded to the Papyrio API, processed in memory and not stored, that output_path overwrites any existing file, the 50 MB size limit, and that each call consumes one daily-quota operation. It also states the return payload (path and size in bytes).

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?

The output format and use case are front-loaded, followed by privacy, side effects, limits, and return value in tight sentences. No sentence is filler; the density is high but every clause carries information an agent needs.

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

Completeness5/5

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

For a two-parameter tool with no output schema, the description covers purpose, when to use, side effects, privacy, limits, quota cost, and return shape. Nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already defines both parameters. The description goes beyond it by explaining the overwrite behavior of output_path and the shape of the return value, adding operational meaning rather than repeating the schema.

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

Purpose5/5

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

The description opens with a specific verb and resource ('Separate every page of a PDF into its own file, returned as a ZIP archive'), which clearly distinguishes it from siblings like merge_pdfs (the inverse operation) and extract_pdf_text.

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?

'Use this to pull single pages out of a long document' gives a clear use case, and the ZIP output clarifies the deliverable. However, it never explicitly names an alternative (e.g., extract_pdf_text when you only need text) or states when not to use it, so the routing is implied rather than spelled out.

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

unlock_pdfA

Remove the password from a PDF you already know the password for. This decrypts with the supplied password; it does not break or guess encryption. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

NameRequiredDescriptionDefault
fileYesAbsolute path to the password-protected PDF.
passwordYesThe PDF's current password.
output_pathNoAbsolute path to write the result to. Defaults to the input file with a "-papyrio.pdf" suffix.

TDQS

A4.7/5.0
Behavior5/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 so: it discloses the upload to the Papyrio API, in-memory processing with no retention, the destructive overwrite of output_path, a 50 MB input cap, and per-call quota consumption. This is exactly the behavioral context an agent needs before invoking a mutation tool.

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?

Five sentences, front-loaded with the action and its constraint, then storage/limit details, then output behavior. Every sentence conveys a distinct operational fact with no restatement of the tool name or title.

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

Completeness5/5

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

For a 3-parameter tool with no annotations and no output schema, the description covers the security model, data handling, size limit, quota cost, overwrite behavior, and return values. Nothing an agent needs to decide or call correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description goes further by explaining that output_path silently replaces an existing file and by describing the result path and byte size returned. That adds real semantics not present in the schema, particularly the overwrite risk.

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

Purpose5/5

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

States a specific verb+resource ('Remove the password from a PDF') and immediately bounds the scope with 'you already know the password' plus an explicit exclusion ('does not break or guess encryption'). That cleanly separates it from the sibling protect_pdf and from any cracking-style tool.

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?

The precondition for use ('a PDF you already know the password for') and the negative case ('does not break or guess encryption') are stated explicitly. It doesn't name a sibling as an alternative for the unsupported case, which keeps it just short of a 5.

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

webpage_to_pdfA

Fetch a public URL and render the page to PDF in a headless browser. Use this to archive or print a web page. This tool takes a URL rather than a file, so output_path is required. The input is uploaded to the Papyrio API, processed in memory and not stored. The result is written to output_path, replacing any file already there, and the call returns that path and the size in bytes. Inputs are limited to 50 MB, and each call counts as one operation against the daily quota.

NameRequiredDescriptionDefault
urlYesPublicly reachable page URL, including https://.
output_pathYesAbsolute path to write the .pdf result to. Required for this tool.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and does so thoroughly: it discloses headless-browser rendering, upload to the Papyrio API, in-memory processing with no storage, overwriting output_path, returned path and size, a 50 MB input limit, and quota consumption. These details cover side effects, data handling, output, and constraints beyond what the schema or annotations provide.

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?

The description is front-loaded with purpose, then usage, parameter rationale, behavior, and limits. Every sentence adds relevant operational information without repetition or wasted framing.

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

Completeness5/5

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

For a two-parameter tool with no annotations and no output schema, the description is complete: it explains what the tool does, when to use it, how inputs are processed, where output is written, what is returned, and relevant limits. No critical agent-facing context appears to be missing.

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

Parameters4/5

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

Schema coverage is already 100%, so the baseline is 3. The description adds useful meaning by explaining why output_path is required for this URL-based tool and by noting that output_path will be overwritten if a file already exists.

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

Purpose5/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: fetch a public URL and render the page to PDF in a headless browser. It distinguishes the tool from PDF-oriented siblings by clarifying that it takes a URL rather than a file, so an agent can identify it without opening another schema.

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?

It gives clear usage context with 'Use this to archive or print a web page' and reinforces the URL-versus-file distinction. It does not explicitly name alternative sibling tools such as image_to_pdf or office_to_pdf, so it stops short of fully explicit routing guidance.

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. 2 tool updatesv0.1.4
    • Changedocr_pdf1 field changed
      • addedInput schema / properties / lang
        Added value: +{
        +  "default": "eng",
        +  "description": "Language of the document's text as a Tesseract code: eng (English), rus (Russian), spa (Spanish), ita (Italian), uzb (Uzbek, Latin script), uzb_cyrl (Uzbek, Cyrillic) or kaz (Kazakh). For mixed documents join two with '+', for example rus+eng. Any other value is rejected. Defaults to eng.",
        +  "type": "string"
        +}
    • Changedoffice_to_pdf1 field changed
      • changedInput schema / properties / file / description
        Previous value: -"Absolute path to the Office document."New value: +"Absolute path to the Office document. The extension decides how it is read, so it must be one of .doc, .docx, .odt, .ppt, .pptx, .xls or .xlsx."
  2. 12 tool updatesv0.1.3
    • First observedcompress_pdf
    • First observedextract_pdf_text
    • First observedimage_to_pdf
    • First observedmerge_pdfs
    • First observedocr_pdf
    • First observedoffice_to_pdf
    • First observedpdf_to_jpg
    • First observedpdf_to_word
    • First observedprotect_pdf
    • First observedsplit_pdf
    • First observedunlock_pdf
    • First observedwebpage_to_pdf

TDQS

A4.6/5.0

Scored across 12 tools

Disambiguation5/5

Each tool targets a distinct operation: conversion (pdf_to_jpg, pdf_to_word, office_to_pdf, image_to_pdf, webpage_to_pdf), manipulation (split, merge, compress), security (protect/unlock), and text (extract_pdf_text, ocr_pdf). The pair extract_pdf_text/ocr_pdf could seem close, but descriptions clearly explain OCR produces a text layer while extract retrieves existing text. No real overlap.

Naming Consistency4/5

Most names follow a clear source_to_target or verb_noun convention (pdf_to_word, office_to_pdf, split_pdf, merge_pdfs). There are two styles mixed—conversion names use X_to_Y while manipulation names use verb_pdf—but both are readable and the pattern is semantically meaningful. Only ocr_pdf is an outlier.

Tool Count5/5

12 tools is well within the ideal 3-15 range and each earns its place, covering conversion, manipulation, security and text extraction without redundancy. The count matches the scope of a focused PDF-utility API.

Completeness4/5

Core workflows are well covered: convert in/out, extract, OCR, split/merge, compress, protect/unlock. Minor gaps remain—no page rotation/reordering, no PDF-to-Excel/PPT, no watermarking or image extraction—but agents can work around these for most tasks.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables PDF file manipulation including merging, splitting, extracting pages, extracting text, excluding pages, and reordering pages.
    17 npm
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    A local-first PDF tool for merging, splitting, rotating, watermarking, Bates-numbering, cleaning metadata, and counting pages — all operations happen on your machine with no network transmission.
    15
    13 npm
    1
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to perform comprehensive PDF operations locally, including compression, text extraction, PII redaction, page organization, splitting, merging, watermarking, creation, and form filling, all without cloud uploads.
    7 npm
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Remote MCP server exposing 24 PDF operations over Streamable HTTP that accept public file URLs up to 100 MB and return a download link, enabling conversion to and from PDF, compression, merging and splitting, OCR (including Russian), page manipulation, signing, watermarking, and password protection, plus balance checks. It also ships alongside an agent skill that lets file-on-disk workflows run against the same REST API.
    MIT