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

PDF MCP server: PDF/A, PDF/X-4, PAdES (LTV), forms, 32 scripts, JPEG 2000, spot colours. 28 tools

Available components

0 this week 95 Trust /100

Last scanned (9 hours ago)

Scores higher than 98% of npm servers

Category Documents and Files

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 & Transparency100
  • 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 3 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability71
  • 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 24812 tokens (~827/item across 30 items; 28 tools + 2 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 Management100
  • No destabilizing schema changes in the last 30 days.Pass
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 30 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
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.

  • 1 Nov 26 0
    • Stability: 0.97 → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Stability: 0.97 → pass security
    • Schema quality: 21992 → 24812 ▼ functional
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Schema quality: 100 → unverified ▼ functional
    • Package version: 1.7.0 → 1.8.0 functional
  • 31 Oct 26 +1

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

  • 30 Oct 26 −1
    • Stability: pass → 0.93 functional
  • 20 Oct 26 0
    • Stability: 0.97 → pass security
  • 19 Oct 26 0
    • Stability: pass → 0.97 functional
  • 17 Oct 26 +2
    • Stability: 0.87 → pass security
  • 15 Oct 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.

  • 14 Oct 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 5 Nov 2026 · Analysed npm/pdfnative-mcp@1.8.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.8.0
Rekor log index 3633521714
Predicate type SLSA build provenance https://slsa.dev/provenance/v1
Subject digest sha512:9d23fa5c909c3a76a11e0ce1cd0c96191f68b0eae152ec299bb9d783dd9479b273e2f2031c990e3f2bbc03a4f2c97617d149ca3133fe305bd259a1e06

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 · ~22,672 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 ~1,169

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
actualTextboolean–Untagged output: wrap reordered shaped runs and RTL runs in /ActualText so extract_text returns reading order. Default true; false = bare 1.7.0 glyph runs. No effect on tagged (pdfA) output.
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.
blocksarray–Optional 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.
compressboolean–FlateDecode the streams (smaller file, different bytes; PDF/A unaffected, XMP stays plain). Default false.
creationDatestring–ISO-8601 instant for /CreationDate (+ XMP, the trailer /ID and the {date} placeholder), written in UTC. Pin it for byte-identical output across calls and hosts; omitted = wall clock, so every call di…
debugboolean–Draw margin / block / cell guide rectangles (unmarked content — not for PDF/UA output). Geometry unchanged. Default false.
directionstring–Base text direction (UAX #9): 'auto' reads each paragraph's first strong character and right-aligns RTL ones; 'ltr' / 'rtl' force it. A paragraph's own direction overrides it. Omitted = LTR (1.7.0 by…
embedFontsboolean–Embed Noto Sans Latin instead of the viewer base-14 Helvetica. REQUIRED for a valid PDF/A or PDF/X claim (every font embedded) and for strict=true; adds ~0.3 MiB.
footerTemplateobject–Running footer on every page. Replaces the default footer: footerText is then ignored and page numbers appear only via {page}/{pages}.
footerTextstring–Optional footer text rendered on every page.
headerTemplateobject–Running header on every page (left / center / right zones); reserves 15 pt.
includeDiagnosticsboolean–Return the diagnostics raised while building (PDFA_*, PDFX_*, TYPOGRAPHY_*, TEXT_GLYPH_NOT_COVERED) as `diagnostics[]` (possibly empty).
marginsobject–Margins in points, all four required (0–200). Default 45 / 36 / 35 / 36.
metadataobject–/Info (+ XMP under PDF/A): author, subject, keywords, /Trapped.
outputIntentobject–Custom OutputIntent (under pdfA or pdfx): an RGB, CMYK or Gray ICC profile + condition strings, replacing the built-in sRGB intent. The profile must be a real ICC file ('acsp' signature, consistent s…
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).
outputPathstring–Required when outputMode='file'. Relative path inside the sandbox; must end with .pdf (no absolute paths, no '..').
pageSizestring–Portrait 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.
printobject–Print 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),…
strictboolean–Fail instead of producing a file the engine warns about: a PDFA_* diagnostic → PDF_A_COMPLIANCE_VIOLATION (e.g. PDFA_NO_FONT_ENTRIES without embedFonts), a PDFX_* one → PDF_X_COMPLIANCE_VIOLATION, an…
titlestringyesDocument title (also written to the /Info dictionary).
typographyobject–Fine typography, all opt-in (omitted = unchanged bytes). kerning and fontFeatures need embedFonts:true ('fr' works on base-14 too). No hyphenation dictionary is installed: use soft hyphens (U+00AD).…
NameTypeReqDescription
diagnosticsarray–Engine diagnostics (when includeDiagnostics=true).
filePathstring–Sandboxed absolute path (file mode).
modestringyes–
sizeBytesintegeryes–
summaryobject–Tool-specific summary, when produced.
urlstring–Public URL of the file (file mode, only when PDFNATIVE_MCP_OUTPUT_BASE_URL is set): base URL + sandbox-relative path, percent-encoded.

No examples provided.

add_barcode ~1,557

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
actualTextboolean–Untagged output: wrap reordered shaped runs and RTL runs in /ActualText so extract_text returns reading order. Default true; false = bare 1.7.0 glyph runs. No effect on tagged (pdfA) output.
captionstring–Optional caption rendered above the barcode.
compressboolean–FlateDecode the streams (smaller file, different bytes; PDF/A unaffected, XMP stays plain). Default false.
creationDatestring–ISO-8601 instant for /CreationDate (+ XMP, the trailer /ID and the {date} placeholder), written in UTC. Pin it for byte-identical output across calls and hosts; omitted = wall clock, so every call di…
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.
debugboolean–Draw margin / block / cell guide rectangles (unmarked content — not for PDF/UA output). Geometry unchanged. Default false.
directionstring–Base text direction (UAX #9): 'auto' reads each paragraph's first strong character and right-aligns RTL ones; 'ltr' / 'rtl' force it. A paragraph's own direction overrides it. Omitted = LTR (1.7.0 by…
ecLevelstring–QR 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).
embedFontsboolean–Embed Noto Sans Latin instead of the viewer base-14 Helvetica. REQUIRED for a valid PDF/A or PDF/X claim (every font embedded) and for strict=true; adds ~0.3 MiB.
encryptobject–Encrypt 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.
footerTemplateobject–Running footer on every page. Replaces the default footer: footerText is then ignored and page numbers appear only via {page}/{pages}.
formatstringyesBarcode symbology to render.
headerTemplateobject–Running header on every page (left / center / right zones); reserves 15 pt.
heightnumber–Barcode height in PDF points (ignored for square symbologies like QR/Data Matrix).
includeDiagnosticsboolean–Return the diagnostics raised while building (PDFA_*, PDFX_*, TYPOGRAPHY_*, TEXT_GLYPH_NOT_COVERED) as `diagnostics[]` (possibly empty).
marginsobject–Margins in points, all four required (0–200). Default 45 / 36 / 35 / 36.
metadataobject–/Info (+ XMP under PDF/A): author, subject, keywords, /Trapped.
outputIntentobject–Custom OutputIntent (under pdfA or pdfx): an RGB, CMYK or Gray ICC profile + condition strings, replacing the built-in sRGB intent. The profile must be a real ICC file ('acsp' signature, consistent s…
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).
outputPathstring–Required when outputMode='file'. Relative path inside the sandbox; must end with .pdf (no absolute paths, no '..').
pageSizestring–Portrait 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.
pdfAstring–PDF/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…
pdfxstring–PDF/X-4 print exchange (ISO 15930-7). REQUIRES outputIntent with the printer's ICC profile (device class 'prtr'; CMYK or Gray — none is bundled); needs embedFonts:true for a conformant file (PDFX_NO_…
printobject–Print 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),…
strictboolean–Fail instead of producing a file the engine warns about: a PDFA_* diagnostic → PDF_A_COMPLIANCE_VIOLATION (e.g. PDFA_NO_FONT_ENTRIES without embedFonts), a PDFX_* one → PDF_X_COMPLIANCE_VIOLATION, an…
titlestring–PDF document title (also rendered as page heading).
typographyobject–Fine typography, all opt-in (omitted = unchanged bytes). kerning and fontFeatures need embedFonts:true ('fr' works on base-14 too). No hyphenation dictionary is installed: use soft hyphens (U+00AD).…
widthnumber–Barcode width in PDF points.
NameTypeReqDescription
diagnosticsarray–Engine diagnostics (when includeDiagnostics=true).
filePathstring–Sandboxed absolute path (file mode).
modestringyes–
sizeBytesintegeryes–
summaryobject–Tool-specific summary, when produced.
urlstring–Public URL of the file (file mode, only when PDFNATIVE_MCP_OUTPUT_BASE_URL is set): base URL + sandbox-relative path, percent-encoded.

No examples provided.

add_chart ~1,931

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: hex ('#3366cc'), 'C M Y K' / [c, m, y, k] under a print intent, { spot, tint } / { inks } declared in print.spotColours; series[].colors gives one colour per value on the bar family (its length must equal values.length on every chart type — CHART_ERROR otherwise). 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
actualTextboolean–Untagged output: wrap reordered shaped runs and RTL runs in /ActualText so extract_text returns reading order. Default true; false = bare 1.7.0 glyph runs. No effect on tagged (pdfA) output.
alignstring–Horizontal alignment within the content width. Default 'left'.
altTextstring–Alt text for the tagged-PDF /Figure /Alt. Auto-generated when omitted.
axisobject–Value-axis options (bar/line only).
axis2object–Secondary RIGHT value axis (drawn only when a series sets yAxis:'right').
categoriesarray–Category / 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…
colorsarray–Palette override (per-series for bar/line, per-slice for pie/donut).
compressboolean–FlateDecode the streams (smaller file, different bytes; PDF/A unaffected, XMP stays plain). Default false.
creationDatestring–ISO-8601 instant for /CreationDate (+ XMP, the trailer /ID and the {date} placeholder), written in UTC. Pin it for byte-identical output across calls and hosts; omitted = wall clock, so every call di…
dataLabels––Per-point value labels: true for defaults, or an object to format them.
debugboolean–Draw margin / block / cell guide rectangles (unmarked content — not for PDF/UA output). Geometry unchanged. Default false.
directionstring–Base text direction (UAX #9): 'auto' reads each paragraph's first strong character and right-aligns RTL ones; 'ltr' / 'rtl' force it. A paragraph's own direction overrides it. Omitted = LTR (1.7.0 by…
embedFontsboolean–Embed Noto Sans Latin instead of the viewer base-14 Helvetica. REQUIRED for a valid PDF/A or PDF/X claim (every font embedded) and for strict=true; adds ~0.3 MiB.
encryptobject–Encrypt 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.
footerTemplateobject–Running footer on every page. Replaces the default footer: footerText is then ignored and page numbers appear only via {page}/{pages}.
headerTemplateobject–Running header on every page (left / center / right zones); reserves 15 pt.
heightnumber–Plot-area height in points. Default 240.
includeDiagnosticsboolean–Return the diagnostics raised while building (PDFA_*, PDFX_*, TYPOGRAPHY_*, TEXT_GLYPH_NOT_COVERED) as `diagnostics[]` (possibly empty).
introstring–Optional introductory paragraph rendered above the chart. The chart `title` (if any) is also used as the PDF metadata title.
labelRotationnumber–Rotate category labels counter-clockwise by this many degrees (disables the automatic stride).
labelStrideinteger–Draw every Nth category label. Default: automatic (measured non-overlap); 1 draws every label.
legendstring–Legend placement. Defaults to 'bottom' for multi-series/pie, else 'none'.
marginsobject–Margins in points, all four required (0–200). Default 45 / 36 / 35 / 36.
markersboolean–Draw point markers on line series. Default false.
metadataobject–/Info (+ XMP under PDF/A): author, subject, keywords, /Trapped.
outputIntentobject–Custom OutputIntent (under pdfA or pdfx): an RGB, CMYK or Gray ICC profile + condition strings, replacing the built-in sRGB intent. The profile must be a real ICC file ('acsp' signature, consistent s…
outputModestring–Either 'base64' (returns the PDF inline) or 'file' (writes into the PDFNATIVE_MCP_OUTPUT_DIR sandbox).
outputPathstring–Required when outputMode='file'. Relative path inside the sandbox; must end with .pdf.
pageSizestring–Portrait 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.
pdfAstring–PDF/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…
pdfxstring–PDF/X-4 print exchange (ISO 15930-7). REQUIRES outputIntent with the printer's ICC profile (device class 'prtr'; CMYK or Gray — none is bundled); needs embedFonts:true for a conformant file (PDFX_NO_…
printobject–Print 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).
strictboolean–Fail instead of producing a file the engine warns about: a PDFA_* diagnostic → PDF_A_COMPLIANCE_VIOLATION (e.g. PDFA_NO_FONT_ENTRIES without embedFonts), a PDFX_* one → PDF_X_COMPLIANCE_VIOLATION, an…
titlestring–Chart title rendered above the plot.
typographyobject–Fine typography, all opt-in (omitted = unchanged bytes). kerning and fontFeatures need embedFonts:true ('fr' works on base-14 too). No hyphenation dictionary is installed: use soft hyphens (U+00AD).…
widthnumber–Plot width in points (clamped to content width). Default 460.
xAxisobject–Horizontal axis. 'category' (default) positions points by index; 'linear' / 'time' position them by series xValues (line/area/scatter only). Time ticks are UTC-deterministic.
NameTypeReqDescription
diagnosticsarray–Engine diagnostics (when includeDiagnostics=true).
filePathstring–Sandboxed absolute path (file mode).
modestringyes–
sizeBytesintegeryes–
summaryobject–Tool-specific summary, when produced.
urlstring–Public URL of the file (file mode, only when PDFNATIVE_MCP_OUTPUT_BASE_URL is set): base URL + sandbox-relative path, percent-encoded.

No examples provided.

add_form ~1,165

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
actualTextboolean–Untagged output: wrap reordered shaped runs and RTL runs in /ActualText so extract_text returns reading order. Default true; false = bare 1.7.0 glyph runs. No effect on tagged (pdfA) output.
compressboolean–FlateDecode the streams (smaller file, different bytes; PDF/A unaffected, XMP stays plain). Default false.
creationDatestring–ISO-8601 instant for /CreationDate (+ XMP, the trailer /ID and the {date} placeholder), written in UTC. Pin it for byte-identical output across calls and hosts; omitted = wall clock, so every call di…
debugboolean–Draw margin / block / cell guide rectangles (unmarked content — not for PDF/UA output). Geometry unchanged. Default false.
directionstring–Base text direction (UAX #9): 'auto' reads each paragraph's first strong character and right-aligns RTL ones; 'ltr' / 'rtl' force it. A paragraph's own direction overrides it. Omitted = LTR (1.7.0 by…
embedFontsboolean–Embed Noto Sans Latin instead of the viewer base-14 Helvetica. REQUIRED for a valid PDF/A or PDF/X claim (every font embedded) and for strict=true; adds ~0.3 MiB.
encryptobject–Encrypt 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.
footerTemplateobject–Running footer on every page. Replaces the default footer: footerText is then ignored and page numbers appear only via {page}/{pages}.
footerTextstring–Optional footer text rendered at the bottom of every page.
headerTemplateobject–Running header on every page (left / center / right zones); reserves 15 pt.
includeDiagnosticsboolean–Return the diagnostics raised while building (PDFA_*, PDFX_*, TYPOGRAPHY_*, TEXT_GLYPH_NOT_COVERED) as `diagnostics[]` (possibly empty).
marginsobject–Margins in points, all four required (0–200). Default 45 / 36 / 35 / 36.
metadataobject–/Info (+ XMP under PDF/A): author, subject, keywords, /Trapped.
outputIntentobject–Custom OutputIntent (under pdfA or pdfx): an RGB, CMYK or Gray ICC profile + condition strings, replacing the built-in sRGB intent. The profile must be a real ICC file ('acsp' signature, consistent s…
outputModestring–Either 'base64' (returns the PDF inline) or 'file' (writes to a sandboxed path inside PDFNATIVE_MCP_OUTPUT_DIR).
outputPathstring–Required when outputMode='file'. Relative path inside the sandbox; must end with .pdf.
pageSizestring–Portrait 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.
pdfAstring–PDF/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…
printobject–Print 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),…
strictboolean–Fail instead of producing a file the engine warns about: a PDFA_* diagnostic → PDF_A_COMPLIANCE_VIOLATION (e.g. PDFA_NO_FONT_ENTRIES without embedFonts), a PDFX_* one → PDF_X_COMPLIANCE_VIOLATION, an…
titlestringyesForm title rendered at the top of the document.
typographyobject–Fine typography, all opt-in (omitted = unchanged bytes). kerning and fontFeatures need embedFonts:true ('fr' works on base-14 too). No hyphenation dictionary is installed: use soft hyphens (U+00AD).…
NameTypeReqDescription
diagnosticsarray–Engine diagnostics (when includeDiagnostics=true).
filePathstring–Sandboxed absolute path (file mode).
modestringyes–
sizeBytesintegeryes–
summaryobject–Tool-specific summary, when produced.
urlstring–Public URL of the file (file mode, only when PDFNATIVE_MCP_OUTPUT_BASE_URL is set): base URL + sandbox-relative path, percent-encoded.

No examples provided.

add_international_text ~1,651

PDF rendering text in 32 scripts (Arabic, Hebrew, Thai, Lao, CJK, Devanagari, Bengali, Gujarati, Gurmukhi, Kannada, Malayalam, Odia, Tamil, Telugu, Sinhala, Tibetan, Khmer, Myanmar, Tai Tham, New Tai Lue, Tai Le, Cham, Ethiopic, Cyrillic, Greek, Georgian, Armenian, Vietnamese, …; ha / yo / ig / sw are aliases of latin with anchored combining marks), 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
actualTextboolean–Untagged output: wrap reordered shaped runs and RTL runs in /ActualText so extract_text returns reading order. Default true; false = bare 1.7.0 glyph runs. No effect on tagged (pdfA) output.
compressboolean–FlateDecode the streams (smaller file, different bytes; PDF/A unaffected, XMP stays plain). Default false.
creationDatestring–ISO-8601 instant for /CreationDate (+ XMP, the trailer /ID and the {date} placeholder), written in UTC. Pin it for byte-identical output across calls and hosts; omitted = wall clock, so every call di…
debugboolean–Draw margin / block / cell guide rectangles (unmarked content — not for PDF/UA output). Geometry unchanged. Default false.
directionstring–Base text direction (UAX #9): 'auto' reads each paragraph's first strong character and right-aligns RTL ones; 'ltr' / 'rtl' force it. A paragraph's own direction overrides it. Omitted = LTR (1.7.0 by…
encryptobject–Encrypt 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.
fontstring–Operator-registered custom font (the slug of a .ttf / .otf file in PDFNATIVE_MCP_FONT_DIR, e.g. 'brand-sans'): drawn first, with the bundled faces as fallbacks. Unknown slug → FONT_NOT_FOUND listing…
footerTemplateobject–Running footer on every page. Replaces the default footer: footerText is then ignored and page numbers appear only via {page}/{pages}.
headerTemplateobject–Running header on every page (left / center / right zones); reserves 15 pt.
includeDiagnosticsboolean–Return the diagnostics raised while building (PDFA_*, PDFX_*, TYPOGRAPHY_*, TEXT_GLYPH_NOT_COVERED) as `diagnostics[]` (possibly empty).
lang–yesLanguage / 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…
marginsobject–Margins in points, all four required (0–200). Default 45 / 36 / 35 / 36.
metadataobject–/Info (+ XMP under PDF/A): author, subject, keywords, /Trapped.
normalizestring–Unicode normalization before shaping. Default 'NFC' (widest glyph coverage); NFD/NFKC/NFKD or false for special needs.
outputIntentobject–Custom OutputIntent (under pdfA or pdfx): an RGB, CMYK or Gray ICC profile + condition strings, replacing the built-in sRGB intent. The profile must be a real ICC file ('acsp' signature, consistent s…
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).
outputPathstring–Required when outputMode='file'. Relative path inside the sandbox; must end with .pdf (no absolute paths, no '..').
pageSizestring–Portrait 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.
pdfAstring–PDF/A level (Tagged PDF + sRGB OutputIntent + XMP). Fonts are embedded here, so the claim is valid as-is. See docs/guides/PDFA.md.
pdfxstring–PDF/X-4 print exchange (ISO 15930-7). REQUIRES outputIntent with the printer's ICC profile (device class 'prtr'; CMYK or Gray — none is bundled); needs embedFonts:true for a conformant file (PDFX_NO_…
printobject–Print 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),…
strictboolean–Fail instead of producing a file the engine warns about: a PDFA_* diagnostic → PDF_A_COMPLIANCE_VIOLATION (e.g. PDFA_NO_FONT_ENTRIES without embedFonts), a PDFX_* one → PDF_X_COMPLIANCE_VIOLATION, an…
titlestringyesPDF title (rendered as page heading and stored as document metadata).
typographyobject–Fine typography, all opt-in (omitted = unchanged bytes). kerning and fontFeatures need embedFonts:true ('fr' works on base-14 too). No hyphenation dictionary is installed: use soft hyphens (U+00AD).…
viewerPreferencesobject–Reader presentation hints (catalog /PageLayout, /PageMode, /ViewerPreferences). PDF/A-safe; all optional.
NameTypeReqDescription
diagnosticsarray–Engine diagnostics (when includeDiagnostics=true).
filePathstring–Sandboxed absolute path (file mode).
modestringyes–
sizeBytesintegeryes–
summaryobject–Tool-specific summary, when produced.
urlstring–Public URL of the file (file mode, only when PDFNATIVE_MCP_OUTPUT_BASE_URL is set): base URL + sandbox-relative path, percent-encoded.

No examples provided.

add_ltv ~555

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
certificatesDerBase64array–offline: DER X.509 certificates to embed in /DSS /Certs.
crlsDerBase64array–offline: DER CertificateList (RFC 5280) blobs to embed in /DSS /CRLs.
extraCertificatesDerBase64array–online: additional DER certificates (intermediates / roots) to complete chains the CMS does not carry.
matchstring–offline: what each signature's /VRI references. 'all' (default): every item (Adobe-tolerant superset). 'chain': only the material that validates that signature (its certificates and issuers, the OCSP…
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.
ocspResponsesDerBase64array–offline: 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).
outputPathstring–Relative path inside PDFNATIVE_MCP_OUTPUT_DIR (required when outputMode='file').
pdfBase64stringyesBase64-encoded SIGNED PDF (unencrypted). Sign with sign_pdf (profile=pades recommended) first.
preferOcspboolean–online: try OCSP before CRL for each certificate (default true).
NameTypeReqDescription
diagnosticsarray–Engine diagnostics (when includeDiagnostics=true).
filePathstring–Sandboxed absolute path (file mode).
modestringyes–
sizeBytesintegeryes–
summaryobject–Tool-specific summary, when produced.
urlstring–Public URL of the file (file mode, only when PDFNATIVE_MCP_OUTPUT_BASE_URL is set): base URL + sandbox-relative path, percent-encoded.

No examples provided.

add_table ~1,778

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
actualTextboolean–Untagged output: wrap reordered shaped runs and RTL runs in /ActualText so extract_text returns reading order. Default true; false = bare 1.7.0 glyph runs. No effect on tagged (pdfA) output.
autoFitColumnsboolean–Auto-fit column widths to content. Output bytes then depend on text metrics (not byte-deterministic across content changes).
captionstring–Caption rendered above the table (tagged as /Caption under PDF/A).
cellBordersobject–Per-cell vector borders (pure strokes, PDF/A-safe). Choose individual sides or `all`.
cellPaddingnumber–Horizontal cell padding in points (default 3).
cellVAlignstring–Vertical alignment of cell content.
clipCellsboolean–Clip cell contents to the column bounds (PDF clip operators). Recommended for PDF/A and visual safety.
compressboolean–FlateDecode the streams (smaller file, different bytes; PDF/A unaffected, XMP stays plain). Default false.
creationDatestring–ISO-8601 instant for /CreationDate (+ XMP, the trailer /ID and the {date} placeholder), written in UTC. Pin it for byte-identical output across calls and hosts; omitted = wall clock, so every call di…
debugboolean–Draw margin / block / cell guide rectangles (unmarked content — not for PDF/UA output). Geometry unchanged. Default false.
directionstring–Base text direction (UAX #9): 'auto' reads each paragraph's first strong character and right-aligns RTL ones; 'ltr' / 'rtl' force it. A paragraph's own direction overrides it. Omitted = LTR (1.7.0 by…
embedFontsboolean–Embed Noto Sans Latin instead of the viewer base-14 Helvetica. REQUIRED for a valid PDF/A or PDF/X claim (every font embedded) and for strict=true; adds ~0.3 MiB.
encryptobject–Encrypt 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.
footerTemplateobject–Running footer on every page. Replaces the default footer: footerText is then ignored and page numbers appear only via {page}/{pages}.
footerTextstring–Optional text rendered at the bottom of every page.
headerTemplateobject–Running header on every page (left / center / right zones); reserves 15 pt.
headersarrayyesColumn header labels. Must have the same length as each row in `rows`.
includeDiagnosticsboolean–Return the diagnostics raised while building (PDFA_*, PDFX_*, TYPOGRAPHY_*, TEXT_GLYPH_NOT_COVERED) as `diagnostics[]` (possibly empty).
infoItemsarray–Optional key-value metadata rows rendered below the title (e.g. date, author).
marginsobject–Margins in points, all four required (0–200). Default 45 / 36 / 35 / 36.
metadataobject–/Info (+ XMP under PDF/A): author, subject, keywords, /Trapped.
minRowHeightnumber–Minimum row height in points (default 12).
outputIntentobject–Custom OutputIntent (under pdfA or pdfx): an RGB, CMYK or Gray ICC profile + condition strings, replacing the built-in sRGB intent. The profile must be a real ICC file ('acsp' signature, consistent s…
outputModestring–Either 'base64' (returns the PDF inline) or 'file' (writes to a sandboxed path inside PDFNATIVE_MCP_OUTPUT_DIR).
outputPathstring–Required when outputMode='file'. Relative path inside the sandbox; must end with .pdf.
pageSizestring–Portrait 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.
pdfAstring–PDF/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…
pdfxstring–PDF/X-4 print exchange (ISO 15930-7). REQUIRES outputIntent with the printer's ICC profile (device class 'prtr'; CMYK or Gray — none is bundled); needs embedFonts:true for a conformant file (PDFX_NO_…
printobject–Print 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),…
repeatHeaderboolean–Repeat 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`.
strictboolean–Fail instead of producing a file the engine warns about: a PDFA_* diagnostic → PDF_A_COMPLIANCE_VIOLATION (e.g. PDFA_NO_FONT_ENTRIES without embedFonts), a PDFX_* one → PDF_X_COMPLIANCE_VIOLATION, an…
titlestringyesReport title rendered at the top of the document and used as PDF metadata title.
typographyobject–Fine typography, all opt-in (omitted = unchanged bytes). kerning and fontFeatures need embedFonts:true ('fr' works on base-14 too). No hyphenation dictionary is installed: use soft hyphens (U+00AD).…
viewerPreferencesobject–Reader presentation hints (catalog /PageLayout, /PageMode, /ViewerPreferences). PDF/A-safe; all optional.
watermarkobject–Optional semi-transparent watermark rendered centred on every page: `text` (e.g. 'DRAFT'), `image` (JPEG/PNG/JPEG 2000), or both combined. At least one of text / image is required. opacity < 1.0 (tex…
wrapstring–Cell wrap policy: 'auto' (default) wraps only overflowing cells; 'always' wraps every cell; 'never' truncates.
zebraboolean–Alternate-row light tint (static fill, PDF/A-1b safe).
NameTypeReqDescription
diagnosticsarray–Engine diagnostics (when includeDiagnostics=true).
filePathstring–Sandboxed absolute path (file mode).
modestringyes–
sizeBytesintegeryes–
summaryobject–Tool-specific summary, when produced.
urlstring–Public URL of the file (file mode, only when PDFNATIVE_MCP_OUTPUT_BASE_URL is set): base URL + sandbox-relative path, percent-encoded.

No examples provided.

annotate_pdf ~283

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, link (needs url — http:, https: or mailto:; the rect is the clickable area). 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).
outputPathstring–Required when outputMode='file'. Relative path inside the sandbox; must end with .pdf (no absolute paths, no '..').
pdfBase64stringyesBase64-encoded source PDF to annotate.
NameTypeReqDescription
diagnosticsarray–Engine diagnostics (when includeDiagnostics=true).
filePathstring–Sandboxed absolute path (file mode).
modestringyes–
sizeBytesintegeryes–
summaryobject–Tool-specific summary, when produced.
urlstring–Public URL of the file (file mode, only when PDFNATIVE_MCP_OUTPUT_BASE_URL is set): base URL + sandbox-relative path, percent-encoded.

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).
outputPathstring–Required when outputMode='file'. Relative path inside the sandbox; must end with .pdf.
passwordstring–Password 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
diagnosticsarray–Engine diagnostics (when includeDiagnostics=true).
filePathstring–Sandboxed absolute path (file mode).
modestringyes–
sizeBytesintegeryes–
summaryobject–Tool-specific summary, when produced.
urlstring–Public URL of the file (file mode, only when PDFNATIVE_MCP_OUTPUT_BASE_URL is set): base URL + sandbox-relative path, percent-encoded.

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
actualBehaviorstring–What actually happened (defaults to the reproduction result when omitted).
affectedPackagesarray–Packages 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.
outputPathstring–Relative .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.
targetRepostring–Destination 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.
filePathstring–Sandboxed absolute path (when outputMode='file').
issueTypestringyes–
outputModestringyes–
sizeBytesintegeryes–
targetRepostringyes–
titlestringyes–
urlstring–Public URL of the draft (file mode, only when PDFNATIVE_MCP_OUTPUT_BASE_URL is set).
warningsarrayyes–

No examples provided.

embed_image ~1,595

PDF with one embedded JPEG, PNG or JPEG 2000 image (base64; PNG without alpha channel; JPEG 2000 passed through as /JPXDecode) 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
actualTextboolean–Untagged output: wrap reordered shaped runs and RTL runs in /ActualText so extract_text returns reading order. Default true; false = bare 1.7.0 glyph runs. No effect on tagged (pdfA) output.
alignstring–Horizontal placement of the image inside the content width.
altstring–Accessible description of the image (tagged /Figure /Alt). Provide it for non-decorative images under PDF/A or PDF/UA.
captionstring–Optional caption rendered below the image.
compressboolean–FlateDecode the streams (smaller file, different bytes; PDF/A unaffected, XMP stays plain). Default false.
creationDatestring–ISO-8601 instant for /CreationDate (+ XMP, the trailer /ID and the {date} placeholder), written in UTC. Pin it for byte-identical output across calls and hosts; omitted = wall clock, so every call di…
debugboolean–Draw margin / block / cell guide rectangles (unmarked content — not for PDF/UA output). Geometry unchanged. Default false.
directionstring–Base text direction (UAX #9): 'auto' reads each paragraph's first strong character and right-aligns RTL ones; 'ltr' / 'rtl' force it. A paragraph's own direction overrides it. Omitted = LTR (1.7.0 by…
embedFontsboolean–Embed Noto Sans Latin instead of the viewer base-14 Helvetica. REQUIRED for a valid PDF/A or PDF/X claim (every font embedded) and for strict=true; adds ~0.3 MiB.
encryptobject–Encrypt 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.
footerTemplateobject–Running footer on every page. Replaces the default footer: footerText is then ignored and page numbers appear only via {page}/{pages}.
headerTemplateobject–Running header on every page (left / center / right zones); reserves 15 pt.
heightnumber–Render 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), PNG (8-bit greyscale/RGB, non-interlaced; alpha-channel and palette PNGs are rejected with…
includeDiagnosticsboolean–Return the diagnostics raised while building (PDFA_*, PDFX_*, TYPOGRAPHY_*, TEXT_GLYPH_NOT_COVERED) as `diagnostics[]` (possibly empty).
marginsobject–Margins 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). 'image/jp2' accepts a JP2 file (.jp2/.jpx) or a raw JPEG 2000 codestream (.j2k/.j2c).
outputIntentobject–Custom OutputIntent (under pdfA or pdfx): an RGB, CMYK or Gray ICC profile + condition strings, replacing the built-in sRGB intent. The profile must be a real ICC file ('acsp' signature, consistent s…
outputModestring–Either 'base64' (returns the PDF inline) or 'file' (writes to a sandboxed path inside PDFNATIVE_MCP_OUTPUT_DIR).
outputPathstring–Required when outputMode='file'. Relative path inside the sandbox; must end with .pdf.
pageSizestring–Portrait 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.
pdfAstring–PDF/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…
pdfxstring–PDF/X-4 print exchange (ISO 15930-7). REQUIRES outputIntent with the printer's ICC profile (device class 'prtr'; CMYK or Gray — none is bundled); needs embedFonts:true for a conformant file (PDFX_NO_…
printobject–Print 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),…
strictboolean–Fail instead of producing a file the engine warns about: a PDFA_* diagnostic → PDF_A_COMPLIANCE_VIOLATION (e.g. PDFA_NO_FONT_ENTRIES without embedFonts), a PDFX_* one → PDF_X_COMPLIANCE_VIOLATION, an…
titlestringyesDocument title rendered at the top and used as PDF metadata title.
typographyobject–Fine typography, all opt-in (omitted = unchanged bytes). kerning and fontFeatures need embedFonts:true ('fr' works on base-14 too). No hyphenation dictionary is installed: use soft hyphens (U+00AD).…
widthnumber–Render width in points. If omitted, the image is auto-sized to fit the page.
NameTypeReqDescription
diagnosticsarray–Engine diagnostics (when includeDiagnostics=true).
filePathstring–Sandboxed absolute path (file mode).
modestringyes–
sizeBytesintegeryes–
summaryobject–Tool-specific summary, when produced.
urlstring–Public URL of the file (file mode, only when PDFNATIVE_MCP_OUTPUT_BASE_URL is set): base URL + sandbox-relative path, percent-encoded.

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
algorithmstring–aes128 (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).
outputPathstring–Required when outputMode='file'. Relative path inside the sandbox; must end with .pdf.
ownerPasswordstringyesOwner password (full access).
passwordstring–Current 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).
permissionsobject–Permission flags; each defaults to allowed.
userPasswordstring–Open password; omitted/empty = opens without a prompt.
NameTypeReqDescription
diagnosticsarray–Engine diagnostics (when includeDiagnostics=true).
filePathstring–Sandboxed absolute path (file mode).
modestringyes–
sizeBytesintegeryes–
summaryobject–Tool-specific summary, when produced.
urlstring–Public URL of the file (file mode, only when PDFNATIVE_MCP_OUTPUT_BASE_URL is set): base URL + sandbox-relative path, percent-encoded.

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
fieldsarray–Optional dot-path projection applied to the structured result (e.g. ['attachments.name']). Composes after verbosity. Unknown paths are omitted.
filenamestring–Optional exact attachment name to extract. When omitted, every embedded file is returned.
includeDataboolean–When true (default) each attachment carries its decoded payload as dataBase64. Set false for a metadata-only probe (names, sizes, relationships) with no payload bytes.
passwordstring–Password (user or owner) of an encrypted source. Never logged or echoed.
pdfBase64stringyesBase64-encoded PDF bytes to read embedded files from.
verbositystring–Response 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
dropAnnotationsboolean–When true, drop ALL annotations. Default keeps self-contained URI link annotations.
encryptobject–Re-encrypt the output (Standard Security Handler; AES-128 default or AES-256; RC4 never emitted).
maxOutputSizeBytesinteger–Maximum 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).
outputPathstring–Required 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.
passwordstring–Password (user or owner) of an encrypted source. Never logged or echoed.
pdfBase64stringyesBase64-encoded source PDF. Pass `password` for an encrypted source.
NameTypeReqDescription
diagnosticsarray–Engine diagnostics (when includeDiagnostics=true).
filePathstring–Sandboxed absolute path (file mode).
modestringyes–
sizeBytesintegeryes–
summaryobject–Tool-specific summary, when produced.
urlstring–Public URL of the file (file mode, only when PDFNATIVE_MCP_OUTPUT_BASE_URL is set): base URL + sandbox-relative path, percent-encoded.

No examples provided.

extract_text ~601

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). Tagged content carrying /ActualText (every pdfA document this server writes) returns that SOURCE text, in logical order; untagged right-to-left and reordered shaped runs (Arabic, Hebrew, Indic, Khmer, Myanmar, …) carry /ActualText since pdfnative 1.9 and come back in logical order too — only a Thai above-vowel + tone-mark pair still reads in drawn order untagged. onStreamError: 'limit' (default) fails only on a stream over the decompression cap (PDF_PARSE_FAILED), 'throw' fails on any undecodable stream, 'skip' returns the page without that stream's text. Encrypted sources: pass `password` (PASSWORD_REQUIRED / PASSWORD_INVALID otherwise). Token-frugal: verbosity:'summary', fields:[…].

NameTypeReqDescription
fieldsarray–Optional dot-path projection applied to the structured result (e.g. ['fullText'] or ['extractable']). Composes after verbosity. Unknown paths are omitted.
includeRunsboolean–When 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…
maxTextLengthinteger–Hard cap on total extracted characters across all pages (memory bound for adversarial input). Default 16000000. Exceeding it fails with OUTPUT_TOO_LARGE.
onStreamErrorstring–'limit' (default): a stream over the decompression cap (PDFNATIVE_MCP_MAX_INFLATE_BYTES) fails with PDF_PARSE_FAILED; other damaged streams are skipped. 'throw': any undecodable stream fails the call…
pagesarray–Optional 0-based page indices to extract. When omitted, every page is extracted.
passwordstring–Password (user or owner) of an encrypted source. Never logged or echoed.
pdfBase64stringyesBase64-encoded PDF bytes.
verbositystring–Response 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
charCountinteger–summary only: length of fullText.
extractableboolean–False 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…
extractableReasonstring–Present 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
flattenboolean–When true, stamp appearances into page content and remove the interactive fields after filling.
nonWinAnsistring–Behaviour 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…
onUnknownFieldstring–Behaviour 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).
outputPathstring–Required when outputMode='file'. Relative path inside the sandbox; must end with .pdf.
passwordstring–Password (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.
valuesobject–Map 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
diagnosticsarray–Engine diagnostics (when includeDiagnostics=true).
filePathstring–Sandboxed absolute path (file mode).
modestringyes–
sizeBytesintegeryes–
summaryobject–Tool-specific summary, when produced.
urlstring–Public URL of the file (file mode, only when PDFNATIVE_MCP_OUTPUT_BASE_URL is set): base URL + sandbox-relative path, percent-encoded.

No examples provided.

generate_basic_pdf ~1,775

Multi-page PDF composed from ordered blocks: heading, paragraph, list, table, image (JPEG/PNG/JPEG 2000), 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
actualTextboolean–Untagged output: wrap reordered shaped runs and RTL runs in /ActualText so extract_text returns reading order. Default true; false = bare 1.7.0 glyph runs. No effect on tagged (pdfA) output.
blocksarrayyesOrdered list of content blocks composing the document body.
compressboolean–FlateDecode the streams (smaller file, different bytes; PDF/A unaffected, XMP stays plain). Default false.
creationDatestring–ISO-8601 instant for /CreationDate (+ XMP, the trailer /ID and the {date} placeholder), written in UTC. Pin it for byte-identical output across calls and hosts; omitted = wall clock, so every call di…
debugboolean–Draw margin / block / cell guide rectangles (unmarked content — not for PDF/UA output). Geometry unchanged. Default false.
directionstring–Base text direction (UAX #9): 'auto' reads each paragraph's first strong character and right-aligns RTL ones; 'ltr' / 'rtl' force it. A paragraph's own direction overrides it. Omitted = LTR (1.7.0 by…
embedFontsboolean–Embed Noto Sans Latin instead of the viewer base-14 Helvetica. REQUIRED for a valid PDF/A or PDF/X claim (every font embedded) and for strict=true; adds ~0.3 MiB.
encryptobject–Encrypt 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.
fontstring–Operator-registered custom font (the slug of a .ttf / .otf file in PDFNATIVE_MCP_FONT_DIR, e.g. 'brand-sans'): drawn first, with the bundled faces as fallbacks. Unknown slug → FONT_NOT_FOUND listing…
footerTemplateobject–Running footer on every page. Replaces the default footer: footerText is then ignored and page numbers appear only via {page}/{pages}.
footerTextstring–Optional footer text rendered at the bottom of every page.
headerTemplateobject–Running header on every page (left / center / right zones); reserves 15 pt.
includeDiagnosticsboolean–Return the diagnostics raised while building (PDFA_*, PDFX_*, TYPOGRAPHY_*, TEXT_GLYPH_NOT_COVERED) as `diagnostics[]` (possibly empty).
marginsobject–Margins in points, all four required (0–200). Default 45 / 36 / 35 / 36.
metadataobject–/Info (+ XMP under PDF/A): author, subject, keywords, /Trapped.
normalizestring–Unicode normalization before shaping ('NFC' recommended for glyph coverage; NFD/NFKC/NFKD accepted). Omit = none.
outline––Document outline (bookmarks panel). Either 'auto' (derive a flat outline from heading blocks) or an explicit nested bookmark tree.
outputIntentobject–Custom OutputIntent (under pdfA or pdfx): an RGB, CMYK or Gray ICC profile + condition strings, replacing the built-in sRGB intent. The profile must be a real ICC file ('acsp' signature, consistent s…
outputModestring–Either 'base64' (returns the PDF inline as a base64 string) or 'file' (writes to a path inside the configured PDFNATIVE_MCP_OUTPUT_DIR sandbox).
outputPathstring–Required when outputMode='file'. Relative path inside the sandbox; must end with .pdf.
pageLabelsarray–Page-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.
pageSizestring–Portrait 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.
pdfAstring–PDF/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…
pdfxstring–PDF/X-4 print exchange (ISO 15930-7). REQUIRES outputIntent with the printer's ICC profile (device class 'prtr'; CMYK or Gray — none is bundled); needs embedFonts:true for a conformant file (PDFX_NO_…
printobject–Print 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),…
strictboolean–Fail instead of producing a file the engine warns about: a PDFA_* diagnostic → PDF_A_COMPLIANCE_VIOLATION (e.g. PDFA_NO_FONT_ENTRIES without embedFonts), a PDFX_* one → PDF_X_COMPLIANCE_VIOLATION, an…
titlestringyesDocument title (rendered at top of page 1 and used as PDF metadata title).
typographyobject–Fine typography, all opt-in (omitted = unchanged bytes). kerning and fontFeatures need embedFonts:true ('fr' works on base-14 too). No hyphenation dictionary is installed: use soft hyphens (U+00AD).…
viewerPreferencesobject–Reader presentation hints (catalog /PageLayout, /PageMode, /ViewerPreferences). PDF/A-safe; all optional.
watermarkobject–Optional semi-transparent watermark rendered centred on every page: `text` (e.g. 'DRAFT'), `image` (JPEG/PNG/JPEG 2000), or both combined. At least one of text / image is required. opacity < 1.0 (tex…
NameTypeReqDescription
diagnosticsarray–Engine diagnostics (when includeDiagnostics=true).
filePathstring–Sandboxed absolute path (file mode).
modestringyes–
sizeBytesintegeryes–
summaryobject–Tool-specific summary, when produced.
urlstring–Public URL of the file (file mode, only when PDFNATIVE_MCP_OUTPUT_BASE_URL is set): base URL + sandbox-relative path, percent-encoded.

No examples provided.

inspect_layout ~877

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 — the dry run shares the pagination planner of the builder, toc blocks included. Read-only, deterministic. Token-frugal: verbosity:'summary', fields:['totalPages'].

NameTypeReqDescription
actualTextboolean–Untagged output: wrap reordered shaped runs and RTL runs in /ActualText so extract_text returns reading order. Default true; false = bare 1.7.0 glyph runs. No effect on tagged (pdfA) output.
blocksarrayyesOrdered list of content blocks composing the document body.
directionstring–Base text direction (UAX #9): 'auto' reads each paragraph's first strong character and right-aligns RTL ones; 'ltr' / 'rtl' force it. A paragraph's own direction overrides it. Omitted = LTR (1.7.0 by…
embedFontsboolean–Measure 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…
fieldsarray–Optional dot-path projection applied to the structured result (e.g. ['totalPages'] or ['pages.blocks.type']). Composes after verbosity. Unknown paths are omitted.
fontstring–Operator-registered custom font (the slug of a .ttf / .otf file in PDFNATIVE_MCP_FONT_DIR, e.g. 'brand-sans'): drawn first, with the bundled faces as fallbacks. Unknown slug → FONT_NOT_FOUND listing…
footerTemplateobject–Running footer on every page. Replaces the default footer: footerText is then ignored and page numbers appear only via {page}/{pages}.
footerTextstring–Footer text as you would pass it to generate_basic_pdf (reserves the footer band).
headerTemplateobject–Running header on every page (left / center / right zones); reserves 15 pt.
marginsobject–Margins in points, all four required (0–200). Default 45 / 36 / 35 / 36.
normalizestring–Unicode normalization before shaping ('NFC' recommended for glyph coverage; NFD/NFKC/NFKD accepted). Omit = none.
pageSizestring–Portrait 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.
pdfAstring–Tagged (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.
typographyobject–Fine typography, all opt-in (omitted = unchanged bytes). kerning and fontFeatures need embedFonts:true ('fr' works on base-14 too). No hyphenation dictionary is installed: use soft hyphens (U+00AD).…
verbositystring–'full' (default) or 'summary' (scalars only: pageWidth, pageHeight, totalPages, blockCount; pages[] and margins dropped).
NameTypeReqDescription
blockCountinteger–summary only: number of placed blocks (table slices count once each).
marginsobject–Page margins { top, right, bottom, left } in points.
pageHeightnumber–Page height in points (841.89 = A4).
pageWidthnumber–Page width in points (595.28 = A4).
pagesarray–Per-page block placement, in render order. A table that spans pages appears once per slice.
totalPagesinteger–Number of pages the blocks paginate into.

No examples provided.

inspect_pdf ~571

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
annotationsboolean–When 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…
checkarray–CI 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…
fieldsarray–Optional dot-path projection applied to the structured result (e.g. ['pageCount','signatureCount']). Composes after verbosity. Unknown paths are omitted.
pagesboolean–When true, include per-page metadata in the response.
passwordstring–Password (user or owner) of an encrypted source. Never logged or echoed.
pdfBase64stringyesBase64-encoded PDF bytes to inspect.
signaturesboolean–When 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 / pdfX / checksPassed when p…
NameTypeReqDescription
annotationCountinteger–Total number of page annotations (opt-in via the `annotations` input).
annotationsarray–Page annotations (opt-in via the `annotations` input), in page order then /Annots order. Only the keys the annotation actually carries are emitted.
attachmentCountinteger–summary only: number of embedded files.
attachmentsarray–Embedded files exposed via /Names → /EmbeddedFiles (PDF/A-3, Factur-X).
checksobject–One boolean per REQUESTED check (keys = the check[] you passed, nothing else).
checksPassedboolean–Present when check[] was supplied: true when every requested check holds.
docTimestampCountinteger–Number of /DocTimeStamp signature fields, present only when at least one exists.
dssobject–Document Security Store summary (ISO 32000-2 §12.8.4.3), present only when the catalog has a /DSS.
encryptionstring––
encryptionInfoobject–Precise 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.
hasSignaturePlaceholderboolean–True when at least one signature widget exists with empty /Contents — i.e. an unsigned placeholder awaiting `sign_pdf`.
infoobject–Document /Info dictionary entries decoded as strings.
pageCountinteger––
pageLabelsarray–Logical 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|null–Detected PDF/A claim (e.g. '1B', '2B', '2U', '3B') from XMP metadata, or null when absent.
pdfXstring–PDF/X claim from XMP (pdfxid:GTS_PDFXVersion, e.g. 'PDF/X-4'), present only when the document makes one. A claim, not a verdict: validate_pdf standard:'pdf-x-4' checks it.
perPagearray––
signatureCountinteger––
signaturesarray–Signature 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.
versionstring–PDF 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
dropAnnotationsboolean–When true, drop ALL annotations. Default (false) keeps self-contained URI link annotations and drops cross-document/widget annotations.
encryptobject–Re-encrypt the output (Standard Security Handler; AES-128 default or AES-256; RC4 never emitted).
maxOutputSizeBytesinteger–In-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).
outputPathstring–Required when outputMode='file'. Relative path inside the sandbox; must end with .pdf (no absolute paths, no '..').
passwordstring–Password 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
diagnosticsarray–Engine diagnostics (when includeDiagnostics=true).
filePathstring–Sandboxed absolute path (file mode).
modestringyes–
sizeBytesintegeryes–
summaryobject–Tool-specific summary, when produced.
urlstring–Public URL of the file (file mode, only when PDFNATIVE_MCP_OUTPUT_BASE_URL is set): base URL + sandbox-relative path, percent-encoded.

No examples provided.

prepare_signature_placeholder ~1,549

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
actualTextboolean–Untagged output: wrap reordered shaped runs and RTL runs in /ActualText so extract_text returns reading order. Default true; false = bare 1.7.0 glyph runs. No effect on tagged (pdfA) output.
blocksarray–Optional document body blocks rendered before the signature field.
compressboolean–FlateDecode the streams (smaller file, different bytes; PDF/A unaffected, XMP stays plain). Default false.
contactInfostring–Contact information for the signer.
creationDatestring–ISO-8601 instant for /CreationDate (+ XMP, the trailer /ID and the {date} placeholder), written in UTC. Pin it for byte-identical output across calls and hosts; omitted = wall clock, so every call di…
debugboolean–Draw margin / block / cell guide rectangles (unmarked content — not for PDF/UA output). Geometry unchanged. Default false.
directionstring–Base text direction (UAX #9): 'auto' reads each paragraph's first strong character and right-aligns RTL ones; 'ltr' / 'rtl' force it. A paragraph's own direction overrides it. Omitted = LTR (1.7.0 by…
embedFontsboolean–Embed Noto Sans Latin instead of the viewer base-14 Helvetica. REQUIRED for a valid PDF/A or PDF/X claim (every font embedded) and for strict=true; adds ~0.3 MiB.
fieldNamestring–Optional AcroForm field name for the signature widget (default 'Signature1').
footerTemplateobject–Running footer on every page. Replaces the default footer: footerText is then ignored and page numbers appear only via {page}/{pages}.
headerTemplateobject–Running header on every page (left / center / right zones); reserves 15 pt.
includeDiagnosticsboolean–Return the diagnostics raised while building (PDFA_*, PDFX_*, TYPOGRAPHY_*, TEXT_GLYPH_NOT_COVERED) as `diagnostics[]` (possibly empty).
locationstring–Signing location (city / country).
marginsobject–Margins in points, all four required (0–200). Default 45 / 36 / 35 / 36.
metadataobject–/Info (+ XMP under PDF/A): author, subject, keywords, /Trapped.
outputIntentobject–Custom OutputIntent (under pdfA or pdfx): an RGB, CMYK or Gray ICC profile + condition strings, replacing the built-in sRGB intent. The profile must be a real ICC file ('acsp' signature, consistent s…
outputModestring–Either 'base64' (returns the PDF inline) or 'file' (writes to a sandboxed path inside PDFNATIVE_MCP_OUTPUT_DIR).
outputPathstring–Required when outputMode='file'. Relative path inside the sandbox; must end with .pdf.
pageIndexinteger–Zero-based page index the (invisible) widget attaches to (default 0).
pageSizestring–Portrait 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.
pdfAstring–PDF/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…
placeholderBytesinteger–Reserved 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.
printobject–Print 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),…
reasonstring–Reason for signing (e.g. "Approved", "I agree to the terms").
reserveTimestampboolean–Reserve 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.
signerNamestring–Name 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…
strictboolean–Fail instead of producing a file the engine warns about: a PDFA_* diagnostic → PDF_A_COMPLIANCE_VIOLATION (e.g. PDFA_NO_FONT_ENTRIES without embedFonts), a PDFX_* one → PDF_X_COMPLIANCE_VIOLATION, an…
subFilterstring–Signature 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.
typographyobject–Fine typography, all opt-in (omitted = unchanged bytes). kerning and fontFeatures need embedFonts:true ('fr' works on base-14 too). No hyphenation dictionary is installed: use soft hyphens (U+00AD).…
NameTypeReqDescription
diagnosticsarray–Engine diagnostics (when includeDiagnostics=true).
filePathstring–Sandboxed absolute path (file mode).
modestringyes–
sizeBytesintegeryes–
summaryobject–Tool-specific summary, when produced.
urlstring–Public URL of the file (file mode, only when PDFNATIVE_MCP_OUTPUT_BASE_URL is set): base URL + sandbox-relative path, percent-encoded.

No examples provided.

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
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: PDF/A, PDF/X-4, PAdES (LTV), forms, 32 scripts, JPEG 2000, spot colours. 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 95 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 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 22,672 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 5 November 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.