Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

pdfnative MCP — PDF generation, PAdES signing & introspection

NPM · PDFNATIVE-MCP · SCANNED SEP 20

PDF MCP server: generate PDF/A, sign & verify PAdES (LTV), forms, merge, split, encrypt. 28 tools

Available components

−1 this week 93 Trust /100
Trust breakdown (7 categories)

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 → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 0 of 4 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to Nizoka/pdfnative-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 27 days ago).Pass
  • Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability72
  • 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 19177 tokens (~684/item across 28 items; 28 tools + 0 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 Management93
  • Stability observed for 28 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
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
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 29 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the pdfnative MCP — PDF generation, PAdES signing… server?

pdfnative MCP — PDF generation, PAdES signing… runs locally as an npm package, launched with npx -y pdfnative-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · pdfnative-mcp

# add to Claude Code
claude mcp add nizoka-pdfnative-mcp -- npx -y pdfnative-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "nizoka-pdfnative-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "pdfnative-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "nizoka-pdfnative-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "pdfnative-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add nizoka-pdfnative-mcp -- npx -y pdfnative-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "nizoka-pdfnative-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "pdfnative-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add nizoka-pdfnative-mcp --command npx --arg -y --arg pdfnative-mcp
# ~/.hermes/config.yaml
mcp_servers:
  nizoka-pdfnative-mcp:
    command: "npx"
    args: ["-y", "pdfnative-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "nizoka-pdfnative-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "pdfnative-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add nizoka-pdfnative-mcp -t stdio -c npx -a -y pdfnative-mcp
// mcp.json
{
  "mcpServers": {
    "nizoka-pdfnative-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "pdfnative-mcp"
      ]
    }
  }
}
Changelog

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.

  • 20 Sept 26 −1
    • Security disclosure: pass → unverified functional
  • 19 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 17 Sept 26 −2
    • Stability: pass → 0.83 functional
  • 16 Sept 26 +1
    • Stability: 0.97 → pass security
    • Security disclosure: unverified → pass functional
  • 15 Sept 26 0
    • Security disclosure: pass → unverified functional
  • 13 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 11 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

  • 10 Sept 26 −3
    • Stability: pass → 0.80 functional
Diagnostics

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 20 Sept 2026 · Analysed npm/pdfnative-mcp@1.6.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo Nizoka/pdfnative-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/Nizoka/pdfnative-mcp/.github/workflows/publish.yml@refs/tags/v1.6.0
Rekor log index 2573844352
Predicate type https://slsa.dev/provenance/v1
Subject digest sha512:81eb005adac501c634c683f2e4be3bc59d82b45138efc92321fb355772a6a59c9bdec78d43411b2956f6ac5910d471f8a866a583ddbf4a796ced4eaa9

Background: How many MCP packages publish verified provenance →

Dependencies 4 packages
Packages resolved 4
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 28 exposed · ~17,553 tokens

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. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
add_attachment ~839

PDF/A-3b document with embedded files — the tool for Factur-X / ZUGFeRD e-invoices (one XML attachment, relationship 'Source', mimeType application/xml) or any PDF carrying machine-readable side-files (≤ 8 MiB each). Body via `blocks` (same schema as generate_basic_pdf). Pair with `embedFonts:true` for a valid PDF/A-3 claim (strict:true fails otherwise). Read them back with extract_attachments. Print, metadata and creationDate options as on every document tool.

NameTypeReqDescription
attachmentsarrayyesOne or more files to embed. Auto-enables PDF/A-3 (ISO 19005-3). Factur-X invoices use a single attachment with relationship=Source and mimeType=application/xml.
blocksarrayOptional human-readable document body (same block schema as generate_basic_pdf). When omitted, a minimal cover paragraph is emitted so the PDF is not empty.
compressbooleanFlateDecode the streams (smaller file, different bytes; PDF/A unaffected, XMP stays plain). Default false.
creationDatestringISO-8601 instant for /CreationDate (+ XMP). Pin it for byte-identical output across calls (same host TZ); omitted = wall clock, so every call differs.
debugbooleanDraw margin / block / cell guide rectangles (unmarked content — not for PDF/UA output). Geometry unchanged. Default false.
embedFontsbooleanEmbed Noto Sans Latin instead of the viewer base-14 Helvetica. REQUIRED for a valid PDF/A claim (ISO 19005 §6.2.11.4.1) and for strict=true; adds ~0.3 MiB.
footerTemplateobjectRunning footer on every page. Replaces the default footer: footerText is then ignored and page numbers appear only via {page}/{pages}.
footerTextstringOptional footer text rendered on every page.
headerTemplateobjectRunning header on every page (left / center / right zones); reserves 15 pt.
includeDiagnosticsbooleanReturn the PDF/A diagnostics raised while building as `diagnostics[]` (possibly empty).
marginsobjectMargins in points, all four required (0–200). Default 45 / 36 / 35 / 36.
metadataobject/Info (+ XMP under PDF/A): author, subject, keywords, /Trapped.
outputIntentobjectCustom PDF/A OutputIntent: an RGB ICC profile + condition strings replacing the built-in sRGB intent (CMYK rejected).
outputModestring'base64' (default) returns the PDF inline; 'file' writes it inside the PDFNATIVE_MCP_OUTPUT_DIR sandbox (SECURITY_VIOLATION when the sandbox is not configured).
outputPathstringRequired when outputMode='file'. Relative path inside the sandbox; must end with .pdf (no absolute paths, no '..').
pageSizestringPortrait page preset (points): A4 595.28×841.89 (default), Letter 612×792, Legal 612×1008, A3 841.89×1190.55, Tabloid 792×1224. print.* boxes must fit it.
printobjectPrint production (ISO 32000-1 §14.11): page boxes, `bleed` shorthand (TrimBox = MediaBox inset), crop/registration marks outside the TrimBox, /UserUnit for large formats (PDF 1.7; not under pdfa1b).…
strictbooleanFail with PDF_A_COMPLIANCE_VIOLATION instead of producing a non-conformant PDF/A file (e.g. PDFA_NO_FONT_ENTRIES without embedFonts). Pair with embedFonts=true.
titlestringyesDocument title (also written to the /Info dictionary).
NameTypeReqDescription
diagnosticsarrayPDF/A diagnostics (when includeDiagnostics=true).
filePathstringSandboxed absolute path (file mode).
modestringyes
sizeBytesintegeryes
summaryobjectTool-specific summary, when produced.

No examples provided.

add_barcode ~1,068

Single-page PDF with a barcode: qr (URLs, vCards, UTF-8 ≤ 4296 chars; ecLevel 'H' for print, 'M' default), code128 (ASCII SKUs), ean13 (12–13 digits, checksum auto), datamatrix (dense industrial marks), pdf417 (ID cards, boarding passes). `data` is the raw payload — never pre-encode. Typical: { format:'qr', data:'https://example.com', caption:'Scan me' }. PDF/A, print, metadata and creationDate options as on every document tool.

NameTypeReqDescription
captionstringOptional caption rendered above the barcode.
compressbooleanFlateDecode the streams (smaller file, different bytes; PDF/A unaffected, XMP stays plain). Default false.
creationDatestringISO-8601 instant for /CreationDate (+ XMP). Pin it for byte-identical output across calls (same host TZ); omitted = wall clock, so every call differs.
datastringyesRaw payload to encode — do NOT URL-encode. For QR/URL pass e.g. "https://example.com" verbatim. EAN-13 must be 12 or 13 digits (13th is auto-computed). Code 128 accepts ASCII alphanumerics.
debugbooleanDraw margin / block / cell guide rectangles (unmarked content — not for PDF/UA output). Geometry unchanged. Default false.
ecLevelstringQR ONLY. Error correction level (L=7%, M=15%, Q=25%, H=30%). Ignored for code128/ean13/datamatrix/pdf417. Use H for printed media that may get smudged or partially covered (e.g. logo overlay).
embedFontsbooleanEmbed Noto Sans Latin instead of the viewer base-14 Helvetica. REQUIRED for a valid PDF/A claim (ISO 19005 §6.2.11.4.1) and for strict=true; adds ~0.3 MiB.
encryptobjectEncrypt at build time (AES-128 default / AES-256) and KEEP the AcroForm — unlike encrypt_pdf, which rebuilds the page tree. Exclusive with pdfA. Randomised output, never cached.
footerTemplateobjectRunning footer on every page. Replaces the default footer: footerText is then ignored and page numbers appear only via {page}/{pages}.
formatstringyesBarcode symbology to render.
headerTemplateobjectRunning header on every page (left / center / right zones); reserves 15 pt.
heightnumberBarcode height in PDF points (ignored for square symbologies like QR/Data Matrix).
includeDiagnosticsbooleanReturn the PDF/A diagnostics raised while building as `diagnostics[]` (possibly empty).
marginsobjectMargins in points, all four required (0–200). Default 45 / 36 / 35 / 36.
metadataobject/Info (+ XMP under PDF/A): author, subject, keywords, /Trapped.
outputIntentobjectCustom PDF/A OutputIntent: an RGB ICC profile + condition strings replacing the built-in sRGB intent (CMYK rejected).
outputModestring'base64' (default) returns the PDF inline; 'file' writes it inside the PDFNATIVE_MCP_OUTPUT_DIR sandbox (SECURITY_VIOLATION when the sandbox is not configured).
outputPathstringRequired when outputMode='file'. Relative path inside the sandbox; must end with .pdf (no absolute paths, no '..').
pageSizestringPortrait page preset (points): A4 595.28×841.89 (default), Letter 612×792, Legal 612×1008, A3 841.89×1190.55, Tabloid 792×1224. print.* boxes must fit it.
pdfAstringPDF/A level: pdfa1b (simple text+images), pdfa2b/pdfa2u (richer; 2u = Unicode mapping), pdfa3b (attachments / Factur-X). Pair with embedFonts=true for a valid claim. Exclusive with encryption. See do…
printobjectPrint production (ISO 32000-1 §14.11): page boxes, `bleed` shorthand (TrimBox = MediaBox inset), crop/registration marks outside the TrimBox, /UserUnit for large formats (PDF 1.7; not under pdfa1b).…
strictbooleanFail with PDF_A_COMPLIANCE_VIOLATION instead of producing a non-conformant PDF/A file (e.g. PDFA_NO_FONT_ENTRIES without embedFonts). Pair with embedFonts=true.
titlestringPDF document title (also rendered as page heading).
widthnumberBarcode width in PDF points.
NameTypeReqDescription
diagnosticsarrayPDF/A diagnostics (when includeDiagnostics=true).
filePathstringSandboxed absolute path (file mode).
modestringyes
sizeBytesintegeryes
summaryobjectTool-specific summary, when produced.

No examples provided.

add_chart ~1,376

Single-page PDF with a native vector chart (pure path operators, no raster): bar, barH, stackedBar, stackedBarH, line (markers), area, scatter, pie, donut. Multi-series, legends, 'nice' ticks, gridlines, negatives; per-series xValues with xAxis.type 'linear' | 'time' (ISO-8601), secondary right axis (axis2 + yAxis:'right'), axis.scale 'log', dataLabels, labelStride / labelRotation. Pie/donut take exactly one series. Colours are hex ('#3366cc'). Tagged /Figure + /Alt (auto when altText is omitted). Engine cross-field rules surface as CHART_ERROR with the remedy. Inside a longer document use a 'chart' block in generate_basic_pdf. PDF/A (pdfA + embedFonts:true), print, metadata and creationDate as on every document tool.

NameTypeReqDescription
alignstringHorizontal alignment within the content width. Default 'left'.
altTextstringAlt text for the tagged-PDF /Figure /Alt. Auto-generated when omitted.
axisobjectValue-axis options (bar/line only).
axis2objectSecondary RIGHT value axis (drawn only when a series sets yAxis:'right').
categoriesarrayCategory / slice labels (x-axis). Defaults to 1-based indices when omitted.
chartTypestringyesChart kind. 'pie'/'donut' use exactly one series; 'bar'/'barH'/'stackedBar'/'stackedBarH'/'line'/'area'/'scatter' support multiple series. 'scatter' requires xValues on every series and a positional…
colorsarrayPalette override (per-series for bar/line, per-slice for pie/donut).
compressbooleanFlateDecode the streams (smaller file, different bytes; PDF/A unaffected, XMP stays plain). Default false.
creationDatestringISO-8601 instant for /CreationDate (+ XMP). Pin it for byte-identical output across calls (same host TZ); omitted = wall clock, so every call differs.
dataLabelsPer-point value labels: true for defaults, or an object to format them.
debugbooleanDraw margin / block / cell guide rectangles (unmarked content — not for PDF/UA output). Geometry unchanged. Default false.
embedFontsbooleanEmbed Noto Sans Latin instead of the viewer base-14 Helvetica. REQUIRED for a valid PDF/A claim (ISO 19005 §6.2.11.4.1) and for strict=true; adds ~0.3 MiB.
encryptobjectEncrypt at build time (AES-128 default / AES-256) and KEEP the AcroForm — unlike encrypt_pdf, which rebuilds the page tree. Exclusive with pdfA. Randomised output, never cached.
footerTemplateobjectRunning footer on every page. Replaces the default footer: footerText is then ignored and page numbers appear only via {page}/{pages}.
headerTemplateobjectRunning header on every page (left / center / right zones); reserves 15 pt.
heightnumberPlot-area height in points. Default 240.
includeDiagnosticsbooleanReturn the PDF/A diagnostics raised while building as `diagnostics[]` (possibly empty).
introstringOptional introductory paragraph rendered above the chart. The chart `title` (if any) is also used as the PDF metadata title.
labelRotationnumberRotate category labels counter-clockwise by this many degrees (disables the automatic stride).
labelStrideintegerDraw every Nth category label. Default: automatic (measured non-overlap); 1 draws every label.
legendstringLegend placement. Defaults to 'bottom' for multi-series/pie, else 'none'.
marginsobjectMargins in points, all four required (0–200). Default 45 / 36 / 35 / 36.
markersbooleanDraw point markers on line series. Default false.
metadataobject/Info (+ XMP under PDF/A): author, subject, keywords, /Trapped.
outputIntentobjectCustom PDF/A OutputIntent: an RGB ICC profile + condition strings replacing the built-in sRGB intent (CMYK rejected).
outputModestringEither 'base64' (returns the PDF inline) or 'file' (writes into the PDFNATIVE_MCP_OUTPUT_DIR sandbox).
outputPathstringRequired when outputMode='file'. Relative path inside the sandbox; must end with .pdf.
pageSizestringPortrait page preset (points): A4 595.28×841.89 (default), Letter 612×792, Legal 612×1008, A3 841.89×1190.55, Tabloid 792×1224. print.* boxes must fit it.
pdfAstringPDF/A level: pdfa1b (simple text+images), pdfa2b/pdfa2u (richer; 2u = Unicode mapping), pdfa3b (attachments / Factur-X). Pair with embedFonts=true for a valid claim. Exclusive with encryption. See do…
printobjectPrint production (ISO 32000-1 §14.11): page boxes, `bleed` shorthand (TrimBox = MediaBox inset), crop/registration marks outside the TrimBox, /UserUnit for large formats (PDF 1.7; not under pdfa1b).…
seriesarrayyesData series. Pie/donut charts use exactly one series (each value becomes a slice).
strictbooleanFail with PDF_A_COMPLIANCE_VIOLATION instead of producing a non-conformant PDF/A file (e.g. PDFA_NO_FONT_ENTRIES without embedFonts). Pair with embedFonts=true.
titlestringChart title rendered above the plot.
widthnumberPlot width in points (clamped to content width). Default 460.
xAxisobjectHorizontal axis. 'category' (default) positions points by index; 'linear' / 'time' position them by series xValues (line/area/scatter only). Time ticks are UTC-deterministic.
NameTypeReqDescription
diagnosticsarrayPDF/A diagnostics (when includeDiagnostics=true).
filePathstringSandboxed absolute path (file mode).
modestringyes
sizeBytesintegeryes
summaryobjectTool-specific summary, when produced.

No examples provided.

add_form ~835

New PDF with an interactive AcroForm: text fields, text areas, checkboxes, radio buttons, dropdowns (data capture, surveys, fillable templates). To fill or flatten an EXISTING form use read_form_fields + fill_form. PDF/A, print, metadata and creationDate options as on every document tool.

NameTypeReqDescription
compressbooleanFlateDecode the streams (smaller file, different bytes; PDF/A unaffected, XMP stays plain). Default false.
creationDatestringISO-8601 instant for /CreationDate (+ XMP). Pin it for byte-identical output across calls (same host TZ); omitted = wall clock, so every call differs.
debugbooleanDraw margin / block / cell guide rectangles (unmarked content — not for PDF/UA output). Geometry unchanged. Default false.
embedFontsbooleanEmbed Noto Sans Latin instead of the viewer base-14 Helvetica. REQUIRED for a valid PDF/A claim (ISO 19005 §6.2.11.4.1) and for strict=true; adds ~0.3 MiB.
encryptobjectEncrypt at build time (AES-128 default / AES-256) and KEEP the AcroForm — unlike encrypt_pdf, which rebuilds the page tree. Exclusive with pdfA. Randomised output, never cached.
fieldsarrayyesOrdered list of form field definitions.
footerTemplateobjectRunning footer on every page. Replaces the default footer: footerText is then ignored and page numbers appear only via {page}/{pages}.
footerTextstringOptional footer text rendered at the bottom of every page.
headerTemplateobjectRunning header on every page (left / center / right zones); reserves 15 pt.
includeDiagnosticsbooleanReturn the PDF/A diagnostics raised while building as `diagnostics[]` (possibly empty).
marginsobjectMargins in points, all four required (0–200). Default 45 / 36 / 35 / 36.
metadataobject/Info (+ XMP under PDF/A): author, subject, keywords, /Trapped.
outputIntentobjectCustom PDF/A OutputIntent: an RGB ICC profile + condition strings replacing the built-in sRGB intent (CMYK rejected).
outputModestringEither 'base64' (returns the PDF inline) or 'file' (writes to a sandboxed path inside PDFNATIVE_MCP_OUTPUT_DIR).
outputPathstringRequired when outputMode='file'. Relative path inside the sandbox; must end with .pdf.
pageSizestringPortrait page preset (points): A4 595.28×841.89 (default), Letter 612×792, Legal 612×1008, A3 841.89×1190.55, Tabloid 792×1224. print.* boxes must fit it.
pdfAstringPDF/A level: pdfa1b (simple text+images), pdfa2b/pdfa2u (richer; 2u = Unicode mapping), pdfa3b (attachments / Factur-X). Pair with embedFonts=true for a valid claim. Exclusive with encryption. See do…
printobjectPrint production (ISO 32000-1 §14.11): page boxes, `bleed` shorthand (TrimBox = MediaBox inset), crop/registration marks outside the TrimBox, /UserUnit for large formats (PDF 1.7; not under pdfa1b).…
strictbooleanFail with PDF_A_COMPLIANCE_VIOLATION instead of producing a non-conformant PDF/A file (e.g. PDFA_NO_FONT_ENTRIES without embedFonts). Pair with embedFonts=true.
titlestringyesForm title rendered at the top of the document.
NameTypeReqDescription
diagnosticsarrayPDF/A diagnostics (when includeDiagnostics=true).
filePathstringSandboxed absolute path (file mode).
modestringyes
sizeBytesintegeryes
summaryobjectTool-specific summary, when produced.

No examples provided.

add_international_text ~969

PDF rendering text in 24 scripts (Arabic, Hebrew, Thai, CJK, Devanagari, Bengali, Tamil, Telugu, Sinhala, Tibetan, Khmer, Myanmar, Ethiopic, Cyrillic, Greek, Georgian, Armenian, Vietnamese, …), COLRv1 colour emoji and mathematical symbols ('math': ∀ ∃ √ ∑ ∫ ∞). BiDi (UAX #9), Arabic joining and complex-script shaping are automatic; input is NFC-normalised; newlines split paragraphs. `lang` is a code or an array for mixed runs (['ar','emoji'], ['latin','math']). Fonts are always embedded, so `embedFonts` does not exist here. PDF/A, print, metadata and creationDate options as on every document tool.

NameTypeReqDescription
compressbooleanFlateDecode the streams (smaller file, different bytes; PDF/A unaffected, XMP stays plain). Default false.
creationDatestringISO-8601 instant for /CreationDate (+ XMP). Pin it for byte-identical output across calls (same host TZ); omitted = wall clock, so every call differs.
debugbooleanDraw margin / block / cell guide rectangles (unmarked content — not for PDF/UA output). Geometry unchanged. Default false.
encryptobjectEncrypt at build time (AES-128 default / AES-256) and KEEP the AcroForm — unlike encrypt_pdf, which rebuilds the page tree. Exclusive with pdfA. Randomised output, never cached.
footerTemplateobjectRunning footer on every page. Replaces the default footer: footerText is then ignored and page numbers appear only via {page}/{pages}.
headerTemplateobjectRunning header on every page (left / center / right zones); reserves 15 pt.
includeDiagnosticsbooleanReturn the PDF/A diagnostics raised while building as `diagnostics[]` (possibly empty).
langyesLanguage / script identifier. Either a single code (e.g. 'ar'), a comma-separated list ('ar,emoji'), or an array (['ar','emoji']). Multiple codes enable multi-font run splitting (script + emoji + Lat…
marginsobjectMargins in points, all four required (0–200). Default 45 / 36 / 35 / 36.
metadataobject/Info (+ XMP under PDF/A): author, subject, keywords, /Trapped.
normalizestringUnicode normalization before shaping. Default 'NFC' (widest glyph coverage); NFD/NFKC/NFKD or false for special needs.
outputIntentobjectCustom PDF/A OutputIntent: an RGB ICC profile + condition strings replacing the built-in sRGB intent (CMYK rejected).
outputModestring'base64' (default) returns the PDF inline; 'file' writes it inside the PDFNATIVE_MCP_OUTPUT_DIR sandbox (SECURITY_VIOLATION when the sandbox is not configured).
outputPathstringRequired when outputMode='file'. Relative path inside the sandbox; must end with .pdf (no absolute paths, no '..').
pageSizestringPortrait page preset (points): A4 595.28×841.89 (default), Letter 612×792, Legal 612×1008, A3 841.89×1190.55, Tabloid 792×1224. print.* boxes must fit it.
paragraphsarrayyesOrdered list of paragraphs to render in the chosen script.
pdfAstringPDF/A level (Tagged PDF + sRGB OutputIntent + XMP). Fonts are embedded here, so the claim is valid as-is. See docs/guides/PDFA.md.
printobjectPrint production (ISO 32000-1 §14.11): page boxes, `bleed` shorthand (TrimBox = MediaBox inset), crop/registration marks outside the TrimBox, /UserUnit for large formats (PDF 1.7; not under pdfa1b).…
strictbooleanFail with PDF_A_COMPLIANCE_VIOLATION instead of producing a non-conformant PDF/A file (e.g. PDFA_NO_FONT_ENTRIES without embedFonts). Pair with embedFonts=true.
titlestringyesPDF title (rendered as page heading and stored as document metadata).
viewerPreferencesobjectReader presentation hints (catalog /PageLayout, /PageMode, /ViewerPreferences). PDF/A-safe; all optional.
NameTypeReqDescription
diagnosticsarrayPDF/A diagnostics (when includeDiagnostics=true).
filePathstringSandboxed absolute path (file mode).
modestringyes
sizeBytesintegeryes
summaryobjectTool-specific summary, when produced.

No examples provided.

add_ltv ~482

PAdES B-LT: embed a Document Security Store (/DSS + per-signature /VRI) with the certificates and OCSP/CRL material future verifiers need ('LTV enabled' in Adobe Reader once the root is trusted). Ladder step 3: sign_pdf (profile:'pades', timestamp:true) → add_ltv → timestamp_pdf. mode 'online' (default) fetches through the OPERATOR revocation provider (PDFNATIVE_MCP_REVOCATION + PDFNATIVE_MCP_NETWORK_ALLOWED_HOSTS; REVOCATION_NOT_CONFIGURED otherwise — no network without it); mode 'offline' embeds caller-supplied DER certificates / OCSP responses / CRLs with zero network. Incremental (existing /DSS merged). Needs ≥ 1 signed signature; unencrypted PDFs only.

NameTypeReqDescription
certificatesDerBase64arrayoffline: DER X.509 certificates to embed in /DSS /Certs.
crlsDerBase64arrayoffline: DER CertificateList (RFC 5280) blobs to embed in /DSS /CRLs.
extraCertificatesDerBase64arrayonline: additional DER certificates (intermediates / roots) to complete chains the CMS does not carry.
modestring'online': fetch OCSP/CRL through the operator provider (PDFNATIVE_MCP_REVOCATION + allow-list; REVOCATION_NOT_CONFIGURED otherwise). 'offline': embed the caller-supplied DER material, zero network.
ocspResponsesDerBase64arrayoffline: DER OCSPResponse (RFC 6960) blobs to embed in /DSS /OCSPs.
outputModestring'base64' (default) returns the PDF inline; 'file' writes it inside the PDFNATIVE_MCP_OUTPUT_DIR sandbox (SECURITY_VIOLATION when the sandbox is not configured).
outputPathstringRelative path inside PDFNATIVE_MCP_OUTPUT_DIR (required when outputMode='file').
pdfBase64stringyesBase64-encoded SIGNED PDF (unencrypted). Sign with sign_pdf (profile=pades recommended) first.
preferOcspbooleanonline: try OCSP before CRL for each certificate (default true).
NameTypeReqDescription
diagnosticsarrayPDF/A diagnostics (when includeDiagnostics=true).
filePathstringSandboxed absolute path (file mode).
modestringyes
sizeBytesintegeryes
summaryobjectTool-specific summary, when produced.

No examples provided.

add_table ~1,284

Tabular PDF report from `headers` + `rows` (every row the same length). Smart-table options: wrap, repeatHeader (header on every page), zebra, caption (tagged for PDF/A), minRowHeight, cellPadding, cellBorders, cellVAlign, autoFitColumns, clipCells. Inside a longer document use a 'table' block of generate_basic_pdf instead. PDF/A (pdfA + embedFonts:true), print, metadata, watermark and creationDate options as on every document tool.

NameTypeReqDescription
autoFitColumnsbooleanAuto-fit column widths to content. Output bytes then depend on text metrics (not byte-deterministic across content changes).
captionstringCaption rendered above the table (tagged as /Caption under PDF/A).
cellBordersobjectPer-cell vector borders (pure strokes, PDF/A-safe). Choose individual sides or `all`.
cellPaddingnumberHorizontal cell padding in points (default 3).
cellVAlignstringVertical alignment of cell content.
clipCellsbooleanClip cell contents to the column bounds (PDF clip operators). Recommended for PDF/A and visual safety.
compressbooleanFlateDecode the streams (smaller file, different bytes; PDF/A unaffected, XMP stays plain). Default false.
creationDatestringISO-8601 instant for /CreationDate (+ XMP). Pin it for byte-identical output across calls (same host TZ); omitted = wall clock, so every call differs.
debugbooleanDraw margin / block / cell guide rectangles (unmarked content — not for PDF/UA output). Geometry unchanged. Default false.
embedFontsbooleanEmbed Noto Sans Latin instead of the viewer base-14 Helvetica. REQUIRED for a valid PDF/A claim (ISO 19005 §6.2.11.4.1) and for strict=true; adds ~0.3 MiB.
encryptobjectEncrypt at build time (AES-128 default / AES-256) and KEEP the AcroForm — unlike encrypt_pdf, which rebuilds the page tree. Exclusive with pdfA. Randomised output, never cached.
footerTemplateobjectRunning footer on every page. Replaces the default footer: footerText is then ignored and page numbers appear only via {page}/{pages}.
footerTextstringOptional text rendered at the bottom of every page.
headerTemplateobjectRunning header on every page (left / center / right zones); reserves 15 pt.
headersarrayyesColumn header labels. Must have the same length as each row in `rows`.
includeDiagnosticsbooleanReturn the PDF/A diagnostics raised while building as `diagnostics[]` (possibly empty).
infoItemsarrayOptional key-value metadata rows rendered below the title (e.g. date, author).
marginsobjectMargins in points, all four required (0–200). Default 45 / 36 / 35 / 36.
metadataobject/Info (+ XMP under PDF/A): author, subject, keywords, /Trapped.
minRowHeightnumberMinimum row height in points (default 12).
outputIntentobjectCustom PDF/A OutputIntent: an RGB ICC profile + condition strings replacing the built-in sRGB intent (CMYK rejected).
outputModestringEither 'base64' (returns the PDF inline) or 'file' (writes to a sandboxed path inside PDFNATIVE_MCP_OUTPUT_DIR).
outputPathstringRequired when outputMode='file'. Relative path inside the sandbox; must end with .pdf.
pageSizestringPortrait page preset (points): A4 595.28×841.89 (default), Letter 612×792, Legal 612×1008, A3 841.89×1190.55, Tabloid 792×1224. print.* boxes must fit it.
pdfAstringPDF/A level: pdfa1b (simple text+images), pdfa2b/pdfa2u (richer; 2u = Unicode mapping), pdfa3b (attachments / Factur-X). Pair with embedFonts=true for a valid claim. Exclusive with encryption. See do…
printobjectPrint production (ISO 32000-1 §14.11): page boxes, `bleed` shorthand (TrimBox = MediaBox inset), crop/registration marks outside the TrimBox, /UserUnit for large formats (PDF 1.7; not under pdfa1b).…
repeatHeaderbooleanRepeat the header row on every continuation page (default true).
rowsarrayyesData rows. Each row is an array of cell strings with the same length as `headers`.
strictbooleanFail with PDF_A_COMPLIANCE_VIOLATION instead of producing a non-conformant PDF/A file (e.g. PDFA_NO_FONT_ENTRIES without embedFonts). Pair with embedFonts=true.
titlestringyesReport title rendered at the top of the document and used as PDF metadata title.
viewerPreferencesobjectReader presentation hints (catalog /PageLayout, /PageMode, /ViewerPreferences). PDF/A-safe; all optional.
watermarkobjectOptional semi-transparent watermark rendered centred on every page: `text` (e.g. 'DRAFT'), `image` (JPEG/PNG), or both combined. At least one of text / image is required. opacity < 1.0 (text or image…
wrapstringCell wrap policy: 'auto' (default) wraps only overflowing cells; 'always' wraps every cell; 'never' truncates.
zebrabooleanAlternate-row light tint (static fill, PDF/A-1b safe).
NameTypeReqDescription
diagnosticsarrayPDF/A diagnostics (when includeDiagnostics=true).
filePathstringSandboxed absolute path (file mode).
modestringyes
sizeBytesintegeryes
summaryobjectTool-specific summary, when produced.

No examples provided.

annotate_pdf ~262

Append markup annotations (ISO 32000-1 §12.5) to an existing PDF as a non-destructive incremental update (original bytes preserved). Types: text (sticky note), highlight | underline | strikeout | squiggly, square | circle, line (needs start/end), freetext. Each needs a 0-based `page` and `rect` [x1,y1,x2,y2]; optional contents, color, opacity, title and type-specific fields. VISUAL OVERLAY ONLY — nothing is removed or redacted (covered text stays extractable). Encrypted sources → ENCRYPTED_SOURCE (decrypt_pdf first).

NameTypeReqDescription
annotationsarrayyesMarkup / drawing annotations to add. Each is attached to a 0-based page index.
outputModestring'base64' (default) returns the PDF inline; 'file' writes it inside the PDFNATIVE_MCP_OUTPUT_DIR sandbox (SECURITY_VIOLATION when the sandbox is not configured).
outputPathstringRequired when outputMode='file'. Relative path inside the sandbox; must end with .pdf (no absolute paths, no '..').
pdfBase64stringyesBase64-encoded source PDF to annotate.
NameTypeReqDescription
diagnosticsarrayPDF/A diagnostics (when includeDiagnostics=true).
filePathstringSandboxed absolute path (file mode).
modestringyes
sizeBytesintegeryes
summaryobjectTool-specific summary, when produced.

No examples provided.

decrypt_pdf ~233

Emit an UNENCRYPTED copy of an encrypted PDF (RC4 V1–V4, AES-128, AES-256) given `password` (user or owner; empty user password needs none). CAVEAT: the page tree is rebuilt — signatures and AcroForm are DROPPED. To merely READ an encrypted PDF pass `password` to inspect_pdf / extract_text / extract_attachments / read_form_fields instead. Never cached.

NameTypeReqDescription
outputModestring'base64' (default) returns the PDF inline; 'file' writes it inside the PDFNATIVE_MCP_OUTPUT_DIR sandbox (SECURITY_VIOLATION when the sandbox is not configured).
outputPathstringRequired when outputMode='file'. Relative path inside the sandbox; must end with .pdf.
passwordstringPassword to open the encrypted source (user or owner). Omit only for documents with an empty user password.
pdfBase64stringyesBase64-encoded encrypted PDF to decrypt. NOTE: signatures and AcroForm are dropped (page-tree rebuild).
NameTypeReqDescription
diagnosticsarrayPDF/A diagnostics (when includeDiagnostics=true).
filePathstringSandboxed absolute path (file mode).
modestringyes
sizeBytesintegeryes
summaryobjectTool-specific summary, when produced.

No examples provided.

draft_governance_issue ~413

Produce a LOCAL GitHub issue draft + compliance report for pdfnative / pdfnative-mcp and NEVER submit it — the agent drafts, a human reviews and files it under their own identity (Human-In-The-Loop contract, .github/AGENT_RULES.md). No GitHub write path exists. The draft is checked against the zero-dependency + reproduction policy; a violation (new runtime dependency, missing reproduction, duplicateSearchPerformed:false) throws GOVERNANCE_VIOLATION. Returns markdown inline (outputMode:'file' also writes a .md). Present the draft AND the report to the user, then STOP.

NameTypeReqDescription
actualBehaviorstringWhat actually happened (defaults to the reproduction result when omitted).
affectedPackagesarrayPackages impacted by this issue (e.g. ["pdfnative-mcp"], ["pdfnative"]).
duplicateSearchPerformedbooleanyesMUST be true: confirms you searched open AND closed issues/PRs for duplicates before drafting.
expectedBehaviorstringyesWhat you expected to happen instead.
issueTypestringyesIssue category: 'bug' | 'feature' | 'security' | 'docs' | 'performance'.
outputModestring'inline' (default) returns the draft markdown in the response. 'file' additionally writes it to the sandbox (requires PDFNATIVE_MCP_OUTPUT_DIR); outputPath must be a relative .md path.
outputPathstringRelative .md path inside the sandbox (only when outputMode='file').
reproductionobjectyesThe minimal, locally-executed reproduction that justifies this issue.
summarystringyesOne or two paragraphs describing the problem or proposal.
targetRepostringDestination repository label for the draft (documentation only — the server never contacts it). Typically 'pdfnative-mcp' or 'pdfnative'.
titlestringyesConcise issue title (imperative, no trailing period).
NameTypeReqDescription
complianceobjectyes
draftMarkdownstringyesThe full draft, ready for a human to review and submit.
filePathstringSandboxed absolute path (when outputMode='file').
issueTypestringyes
outputModestringyes
sizeBytesintegeryes
targetRepostringyes
titlestringyes
warningsarrayyes

No examples provided.

embed_image ~1,008

PDF with one embedded JPEG or PNG (base64; PNG without alpha channel) plus optional caption and render width/height. Inside a longer document use an 'image' block of generate_basic_pdf instead. PDF/A, print, metadata and creationDate options as on every document tool.

NameTypeReqDescription
alignstringHorizontal placement of the image inside the content width.
altstringAccessible description of the image (tagged /Figure /Alt). Provide it for non-decorative images under PDF/A or PDF/UA.
captionstringOptional caption rendered below the image.
compressbooleanFlateDecode the streams (smaller file, different bytes; PDF/A unaffected, XMP stays plain). Default false.
creationDatestringISO-8601 instant for /CreationDate (+ XMP). Pin it for byte-identical output across calls (same host TZ); omitted = wall clock, so every call differs.
debugbooleanDraw margin / block / cell guide rectangles (unmarked content — not for PDF/UA output). Geometry unchanged. Default false.
embedFontsbooleanEmbed Noto Sans Latin instead of the viewer base-14 Helvetica. REQUIRED for a valid PDF/A claim (ISO 19005 §6.2.11.4.1) and for strict=true; adds ~0.3 MiB.
encryptobjectEncrypt at build time (AES-128 default / AES-256) and KEEP the AcroForm — unlike encrypt_pdf, which rebuilds the page tree. Exclusive with pdfA. Randomised output, never cached.
footerTemplateobjectRunning footer on every page. Replaces the default footer: footerText is then ignored and page numbers appear only via {page}/{pages}.
headerTemplateobjectRunning header on every page (left / center / right zones); reserves 15 pt.
heightnumberRender height in points. If omitted, aspect ratio is preserved.
imageBase64stringyesBase64 image bytes. JPEG (baseline; 1, 3 or 4 components — CMYK raises PDFA_DEVICE_CMYK_IMAGE under PDF/A) or PNG (8-bit greyscale/RGB, non-interlaced; alpha-channel and palette PNGs are rejected wit…
includeDiagnosticsbooleanReturn the PDF/A diagnostics raised while building as `diagnostics[]` (possibly empty).
marginsobjectMargins in points, all four required (0–200). Default 45 / 36 / 35 / 36.
metadataobject/Info (+ XMP under PDF/A): author, subject, keywords, /Trapped.
mimeTypestringyesMIME type of the image. Must match the actual encoding of imageBase64 (magic bytes are checked).
outputIntentobjectCustom PDF/A OutputIntent: an RGB ICC profile + condition strings replacing the built-in sRGB intent (CMYK rejected).
outputModestringEither 'base64' (returns the PDF inline) or 'file' (writes to a sandboxed path inside PDFNATIVE_MCP_OUTPUT_DIR).
outputPathstringRequired when outputMode='file'. Relative path inside the sandbox; must end with .pdf.
pageSizestringPortrait page preset (points): A4 595.28×841.89 (default), Letter 612×792, Legal 612×1008, A3 841.89×1190.55, Tabloid 792×1224. print.* boxes must fit it.
pdfAstringPDF/A level: pdfa1b (simple text+images), pdfa2b/pdfa2u (richer; 2u = Unicode mapping), pdfa3b (attachments / Factur-X). Pair with embedFonts=true for a valid claim. Exclusive with encryption. See do…
printobjectPrint production (ISO 32000-1 §14.11): page boxes, `bleed` shorthand (TrimBox = MediaBox inset), crop/registration marks outside the TrimBox, /UserUnit for large formats (PDF 1.7; not under pdfa1b).…
strictbooleanFail with PDF_A_COMPLIANCE_VIOLATION instead of producing a non-conformant PDF/A file (e.g. PDFA_NO_FONT_ENTRIES without embedFonts). Pair with embedFonts=true.
titlestringyesDocument title rendered at the top and used as PDF metadata title.
widthnumberRender width in points. If omitted, the image is auto-sized to fit the page.
NameTypeReqDescription
diagnosticsarrayPDF/A diagnostics (when includeDiagnostics=true).
filePathstringSandboxed absolute path (file mode).
modestringyes
sizeBytesintegeryes
summaryobjectTool-specific summary, when produced.

No examples provided.

encrypt_pdf ~311

Encrypt an existing PDF with the Standard Security Handler: AES-128 (default) or AES-256; RC4 is never emitted. ownerPassword required; optional userPassword (open password), permissions { print, copy, modify, extractText }. Rotate the password of an already-encrypted source by passing its current `password`. CAVEAT: the page tree is rebuilt — signatures and AcroForm are DROPPED, only URI links kept; encrypt BEFORE signing. Never cached.

NameTypeReqDescription
algorithmstringaes128 (V4/R4, widest compatibility) or aes256 (V5/R6).
outputModestring'base64' (default) returns the PDF inline; 'file' writes it inside the PDFNATIVE_MCP_OUTPUT_DIR sandbox (SECURITY_VIOLATION when the sandbox is not configured).
outputPathstringRequired when outputMode='file'. Relative path inside the sandbox; must end with .pdf.
ownerPasswordstringyesOwner password (full access).
passwordstringCurrent password of an already-encrypted source (enables password rotation). Omit for an unencrypted source.
pdfBase64stringyesBase64-encoded source PDF to encrypt. NOTE: existing signatures and AcroForm are dropped (page-tree rebuild).
permissionsobjectPermission flags; each defaults to allowed.
userPasswordstringOpen password; omitted/empty = opens without a prompt.
NameTypeReqDescription
diagnosticsarrayPDF/A diagnostics (when includeDiagnostics=true).
filePathstringSandboxed absolute path (file mode).
modestringyes
sizeBytesintegeryes
summaryobjectTool-specific summary, when produced.

No examples provided.

extract_attachments ~263

Read-only extraction of embedded files (PDF/A-3, Factur-X, ZUGFeRD): name, mimeType, AFRelationship, description, sizeBytes and (by default) the payload as dataBase64. `filename` selects one file; `includeData:false` probes metadata only. Encrypted sources: pass `password`. Token-frugal: verbosity:'summary'.

NameTypeReqDescription
fieldsarrayOptional dot-path projection applied to the structured result (e.g. ['attachments.name']). Composes after verbosity. Unknown paths are omitted.
filenamestringOptional exact attachment name to extract. When omitted, every embedded file is returned.
includeDatabooleanWhen true (default) each attachment carries its decoded payload as dataBase64. Set false for a metadata-only probe (names, sizes, relationships) with no payload bytes.
passwordstringPassword (user or owner) of an encrypted source. Never logged or echoed.
pdfBase64stringyesBase64-encoded PDF bytes to read embedded files from.
verbositystringResponse verbosity. 'full' (default) returns the attachments[] array; 'summary' returns a token-frugal { attachmentCount } and drops the array.
NameTypeReqDescription
attachmentCountinteger
attachmentsarray

No examples provided.

extract_pages ~320

Keep an arbitrary `pages[]` subset (0-based, in the given order) in ONE fresh PDF. Same page-tree caveats as merge_pdfs (signatures/AcroForm/XMP dropped; boxes kept; URI links unless dropAnnotations). Encrypted sources: `password`; output unencrypted unless `encrypt`. Need several documents? Use split_pdf.

NameTypeReqDescription
dropAnnotationsbooleanWhen true, drop ALL annotations. Default keeps self-contained URI link annotations.
encryptobjectRe-encrypt the output (Standard Security Handler; AES-128 default or AES-256; RC4 never emitted).
maxOutputSizeBytesintegerMaximum size, in bytes, of the produced PDF. Defaults to 268435456 (256 MiB).
outputModestring'base64' (default) returns the PDF inline; 'file' writes it inside the PDFNATIVE_MCP_OUTPUT_DIR sandbox (SECURITY_VIOLATION when the sandbox is not configured).
outputPathstringRequired when outputMode='file'. Relative path inside the sandbox; must end with .pdf (no absolute paths, no '..').
pagesarrayyes0-based page indices to keep, in output order. Duplicates and out-of-range indices are rejected.
passwordstringPassword (user or owner) of an encrypted source. Never logged or echoed.
pdfBase64stringyesBase64-encoded source PDF. Pass `password` for an encrypted source.
NameTypeReqDescription
diagnosticsarrayPDF/A diagnostics (when includeDiagnostics=true).
filePathstringSandboxed absolute path (file mode).
modestringyes
sizeBytesintegeryes
summaryobjectTool-specific summary, when produced.

No examples provided.

extract_text ~382

Plain-text extraction: decodes Tj/TJ operands through each font's /ToUnicode CMap, /Encoding /Differences or base encoding and returns pages[] + fullText (positioned runs with includeRuns:true; `pages` selects 0-based pages). `extractable` is false only when a page decoded ENTIRELY to U+FFFD (a font with no usable mapping — expected for some subset fonts, not an error; extractableReason explains). Encrypted sources: pass `password` (PASSWORD_REQUIRED / PASSWORD_INVALID otherwise). Token-frugal: verbosity:'summary', fields:[…].

NameTypeReqDescription
fieldsarrayOptional dot-path projection applied to the structured result (e.g. ['fullText'] or ['extractable']). Composes after verbosity. Unknown paths are omitted.
includeRunsbooleanWhen true, each page also carries `runs[]` — positioned text-showing operations `{ text, x, y, fontSize, fontName }` in device space (content-stream order). Useful for layout-aware extraction; larger…
maxTextLengthintegerHard cap on total extracted characters across all pages (memory bound for adversarial input). Default 16000000. Exceeding it fails with OUTPUT_TOO_LARGE.
pagesarrayOptional 0-based page indices to extract. When omitted, every page is extracted.
passwordstringPassword (user or owner) of an encrypted source. Never logged or echoed.
pdfBase64stringyesBase64-encoded PDF bytes.
verbositystringResponse verbosity. 'full' (default) returns the per-page pages[] array and fullText; 'summary' returns a token-frugal { pageCount, extractedPageCount, extractable, charCount } and drops the text pay…
NameTypeReqDescription
charCountintegersummary only: length of fullText.
extractablebooleanFalse when one or more requested pages produced text that is entirely U+FFFD replacement characters — a font with no usable /ToUnicode CMap or base encoding. Blank pages are still considered extracta…
extractableReasonstringPresent when extractable is false: why no text could be decoded.
extractedPageCountinteger
fullTextstring
pageCountinteger
pagesarray

No examples provided.

fill_form ~414

Fill and/or flatten the AcroForm of an EXISTING PDF (add_form creates one) as an incremental update — prior signatures stay valid for their revision. `values`: fully-qualified name → string (array for multi-select), boolean or export state for checkbox/radio. `flatten:true` stamps appearances and drops the interactive layer (with no values = pure flatten). Unknown names → FORM_FIELD_NOT_FOUND unless onUnknownField:'ignore'; signature fields cannot be filled (FORM_UNSUPPORTED). Encrypted sources: `password`.

NameTypeReqDescription
flattenbooleanWhen true, stamp appearances into page content and remove the interactive fields after filling.
nonWinAnsistringBehaviour when a value contains non-WinAnsi characters (appearance font is Helvetica/WinAnsi). 'throw' (default) rejects it; 'needAppearances' writes the value and sets /NeedAppearances so the viewer…
onUnknownFieldstringBehaviour for a value key that matches no field. 'throw' (default) → FORM_FIELD_NOT_FOUND; 'ignore' skips it.
outputModestring'base64' (default) returns the PDF inline; 'file' writes it inside the PDFNATIVE_MCP_OUTPUT_DIR sandbox (SECURITY_VIOLATION when the sandbox is not configured).
outputPathstringRequired when outputMode='file'. Relative path inside the sandbox; must end with .pdf.
passwordstringPassword (user or owner) of an encrypted source. Never logged or echoed.
pdfBase64stringyesBase64-encoded source PDF containing the AcroForm to fill. Use read_form_fields first to discover field names.
valuesobjectMap of fully-qualified field name → value. Text/choice: a string (array of strings for multi-select listboxes). Checkbox/radio: a boolean or the export-state string. Omit (or pass {}) with flatten:tr…
NameTypeReqDescription
diagnosticsarrayPDF/A diagnostics (when includeDiagnostics=true).
filePathstringSandboxed absolute path (file mode).
modestringyes
sizeBytesintegeryes
summaryobjectTool-specific summary, when produced.

No examples provided.

generate_basic_pdf ~1,204

Multi-page PDF composed from ordered blocks: heading, paragraph, list, table, image (JPEG/PNG), link, toc (printed table of contents), barcode, svg, formField, chart, pageBreak, spacer — every block kind the engine offers, each sharing its body with the dedicated tool (add_table, embed_image, add_barcode, add_form, add_chart). DEFAULT for any document; use the dedicated tools only for a standalone artefact, add_attachment for embedded files and add_international_text for non-Latin scripts. `pdfA` + `embedFonts:true` for a valid PDF/A-1b/2b/2u/3b claim; `outline` / `pageLabels` / `viewerPreferences` / `watermark` for navigation and presentation; `print`, `metadata`, `outputIntent`, `creationDate` as on every document tool. The 'chart' block takes the same body as add_chart.

NameTypeReqDescription
blocksarrayyesOrdered list of content blocks composing the document body.
compressbooleanFlateDecode the streams (smaller file, different bytes; PDF/A unaffected, XMP stays plain). Default false.
creationDatestringISO-8601 instant for /CreationDate (+ XMP). Pin it for byte-identical output across calls (same host TZ); omitted = wall clock, so every call differs.
debugbooleanDraw margin / block / cell guide rectangles (unmarked content — not for PDF/UA output). Geometry unchanged. Default false.
embedFontsbooleanEmbed Noto Sans Latin instead of the viewer base-14 Helvetica. REQUIRED for a valid PDF/A claim (ISO 19005 §6.2.11.4.1) and for strict=true; adds ~0.3 MiB.
encryptobjectEncrypt at build time (AES-128 default / AES-256) and KEEP the AcroForm — unlike encrypt_pdf, which rebuilds the page tree. Exclusive with pdfA. Randomised output, never cached.
footerTemplateobjectRunning footer on every page. Replaces the default footer: footerText is then ignored and page numbers appear only via {page}/{pages}.
footerTextstringOptional footer text rendered at the bottom of every page.
headerTemplateobjectRunning header on every page (left / center / right zones); reserves 15 pt.
includeDiagnosticsbooleanReturn the PDF/A diagnostics raised while building as `diagnostics[]` (possibly empty).
marginsobjectMargins in points, all four required (0–200). Default 45 / 36 / 35 / 36.
metadataobject/Info (+ XMP under PDF/A): author, subject, keywords, /Trapped.
normalizestringUnicode normalization before shaping ('NFC' recommended for glyph coverage; NFD/NFKC/NFKD accepted). Omit = none.
outlineDocument outline (bookmarks panel). Either 'auto' (derive a flat outline from heading blocks) or an explicit nested bookmark tree.
outputIntentobjectCustom PDF/A OutputIntent: an RGB ICC profile + condition strings replacing the built-in sRGB intent (CMYK rejected).
outputModestringEither 'base64' (returns the PDF inline as a base64 string) or 'file' (writes to a path inside the configured PDFNATIVE_MCP_OUTPUT_DIR sandbox).
outputPathstringRequired when outputMode='file'. Relative path inside the sandbox; must end with .pdf.
pageLabelsarrayPage-label ranges (the visible page numbers in the viewer, e.g. roman front-matter then decimal body). startPage values must be unique and strictly increasing.
pageSizestringPortrait page preset (points): A4 595.28×841.89 (default), Letter 612×792, Legal 612×1008, A3 841.89×1190.55, Tabloid 792×1224. print.* boxes must fit it.
pdfAstringPDF/A level: pdfa1b (simple text+images), pdfa2b/pdfa2u (richer; 2u = Unicode mapping), pdfa3b (attachments / Factur-X). Pair with embedFonts=true for a valid claim. Exclusive with encryption. See do…
printobjectPrint production (ISO 32000-1 §14.11): page boxes, `bleed` shorthand (TrimBox = MediaBox inset), crop/registration marks outside the TrimBox, /UserUnit for large formats (PDF 1.7; not under pdfa1b).…
strictbooleanFail with PDF_A_COMPLIANCE_VIOLATION instead of producing a non-conformant PDF/A file (e.g. PDFA_NO_FONT_ENTRIES without embedFonts). Pair with embedFonts=true.
titlestringyesDocument title (rendered at top of page 1 and used as PDF metadata title).
viewerPreferencesobjectReader presentation hints (catalog /PageLayout, /PageMode, /ViewerPreferences). PDF/A-safe; all optional.
watermarkobjectOptional semi-transparent watermark rendered centred on every page: `text` (e.g. 'DRAFT'), `image` (JPEG/PNG), or both combined. At least one of text / image is required. opacity < 1.0 (text or image…
NameTypeReqDescription
diagnosticsarrayPDF/A diagnostics (when includeDiagnostics=true).
filePathstringSandboxed absolute path (file mode).
modestringyes
sizeBytesintegeryes
summaryobjectTool-specific summary, when produced.

No examples provided.

inspect_layout ~654

Pagination preview WITHOUT generating a PDF: page count and where every block lands (page, x, top, width, height in points). Same `blocks` as generate_basic_pdf plus every input that moves a block (title, footerText, pdfA, normalize, embedFonts, pageSize, margins, headerTemplate, footerTemplate): pass what you will give generate_basic_pdf and the page count matches. Known engine gap: a 'toc' block is measured as 0 pt here (its real height depends on the headings), so documents with a toc may paginate one page later. Read-only, deterministic. Token-frugal: verbosity:'summary', fields:['totalPages'].

NameTypeReqDescription
blocksarrayyesOrdered list of content blocks composing the document body.
embedFontsbooleanMeasure with the embedded Noto Sans Latin metrics instead of Helvetica — pass the same value you will give generate_basic_pdf. (Embed Noto Sans Latin instead of the viewer base-14 Helvetica. REQUIRED…
fieldsarrayOptional dot-path projection applied to the structured result (e.g. ['totalPages'] or ['pages.blocks.type']). Composes after verbosity. Unknown paths are omitted.
footerTemplateobjectRunning footer on every page. Replaces the default footer: footerText is then ignored and page numbers appear only via {page}/{pages}.
footerTextstringFooter text as you would pass it to generate_basic_pdf (reserves the footer band).
headerTemplateobjectRunning header on every page (left / center / right zones); reserves 15 pt.
marginsobjectMargins in points, all four required (0–200). Default 45 / 36 / 35 / 36.
normalizestringUnicode normalization before shaping ('NFC' recommended for glyph coverage; NFD/NFKC/NFKD accepted). Omit = none.
pageSizestringPortrait page preset (points): A4 595.28×841.89 (default), Letter 612×792, Legal 612×1008, A3 841.89×1190.55, Tabloid 792×1224. print.* boxes must fit it.
pdfAstringTagged (PDF/A) layout mode, as you would pass it to generate_basic_pdf. PDF/A level: pdfa1b (simple text+images), pdfa2b/pdfa2u (richer; 2u = Unicode mapping), pdfa3b (attachments / Factur-X). Pair w…
titlestringyesDocument title — reserves the title band on page 1 exactly as generate_basic_pdf does.
verbositystring'full' (default) or 'summary' (scalars only: pageWidth, pageHeight, totalPages, blockCount; pages[] and margins dropped).
NameTypeReqDescription
blockCountintegersummary only: number of placed blocks (table slices count once each).
marginsobjectPage margins { top, right, bottom, left } in points.
pageHeightnumberPage height in points (841.89 = A4).
pageWidthnumberPage width in points (595.28 = A4).
pagesarrayPer-page block placement, in render order. A table that spans pages appears once per slice.
totalPagesintegerNumber of pages the blocks paginate into.

No examples provided.

inspect_pdf ~540

Read-only facts about a PDF: version, pageCount, encryption, pdfA claim (the claim, not its validity — use veraPDF for that), signatureCount, hasSignaturePlaceholder, attachments[], info; presence-gated dss / docTimestampCount / trapped; `signatures:true` lists every field (subFilter, isDocTimestamp, isPlaceholder, byteRange, vriKey); `pages:true` adds per-page sizes and boxes. `check:[…]` turns it into a CI assertion ('pdfa','signed','encrypted','placeholder','attachments','dss','docTimestamp','trapped') → checks (requested keys only) + checksPassed. Encrypted sources: pass `password`. Token-frugal: verbosity:'summary', fields:[…].

NameTypeReqDescription
annotationsbooleanWhen true, include an annotations[] array listing every page annotation (/Annots: links, text notes, highlights, shapes, widgets…) with its 0-based page, subtype, rect and, when present, contents (tr…
checkarrayCI assertions → checks (requested keys only) + checksPassed (all hold). 'signed' = a signature field with signed content exists (structural; validity is verify_pdf's job), 'placeholder' = an unsigned…
fieldsarrayOptional dot-path projection applied to the structured result (e.g. ['pageCount','signatureCount']). Composes after verbosity. Unknown paths are omitted.
pagesbooleanWhen true, include per-page metadata in the response.
passwordstringPassword (user or owner) of an encrypted source. Never logged or echoed.
pdfBase64stringyesBase64-encoded PDF bytes to inspect.
signaturesbooleanWhen true, include a signatures[] array describing every signature field (field name, SubFilter, document-timestamp flag, placeholder flag, ByteRange, /Contents length, /VRI key). Off by default to k…
verbositystring'full' (default) or 'summary' (scalars only: version, pageCount, encryption, pdfA, signatureCount, hasSignaturePlaceholder, attachmentCount, + docTimestampCount / trapped / checksPassed when present;…
NameTypeReqDescription
annotationCountintegerTotal number of page annotations (opt-in via the `annotations` input).
annotationsarrayPage annotations (opt-in via the `annotations` input), in page order then /Annots order. Only the keys the annotation actually carries are emitted.
attachmentCountintegersummary only: number of embedded files.
attachmentsarrayEmbedded files exposed via /Names → /EmbeddedFiles (PDF/A-3, Factur-X).
checksobjectOne boolean per REQUESTED check (keys = the check[] you passed, nothing else).
checksPassedbooleanPresent when check[] was supplied: true when every requested check holds.
docTimestampCountintegerNumber of /DocTimeStamp signature fields, present only when at least one exists.
dssobjectDocument Security Store summary (ISO 32000-2 §12.8.4.3), present only when the catalog has a /DSS.
encryptionstring
encryptionInfoobjectPrecise Standard Security Handler details (pdfnative v1.6.0), present only when the document is encrypted and was opened successfully. Objects served by the reader are already decrypted.
hasSignaturePlaceholderbooleanTrue when at least one signature widget exists with empty /Contents — i.e. an unsigned placeholder awaiting `sign_pdf`.
infoobjectDocument /Info dictionary entries decoded as strings.
pageCountinteger
pageLabelsarrayLogical page-numbering ranges from the /PageLabels number tree (ISO 32000-1 §12.4.2), or absent when the document has none. Each range gives the 0-based first page, numbering style, optional prefix a…
pdfAstring|nullDetected PDF/A claim (e.g. '1B', '2B', '2U', '3B') from XMP metadata, or null when absent.
perPagearray
signatureCountinteger
signaturesarraySignature fields (opt-in via the `signatures` input). Document timestamps are listed inline with isDocTimestamp=true.
trappedstring/Info /Trapped flag, present only when the document carries one.
versionstringPDF version (e.g. "1.7").

No examples provided.

merge_pdfs ~428

Concatenate 2–50 PDFs (`pdfsBase64[]`) into one fresh, self-contained document. Page-tree rebuild: signatures and AcroForm are dropped, XMP (and thus a PDF/A claim) does not survive — re-declare PDF/A on the generating tools; page boxes and /UserUnit do survive; URI links kept unless dropAnnotations:true. Encrypted sources open with one `password` (PASSWORD_REQUIRED / PASSWORD_INVALID); output unencrypted unless `encrypt`. Guards: 256 MiB assembly (maxOutputSizeBytes), 50 MiB output (OUTPUT_TOO_LARGE).

NameTypeReqDescription
dropAnnotationsbooleanWhen true, drop ALL annotations. Default (false) keeps self-contained URI link annotations and drops cross-document/widget annotations.
encryptobjectRe-encrypt the output (Standard Security Handler; AES-128 default or AES-256; RC4 never emitted).
maxOutputSizeBytesintegerIn-memory assembly guard (pdfnative maxOutputSize): the merge throws before materialising an object graph larger than this. Defaults to 268435456 (256 MiB). Note the emitted PDF is separately capped…
outputModestring'base64' (default) returns the PDF inline; 'file' writes it inside the PDFNATIVE_MCP_OUTPUT_DIR sandbox (SECURITY_VIOLATION when the sandbox is not configured).
outputPathstringRequired when outputMode='file'. Relative path inside the sandbox; must end with .pdf (no absolute paths, no '..').
passwordstringPassword applied to every encrypted source (pdfnative v1.6.0). Sources with an empty user password open without it. The merged output is unencrypted unless `encrypt` is set.
pdfsBase64arrayyesBase64-encoded source PDFs to concatenate, in order. 2–50 documents. Signatures and AcroForms are dropped (a page-tree edit invalidates them); encrypted PDFs are rejected.
NameTypeReqDescription
diagnosticsarrayPDF/A diagnostics (when includeDiagnostics=true).
filePathstringSandboxed absolute path (file mode).
modestringyes
sizeBytesintegeryes
summaryobjectTool-specific summary, when produced.

No examples provided.

prepare_signature_placeholder ~1,219

New PDF carrying an unsigned /Sig placeholder for a LATER sign_pdf call. OPTIONAL — sign_pdf auto-injects one. Use it to size the placeholder (placeholderBytes for > 4096-bit keys, reserveTimestamp for an RFC 3161 token), to pin the widget page (pageIndex), to choose subFilter 'ETSI.CAdES.detached' (PAdES), or to ship the placeholder separately. signerName/reason/location/contactInfo/signingTime are frozen into /Sig here — sign_pdf cannot rewrite them later. NOTE: the unsigned file is not yet a conformant PDF/A (empty /Contents); it becomes one once signed. PDF/A, print, metadata and creationDate options as on every document tool.

NameTypeReqDescription
blocksarrayOptional document body blocks rendered before the signature field.
compressbooleanFlateDecode the streams (smaller file, different bytes; PDF/A unaffected, XMP stays plain). Default false.
contactInfostringContact information for the signer.
creationDatestringISO-8601 instant for /CreationDate (+ XMP). Pin it for byte-identical output across calls (same host TZ); omitted = wall clock, so every call differs.
debugbooleanDraw margin / block / cell guide rectangles (unmarked content — not for PDF/UA output). Geometry unchanged. Default false.
embedFontsbooleanEmbed Noto Sans Latin instead of the viewer base-14 Helvetica. REQUIRED for a valid PDF/A claim (ISO 19005 §6.2.11.4.1) and for strict=true; adds ~0.3 MiB.
fieldNamestringOptional AcroForm field name for the signature widget (default 'Signature1').
footerTemplateobjectRunning footer on every page. Replaces the default footer: footerText is then ignored and page numbers appear only via {page}/{pages}.
headerTemplateobjectRunning header on every page (left / center / right zones); reserves 15 pt.
includeDiagnosticsbooleanReturn the PDF/A diagnostics raised while building as `diagnostics[]` (possibly empty).
locationstringSigning location (city / country).
marginsobjectMargins in points, all four required (0–200). Default 45 / 36 / 35 / 36.
metadataobject/Info (+ XMP under PDF/A): author, subject, keywords, /Trapped.
outputIntentobjectCustom PDF/A OutputIntent: an RGB ICC profile + condition strings replacing the built-in sRGB intent (CMYK rejected).
outputModestringEither 'base64' (returns the PDF inline) or 'file' (writes to a sandboxed path inside PDFNATIVE_MCP_OUTPUT_DIR).
outputPathstringRequired when outputMode='file'. Relative path inside the sandbox; must end with .pdf.
pageIndexintegerZero-based page index the (invisible) widget attaches to (default 0).
pageSizestringPortrait page preset (points): A4 595.28×841.89 (default), Letter 612×792, Legal 612×1008, A3 841.89×1190.55, Tabloid 792×1224. print.* boxes must fit it.
pdfAstringPDF/A level: pdfa1b (simple text+images), pdfa2b/pdfa2u (richer; 2u = Unicode mapping), pdfa3b (attachments / Factur-X). Pair with embedFonts=true for a valid claim. Exclusive with encryption. See do…
placeholderBytesintegerReserved bytes for the future CMS /Contents blob (default 16384; 24576 when reserveTimestamp=true). Increase only for >4096-bit RSA, long chains or large TSA tokens.
printobjectPrint production (ISO 32000-1 §14.11): page boxes, `bleed` shorthand (TrimBox = MediaBox inset), crop/registration marks outside the TrimBox, /UserUnit for large formats (PDF 1.7; not under pdfa1b).…
reasonstringReason for signing (e.g. "Approved", "I agree to the terms").
reserveTimestampbooleanReserve room for an RFC 3161 signature timestamp (sign_pdf timestamp=true): adds 8 KiB to the default placeholder size. Ignored when placeholderBytes is set explicitly.
signerNamestringName of the intended signer, embedded in the /Sig dictionary.
signingTimestring/Sig /M — the claimed signing instant (ISO-8601), frozen into the placeholder dictionary. Omitted: the wall clock at placeholder time. Pin it (with creationDate) for byte-identical output across call…
strictbooleanFail with PDF_A_COMPLIANCE_VIOLATION instead of producing a non-conformant PDF/A file (e.g. PDFA_NO_FONT_ENTRIES without embedFonts). Pair with embedFonts=true.
subFilterstringSignature SubFilter baked into the /Sig dictionary (frozen at placeholder time). Use 'ETSI.CAdES.detached' for PAdES baseline signatures (sign_pdf profile='pades'). Default 'adbe.pkcs7.detached'.
titlestringyesDocument title. Used as the PDF metadata title and rendered at the top of page 1.
NameTypeReqDescription
diagnosticsarrayPDF/A diagnostics (when includeDiagnostics=true).
filePathstringSandboxed absolute path (file mode).
modestringyes
sizeBytesintegeryes
summaryobjectTool-specific summary, when produced.

No examples provided.

read_form_fields ~212

Read-only list of an existing PDF's AcroForm fields: fully-qualified name, type (text | checkbox | radio | dropdown | listbox | button | signature | unknown), value, flags (readOnly / required / multiline), options, widget placements. Call it BEFORE fill_form to learn the names. Encrypted sources: `password`. Token-frugal: verbosity:'summary' → { fieldCount }.

NameTypeReqDescription
fieldsarrayOptional dot-path projection applied to the structured result (e.g. ['fields.name','fields.type']). Composes after verbosity. Unknown paths are omitted.
passwordstringPassword (user or owner) of an encrypted source. Never logged or echoed.
pdfBase64stringyesBase64-encoded PDF bytes whose AcroForm fields should be enumerated.
verbositystringResponse verbosity. 'full' (default) returns the fields[] array; 'summary' returns a token-frugal { fieldCount } and drops the array.
NameTypeReqDescription
fieldCountinteger
fieldsarray

No examples provided.

sign_pdf ~1,112

CMS / PAdES signature in ONE call: a missing /Sig placeholder is auto-injected (prepare_signature_placeholder is optional). Inputs: pdfBase64, algorithm (rsa-sha256/384/512, ecdsa-sha256 P-256), certDerBase64 (+ certChainDerBase64 intermediates) and the DER key (rsaKeyPkcs1DerBase64 for rsa-*, ecPrivateKeyDerBase64 or ecPrivateScalarHex for ECDSA; PEM is rejected with the openssl remedy). `profile:'pades'` (ETSI EN 319 142-1 baseline) is the right choice when add_ltv / timestamp_pdf follow; `timestamp:true` = PAdES B-T through the operator TSA (TSA_NOT_CONFIGURED otherwise, no network without it). signerName/reason/location/contactInfo/signingTime are baked into the placeholder THIS call injects (a pre-built placeholder keeps its own). Several unsigned placeholders → pass fieldName (PLACEHOLDER_AMBIGUOUS); `allowMultiple:true` + a new fieldName adds a further signature. Verify with verify_pdf.

NameTypeReqDescription
algorithmstringyesSignature algorithm. 'rsa-sha384' / 'rsa-sha512' (pdfnative 1.7) upgrade the whole CMS digest chain. ECDSA only supports P-256 with SHA-256.
allowMultiplebooleanAdd a NEW signature next to existing (already signed) fields instead of signing the first placeholder. Requires fieldName. Each signature is an incremental revision; earlier signatures stay valid.
autoInjectPlaceholderbooleanWhen true (default) and the input PDF has no /Sig widget, pdfnative.addSignaturePlaceholder is called before signing — enabling single-call signing of any PDF.
certChainDerBase64arrayOptional intermediate CA certificates (DER base64) embedded in the CMS so verifiers and add_ltv can build the chain without fetching caIssuers.
certDerBase64stringyesBase64 of the signer X.509 certificate in DER form. Convert from PEM with: openssl x509 -in cert.pem -outform DER | base64 -w0
contactInfostring/Sig /ContactInfo — baked into the placeholder when this call injects it.
ecPrivateKeyDerBase64stringBase64 of an ECDSA P-256 private key in SEC1 (RFC 5915) or PKCS#8 (RFC 5208) DER form. Convert from PEM with: openssl pkey -in key.pem -outform DER | base64 -w0 Mutually exclusive with ecPrivateScal…
ecPrivateScalarHexstringHex-encoded P-256 private scalar `d` (exactly 64 lowercase or uppercase hex chars, no 0x prefix). Mutually exclusive with ecPrivateKeyDerBase64; either is accepted for ECDSA.
fieldNamestringName of the signature field to sign (required when several unsigned placeholders exist) and of the placeholder injected by this call.
locationstring/Sig /Location — baked into the placeholder when this call injects it.
outputModestring'base64' (default) returns the PDF inline; 'file' writes it inside the PDFNATIVE_MCP_OUTPUT_DIR sandbox (SECURITY_VIOLATION when the sandbox is not configured).
outputPathstringRequired when outputMode='file'. Relative path inside the sandbox; must end with .pdf (no absolute paths, no '..').
pdfBase64stringyesBase64-encoded PDF bytes. When the PDF already contains an unsigned /Sig placeholder it is signed in place; otherwise the placeholder is auto-injected (set autoInjectPlaceholder=false to opt out).
profilestring'pkcs7' (default, adbe.pkcs7.detached) or 'pades' (ETSI EN 319 142-1 baseline; ETSI.CAdES.detached when the placeholder is injected here). Use 'pades' before timestamp / add_ltv / timestamp_pdf.
reasonstring/Sig /Reason — baked into the placeholder when this call injects it.
rsaKeyPkcs1DerBase64stringBase64 of the RSA private key in DER form — PKCS#1 RSAPrivateKey (openssl rsa -in key.pem -outform DER -traditional | base64 -w0) or PKCS#8 PrivateKeyInfo (openssl pkey -in key.pem -outform DER | bas…
signerNamestring/Sig /Name — baked into the placeholder when this call injects it.
signingTimestringISO-8601 signing instant → /Sig /M (only when THIS call injects the placeholder) and the CMS signing-time (pkcs7 profile). Default: now. Not trusted time — use timestamp:true for that.
timestampbooleanPAdES B-T: request an RFC 3161 signature timestamp from the operator-configured TSA (PDFNATIVE_MCP_TSA_URL). Fails with TSA_NOT_CONFIGURED when no TSA is configured — the server never contacts the ne…
NameTypeReqDescription
diagnosticsarrayPDF/A diagnostics (when includeDiagnostics=true).
filePathstringSandboxed absolute path (file mode).
modestringyes
sizeBytesintegeryes
summaryobjectTool-specific summary, when produced.

No examples provided.

split_pdf ~378

Split one PDF into several documents, one per `ranges[]` entry ({ start, end? }, 0-based inclusive; end defaults to start). Multi-output result: base64 mode returns one embedded resource per part; file mode writes indexed siblings ('out.pdf' → 'out-1.pdf', 'out-2.pdf', …). Same page-tree caveats as merge_pdfs (signatures/AcroForm/XMP dropped; boxes kept). Encrypted sources: `password`. Need ONE document from a page subset? Use extract_pages.

NameTypeReqDescription
dropAnnotationsbooleanWhen true, drop ALL annotations. Default keeps self-contained URI link annotations.
encryptobjectRe-encrypt the output (Standard Security Handler; AES-128 default or AES-256; RC4 never emitted). Applied to every produced range.
maxOutputSizeBytesintegerMaximum size, in bytes, of each produced PDF. Defaults to 268435456 (256 MiB).
outputModestring'base64' (default) returns the PDF inline; 'file' writes it inside the PDFNATIVE_MCP_OUTPUT_DIR sandbox (SECURITY_VIOLATION when the sandbox is not configured).
outputPathstringBase output path (file mode). Each PDF is written to an indexed sibling: 'out.pdf' → 'out-1.pdf', 'out-2.pdf', …
passwordstringPassword (user or owner) of an encrypted source. Never logged or echoed.
pdfBase64stringyesBase64-encoded source PDF. Pass `password` for an encrypted source.
rangesarrayyesPage ranges to extract, one output PDF per range. 0-based, inclusive; `end` defaults to `start` (a single page).
NameTypeReqDescription
countintegeryes
modestringyes
partsarrayyes
totalBytesintegeryes

No examples provided.

Common questions

What is the pdfnative MCP — PDF generation, PAdES signing… server?

pdfnative MCP — PDF generation, PAdES signing… is listed in the public MCP registry as io.github.Nizoka/pdfnative-mcp. PDF MCP server: generate PDF/A, sign & verify PAdES (LTV), forms, merge, split, encrypt. 28 tools. This page covers its npm package (pdfnative-mcp).

Is the pdfnative MCP — PDF generation, PAdES signing… server safe to use?

pdfnative MCP — PDF generation, PAdES signing… scores 93 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the pdfnative MCP — PDF generation, PAdES signing… server expose?

pdfnative MCP — PDF generation, PAdES signing… exposes 28 tools: generate_basic_pdf, add_barcode, sign_pdf, add_international_text, add_table, and 23 more. Their descriptions and schemas cost roughly 17,553 tokens of context every time the server is loaded.

Is the pdfnative MCP — PDF generation, PAdES signing… server still maintained?

pdfnative MCP — PDF generation, PAdES signing… is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the pdfnative MCP — PDF generation, PAdES signing… server under?

pdfnative MCP — PDF generation, PAdES signing… declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.