io.github.AryanBV/pdf-toolkit-mcp
NPM · @ARYANBV/PDF-TOOLKIT-MCP · SCANNED AUG 6
Write-capable PDF toolkit MCP: 22 tools to read, create, render, encrypt, merge & fill PDFs.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →
Supply Chain Security89
- No malware found by supply-chain analysis.Pass
- Known CVEs were checked across the 243 of 247 dependencies we could resolve, so this covers what we could see, not the whole tree.Partial
- No install/post-install scripts declared.Pass
- Dependency health was assessed across the 243 of 247 dependencies we could resolve, so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 68 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability83
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3068 tokens (~133/item across 23 items; 22 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · @aryanbv/pdf-toolkit-mcp
claude mcp add aryanbv-pdf-toolkit-mcp -- npx -y @aryanbv/pdf-toolkit-mcp
codex mcp add aryanbv-pdf-toolkit-mcp -- npx -y @aryanbv/pdf-toolkit-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"aryanbv-pdf-toolkit-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"@aryanbv/pdf-toolkit-mcp"
],
"enabled": true
}
}
} openclaw mcp add aryanbv-pdf-toolkit-mcp --command npx --arg -y --arg @aryanbv/pdf-toolkit-mcp
mcp_servers:
aryanbv-pdf-toolkit-mcp:
command: "npx"
args: ["-y", "@aryanbv/pdf-toolkit-mcp"] {
"mcpServers": {
"aryanbv-pdf-toolkit-mcp": {
"command": "npx",
"args": [
"-y",
"@aryanbv/pdf-toolkit-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 6 Aug 26 +32
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Schema quality: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- First check of Tool coverage: 100 functional
- First check of Schema quality: fail functional
- First check of Schema quality: excellent functional
- First check of Schema quality: fail functional
- 2 Aug 26 +15
- Provenance: unverified → fail ▼ security
- Known CVEs: unverified → partial ▲ security
- Install scripts: unverified → pass ▲ security
- Stability: Stability not yet verified: our sandbox run of this package did not complete, so we have no schema to compare. security
- Security disclosure: fail → unverified ▼ functional
- License: unverified → pass ▲ functional
- Dependency health: unverified → partial ▲ functional
- Maintenance: unverified → pass ▲ functional
- Schema quality: Schema quality not yet verified: our sandbox run of this package did not complete, so we have no schema to assess. functional
- Capabilities: Protocol version not yet verified: our sandbox run of this package did not complete, so we never saw its MCP handshake. functional
- Tool coverage: Tool coverage not yet verified: our sandbox run of this package did not complete, so we have no tool definitions to assess. functional
- Licence: MIT functional
- 1 Aug 26 +15
- Malware scan: unverified → pass ▲ security
- Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
- Tool coverage: Tool coverage not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet. functional
- Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. functional
- Capabilities: Protocol version not yet verified: we do not have a sandbox capture of the MCP handshake this version of the package performs yet. functional
- 31 Jul 26 −19
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 −3
- Security disclosure: unverified → fail ▼ functional
- Dependency health: partial → unverified ▼ functional
- Schema quality: Schema quality not yet verified: our sandbox run of this package did not complete, so we have no schema to assess. functional
- Tool coverage: Tool coverage not yet verified: our sandbox run of this package did not complete, so we have no tool definitions to assess. functional
- 28 Jul 26 +2
- Security disclosure: fail → unverified ▼ functional
- 27 Jul 26 25
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 6 Aug 2026 · Analysed npm/@aryanbv/[email protected]
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Dependencies 243 packages
| Packages resolved | 243 |
|---|---|
| Deprecated | 204 |
| Stale | 88 |
| No linked repository | 2 |
| Tree resolution | Partial |
The dependency tree was only partially resolved, so these counts may be incomplete.
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
pdf_add_page_numbers ~130
Add page numbers to a PDF. Supports configurable position, format, starting number, and font size.
| Name | Type | Req | Description |
|---|---|---|---|
| filePath | string | yes | Absolute path to the source PDF file |
| fontSize | number | — | Font size for page numbers (6–24). Defaults to 10. |
| format | string | — | Number format. Defaults to "Page X of Y". |
| outputPath | string | yes | Absolute path for the output PDF |
| position | string | — | Position of page numbers. Defaults to bottom-center. |
| startFrom | integer | — | Starting page number. Defaults to 1. |
No output schema declared.
No examples provided.
pdf_add_watermark ~201
Add a text watermark to PDF pages. Watermark is centered and rotated diagonally by default. Applies to all pages if no page range is specified.
| Name | Type | Req | Description |
|---|---|---|---|
| color | string | — | Watermark color. Defaults to gray. |
| filePath | string | yes | Absolute path to the source PDF file |
| fontSize | number | — | Watermark font size (10–200). Defaults to 50. |
| opacity | number | — | Watermark opacity (0.0–1.0). Defaults to 0.3. |
| outputPath | string | yes | Absolute path for the watermarked output PDF |
| pages | string | — | Page range, e.g. '1-5' or '1,3,5'. Omit to watermark all pages. |
| rotation | number | — | Watermark rotation in degrees (0–360). Defaults to 45 (diagonal). |
| text | string | yes | Watermark text to overlay on pages |
No output schema declared.
No examples provided.
pdf_compare ~167
Compare two PDFs page by page (by absolute page index) and report text differences. Returns identical:true when text matches. Diffs content-stream-order text (not visual reading order), so it is best for same-layout documents; reflowed or multi-column PDFs produce noisy diffs. Inserting/deleting a page shifts all later pages and reports them as changed. Large diffs are trimmed (truncated:true) to fit the response limit.
| Name | Type | Req | Description |
|---|---|---|---|
| filePathA | string | yes | Absolute path to the first (baseline) PDF file |
| filePathB | string | yes | Absolute path to the second (comparison) PDF file |
| pages | string | — | Page range to compare, e.g. '1-5' or '1,3,5'. Defaults to all pages. |
No output schema declared.
No examples provided.
pdf_create ~203
Create a new PDF from text content with automatic line wrapping and page overflow. Supports A4, Letter, and Legal page sizes. Provide fontPath for non-Latin text (Arabic, CJK, etc.).
| Name | Type | Req | Description |
|---|---|---|---|
| author | string | — | PDF document author metadata |
| content | string | yes | Text content for the PDF. Use \n for line breaks. |
| fontPath | string | — | Absolute path to a .ttf/.otf font file for non-Latin character support (Arabic, CJK, etc.). The built-in font is Latin-only. |
| fontSize | number | — | Font size in points (6–72). Defaults to 12. |
| margin | number | — | Page margin in points (0–500). Defaults to 50. |
| outputPath | string | yes | Absolute path for the output PDF file |
| pageSize | string | — | Page size. Defaults to A4. |
| title | string | — | PDF document title metadata |
No output schema declared.
No examples provided.
pdf_create_from_markdown ~120
Create a rich, high-fidelity PDF from Markdown (CommonMark + GFM). Supports headings, bold/italic, links, ordered/bullet lists, tables, fenced code blocks, blockquotes, and horizontal rules.
| Name | Type | Req | Description |
|---|---|---|---|
| author | string | — | PDF document author metadata |
| markdown | string | yes | Markdown content to render as PDF |
| outputPath | string | yes | Absolute path for the output PDF file |
| pageSize | string | — | Page size. Defaults to A4. |
| title | string | — | PDF document title metadata |
No output schema declared.
No examples provided.
pdf_create_from_template ~170
Create a polished PDF from a named template (invoice, report, or letter). Pass structured data matching the template's fields; data is validated against the template's schema.
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | yes | Template data. Invoice: companyName, clientName, invoiceNumber, invoiceDate, items[{description, quantity, unitPrice}], taxRate, currency (ISO code or symbol, default USD), dueDate, notes, paymentTer… |
| outputPath | string | yes | Absolute path for the output PDF file |
| templateName | string | yes | Template to use: invoice, report, or letter |
No output schema declared.
No examples provided.
pdf_delete_pages ~131
Delete specific pages from a PDF, keeping the rest in their original order. AcroForm fields on the remaining pages are preserved. Set flatten:true to bake field values into static content. Cannot delete every page.
| Name | Type | Req | Description |
|---|---|---|---|
| filePath | string | yes | Absolute path to the source PDF file |
| flatten | boolean | — | Flatten the resulting form: bake field values into static content and remove interactivity. Defaults to false. |
| outputPath | string | yes | Absolute path for the output PDF |
| pages | string | yes | Page range to DELETE, e.g. '2' or '1-3,5' |
No output schema declared.
No examples provided.
pdf_embed_image ~184
Embed a PNG or JPEG image into a specific page of a PDF. Supports custom positioning and optional scaling with aspect ratio preservation.
| Name | Type | Req | Description |
|---|---|---|---|
| filePath | string | yes | Absolute path to the source PDF file |
| height | number | — | Image height in points. Omit to use original height (or scale proportionally if width is set). |
| imagePath | string | yes | Absolute path to the PNG or JPEG image file |
| outputPath | string | yes | Absolute path for the output PDF |
| page | integer | yes | Target page number (1-indexed) |
| width | number | — | Image width in points. Omit to use original width (or scale proportionally if height is set). |
| x | number | yes | X position in points from the left edge of the page |
| y | number | yes | Y position in points from the bottom edge of the page |
No output schema declared.
No examples provided.
pdf_embed_qr_code ~176
Embed a QR code or barcode into a specific page of a PDF at given coordinates. Supports qrcode, code128, datamatrix, ean13, pdf417, and azteccode.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | Data to encode in the QR code or barcode |
| filePath | string | yes | Absolute path to the source PDF file |
| outputPath | string | yes | Absolute path for the output PDF |
| page | integer | yes | Target page number (1-indexed) |
| size | number | — | Size of the QR code/barcode in points. Defaults to 100. |
| type | string | — | Barcode type. Defaults to qrcode. |
| x | number | yes | X position in points from the left edge |
| y | number | yes | Y position in points from the bottom edge |
No output schema declared.
No examples provided.
pdf_encrypt ~100
Encrypt a PDF with AES-256 password protection. Requires a user password to open. Owner password controls editing permissions (defaults to the user password).
| Name | Type | Req | Description |
|---|---|---|---|
| filePath | string | yes | Absolute path to the source PDF file |
| outputPath | string | yes | Absolute path for the encrypted output PDF |
| ownerPassword | string | — | Password for editing permissions. Defaults to userPassword if omitted. |
| userPassword | string | yes | Password required to open the PDF |
No output schema declared.
No examples provided.
pdf_extract_text ~88
Extract text content from a PDF file. Returns first 10 pages by default to avoid exceeding LLM context limits. Use the 'pages' parameter for specific pages.
| Name | Type | Req | Description |
|---|---|---|---|
| filePath | string | yes | Absolute path to the PDF file |
| pages | string | — | Page range, e.g. '1-5' or '1,3,5'. Defaults to first 10 pages. |
No output schema declared.
No examples provided.
pdf_fill_form ~158
Fill form fields in a PDF. Supports text, checkbox, dropdown, radio, and list-box (multi-select) fields. Provide fontPath for non-Latin text (Arabic, CJK, etc.).
| Name | Type | Req | Description |
|---|---|---|---|
| fields | object | yes | Object mapping field names to values. Strings for text/dropdown/radio, booleans for checkboxes. |
| filePath | string | yes | Absolute path to the PDF file with form fields |
| flatten | boolean | — | Flatten form fields after filling (makes them non-editable). Defaults to false. |
| fontPath | string | — | Absolute path to a .ttf/.otf font file for non-Latin character support. |
| outputPath | string | yes | Absolute path for the filled output PDF |
No output schema declared.
No examples provided.
pdf_flatten ~66
Flatten a PDF's form fields, baking their current values into the page content and removing interactivity. Form-less PDFs are copied unchanged.
| Name | Type | Req | Description |
|---|---|---|---|
| filePath | string | yes | Absolute path to the source PDF file |
| outputPath | string | yes | Absolute path for the flattened output PDF |
No output schema declared.
No examples provided.
pdf_get_form_fields ~54
List all form fields in a PDF with their names, types, current values, and required status. Returns hasForm: false for PDFs without forms.
| Name | Type | Req | Description |
|---|---|---|---|
| filePath | string | yes | Absolute path to the PDF file |
No output schema declared.
No examples provided.
pdf_get_metadata ~48
Get metadata from a PDF file including title, author, subject, page count, creation/modification dates, and producer information.
| Name | Type | Req | Description |
|---|---|---|---|
| filePath | string | yes | Absolute path to the PDF file |
No output schema declared.
No examples provided.
pdf_merge ~110
Merge multiple PDF files into one. AcroForm fields are preserved; fields whose names collide across inputs are auto-renamed (namespaced by source). Set flatten:true to bake field values into static content.
| Name | Type | Req | Description |
|---|---|---|---|
| filePaths | array | yes | Array of absolute paths to PDF files to merge, in order |
| flatten | boolean | — | Flatten the merged form: bake field values into static content and remove interactivity. Defaults to false. |
| outputPath | string | yes | Absolute path for the merged output PDF |
No output schema declared.
No examples provided.
pdf_render_pages ~225
Render PDF pages to images so a vision-capable client can read scanned or image-only PDFs. Writes PNG/JPEG files and returns their paths; set inline:true to return image blocks the model can see directly.
| Name | Type | Req | Description |
|---|---|---|---|
| dpi | integer | — | Render resolution in DPI (36–300). Defaults to 150. |
| filePath | string | yes | Absolute path to the source PDF file |
| format | string | — | Output image format. Defaults to png. |
| inline | boolean | — | Return rendered pages as inline image blocks the model can see directly instead of writing files. Max 5 pages; DPI is auto-capped so neither dimension exceeds 1500px. Defaults to false. |
| outputDir | string | — | Directory for the output images: an absolute path is recommended; a relative path resolves against the server working directory. The directory must already exist. Defaults to the input PDF's director… |
| pages | string | — | Page range to render, e.g. '1-5,8'. Defaults to the first 50 pages. |
No output schema declared.
No examples provided.
pdf_reorder_pages ~168
Reorder pages in a PDF. Specify the new page order as a comma-separated string (e.g. '3,1,2'). Duplicates are allowed. AcroForm fields are preserved. Set flatten:true to bake field values into static content.
| Name | Type | Req | Description |
|---|---|---|---|
| filePath | string | yes | Absolute path to the source PDF file |
| flatten | boolean | — | Flatten the reordered form: bake field values into static content and remove interactivity. Defaults to false. |
| outputPath | string | yes | Absolute path for the reordered output PDF |
| pageOrder | string | yes | New page order as comma-separated 1-indexed numbers, e.g. '3,1,2,4' or '1,1,2' (duplicates allowed; up to 2000 pages) |
No output schema declared.
No examples provided.
pdf_rotate_pages ~130
Rotate pages in a PDF by 90, 180, or 270 degrees. Rotation is additive to any existing rotation. Rotates all pages if no page range is specified.
| Name | Type | Req | Description |
|---|---|---|---|
| degrees | number | yes | Rotation angle: 90, 180, or 270 degrees clockwise |
| filePath | string | yes | Absolute path to the source PDF file |
| outputPath | string | yes | Absolute path for the rotated output PDF |
| pages | string | — | Page range to rotate, e.g. '1-5' or '1,3,5'. Omit to rotate all pages. |
No output schema declared.
No examples provided.
pdf_search ~117
Search text across a PDF and return matches with a short surrounding snippet and the page number. The query is matched as a literal substring (case-insensitive by default). Searches all pages unless a range is given.
| Name | Type | Req | Description |
|---|---|---|---|
| caseSensitive | boolean | — | Match case exactly. Defaults to false. |
| filePath | string | yes | Absolute path to the PDF file |
| pages | string | — | Page range, e.g. '1-5'. Defaults to all pages. |
| query | string | yes | Literal text to find (matched as a substring) |
No output schema declared.
No examples provided.
pdf_split ~130
Extract specific pages from a PDF into a new file. AcroForm fields on the extracted pages are preserved; fields on omitted pages are dropped. Set flatten:true to bake field values into static content.
| Name | Type | Req | Description |
|---|---|---|---|
| filePath | string | yes | Absolute path to the source PDF file |
| flatten | boolean | — | Flatten the extracted form: bake field values into static content and remove interactivity. Defaults to false. |
| outputPath | string | yes | Absolute path for the output PDF |
| pages | string | yes | Page range to extract, e.g. '1-5' or '1,3,5' |
No output schema declared.
No examples provided.
pdf_to_markdown ~171
Convert a PDF to clean, reading-order Markdown for LLM consumption: reconstructs up to 2 content columns (plus full-width title/footer bands), infers headings from font size, and detects bullet/numbered lists. Pages with 3 or more columns fall back to single-column reading order. Tables are emitted as plain reading-order text, NOT reconstructed as Markdown tables. Best on clean, digital (text-based) PDFs; degrades on scanned/image-only PDFs (use pdf_render_pages for those) and very complex layouts. Returns the first 10 pages by default.
| Name | Type | Req | Description |
|---|---|---|---|
| filePath | string | yes | Absolute path to the PDF file |
| pages | string | — | Page range, e.g. '1-5' or '1,3,5'. Defaults to first 10 pages. |
No output schema declared.
No examples provided.