changedInput schema / properties / autoFitColumns / description
Previous value: -"When true, column widths auto-fit content (pdfnative v1.1). Switches the backend to buildDocumentPDFBytes; byte output differs from the default path."New value: +"Auto-fit column widths to content. Output bytes then depend on text metrics (not byte-deterministic across content changes)."
changedInput schema / properties / caption / description
Previous value: -"Caption rendered above the table (and emitted as /Caption structure element in tagged/PDF/A mode). pdfnative v1.2."New value: +"Caption rendered above the table (tagged as /Caption under PDF/A)."
changedInput schema / properties / cellBorders / description
Previous value: -"Per-cell vector borders (pdfnative v1.4). Switches the backend to buildDocumentPDFBytes. Choose individual sides or `all`."New value: +"Per-cell vector borders (pure strokes, PDF/A-safe). Choose individual sides or `all`."
changedInput schema / properties / cellPadding / description
Previous value: -"Horizontal cell padding in points applied to both insets (default 3). pdfnative v1.2."New value: +"Horizontal cell padding in points (default 3)."
changedInput schema / properties / cellVAlign / description
Previous value: -"Vertical alignment of cell content (pdfnative v1.4). Switches the backend to buildDocumentPDFBytes."New value: +"Vertical alignment of cell content."
changedInput schema / properties / clipCells / description
Previous value: -"When true, cell contents are clipped to column bounds via PDF clip-path operators (pdfnative v1.1). Recommended for PDF/A and visual safety. Switches the backend to buildDocumentPDFBytes."New value: +"Clip cell contents to the column bounds (PDF clip operators). Recommended for PDF/A and visual safety."
addedInput schema / properties / compress
Added value: +{
+ "description": "FlateDecode the streams (smaller file, different bytes; PDF/A unaffected, XMP stays plain). Default false.",
+ "type": "boolean"
+}
addedInput schema / properties / creationDate
Added value: +{
+ "description": "ISO-8601 instant for /CreationDate (+ XMP). Pin it for byte-identical output across calls (same host TZ); omitted = wall clock, so every call differs.",
+ "format": "date-time",
+ "type": "string"
+}
addedInput schema / properties / debug
Added value: +{
+ "description": "Draw margin / block / cell guide rectangles (unmarked content — not for PDF/UA output). Geometry unchanged. Default false.",
+ "type": "boolean"
+}
addedInput schema / properties / embedFonts
Added value: +{
+ "default": false,
+ "description": "Embed 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.",
+ "type": "boolean"
+}
addedInput schema / properties / encrypt
Added value: +{
+ "additionalProperties": false,
+ "description": "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.",
+ "properties": {
+ "algorithm": {
+ "default": "aes128",
+ "description": "aes128 (V4/R4, widest compatibility) or aes256 (V5/R6).",
+ "enum": [
+ "aes128",
+ "aes256"
+ ],
+ "type": "string"
+ },
+ "ownerPassword": {
+ "description": "Owner password (full access).",
+ "maxLength": 4096,
+ "minLength": 1,
+ "type": "string"
+ },
+ "permissions": {
+ "additionalProperties": false,
+ "description": "Permission flags; each defaults to allowed.",
+ "properties": {
+ "copy": {
+ "type": "boolean"
+ },
+ "extractText": {
+ "type": "boolean"
+ },
+ "modify": {
+ "type": "boolean"
+ },
+ "print": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "userPassword": {
+ "description": "Open password; omitted/empty = opens without a prompt.",
+ "maxLength": 4096,
+ "type": "string"
+ }
+ },
+ "required": [
+ "ownerPassword"
+ ],
+ "type": "object"
+}
addedInput schema / properties / footerTemplate
Added value: +{
+ "additionalProperties": false,
+ "description": "Running footer on every page. Replaces the default footer: footerText is then ignored and page numbers appear only via {page}/{pages}.",
+ "properties": {
+ "center": {
+ "description": "Placeholders: {page} {pages} {title} {date} (build-day wall clock, not creationDate).",
+ "maxLength": 200,
+ "type": "string"
+ },
+ "color": {
+ "description": "Hex colour.",
+ "pattern": "^#[0-9a-fA-F]{6}$",
+ "type": "string"
+ },
+ "fontSize": {
+ "description": "Default 7.",
+ "maximum": 14,
+ "minimum": 6,
+ "type": "number"
+ },
+ "left": {
+ "description": "Placeholders: {page} {pages} {title} {date} (build-day wall clock, not creationDate).",
+ "maxLength": 200,
+ "type": "string"
+ },
+ "right": {
+ "description": "Placeholders: {page} {pages} {title} {date} (build-day wall clock, not creationDate).",
+ "maxLength": 200,
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / headerTemplate
Added value: +{
+ "additionalProperties": false,
+ "description": "Running header on every page (left / center / right zones); reserves 15 pt.",
+ "properties": {
+ "center": {
+ "description": "Placeholders: {page} {pages} {title} {date} (build-day wall clock, not creationDate).",
+ "maxLength": 200,
+ "type": "string"
+ },
+ "color": {
+ "description": "Hex colour.",
+ "pattern": "^#[0-9a-fA-F]{6}$",
+ "type": "string"
+ },
+ "fontSize": {
+ "description": "Default 7.",
+ "maximum": 14,
+ "minimum": 6,
+ "type": "number"
+ },
+ "left": {
+ "description": "Placeholders: {page} {pages} {title} {date} (build-day wall clock, not creationDate).",
+ "maxLength": 200,
+ "type": "string"
+ },
+ "right": {
+ "description": "Placeholders: {page} {pages} {title} {date} (build-day wall clock, not creationDate).",
+ "maxLength": 200,
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / includeDiagnostics
Added value: +{
+ "default": false,
+ "description": "Return the PDF/A diagnostics raised while building as `diagnostics[]` (possibly empty).",
+ "type": "boolean"
+}
addedInput schema / properties / margins
Added value: +{
+ "additionalProperties": false,
+ "description": "Margins in points, all four required (0–200). Default 45 / 36 / 35 / 36.",
+ "properties": {
+ "bottom": {
+ "maximum": 200,
+ "minimum": 0,
+ "type": "number"
+ },
+ "left": {
+ "maximum": 200,
+ "minimum": 0,
+ "type": "number"
+ },
+ "right": {
+ "maximum": 200,
+ "minimum": 0,
+ "type": "number"
+ },
+ "top": {
+ "maximum": 200,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "required": [
+ "top",
+ "right",
+ "bottom",
+ "left"
+ ],
+ "type": "object"
+}
addedInput schema / properties / metadata
Added value: +{
+ "additionalProperties": false,
+ "description": "/Info (+ XMP under PDF/A): author, subject, keywords, /Trapped.",
+ "properties": {
+ "author": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "keywords": {
+ "maxLength": 1000,
+ "type": "string"
+ },
+ "subject": {
+ "maxLength": 1000,
+ "type": "string"
+ },
+ "trapped": {
+ "description": "/Trapped print flag.",
+ "enum": [
+ "True",
+ "False",
+ "Unknown"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
changedInput schema / properties / minRowHeight / description
Previous value: -"Minimum row height in points (default 12). pdfnative v1.2."New value: +"Minimum row height in points (default 12)."
addedInput schema / properties / outputIntent
Added value: +{
+ "additionalProperties": false,
+ "description": "Custom PDF/A OutputIntent: an RGB ICC profile + condition strings replacing the built-in sRGB intent (CMYK rejected).",
+ "properties": {
+ "iccProfileBase64": {
+ "description": "ICC profile bytes, base64 (RGB, ≤ 8 MiB).",
+ "maxLength": 11000000,
+ "minLength": 1,
+ "type": "string"
+ },
+ "info": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "outputCondition": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "outputConditionIdentifier": {
+ "description": "e.g. \"sRGB IEC61966-2.1\".",
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "registryName": {
+ "description": "Default \"http://www.color.org\".",
+ "maxLength": 200,
+ "type": "string"
+ }
+ },
+ "required": [
+ "iccProfileBase64",
+ "outputConditionIdentifier"
+ ],
+ "type": "object"
+}
addedInput schema / properties / pageSize
Added value: +{
+ "description": "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.",
+ "enum": [
+ "A4",
+ "Letter",
+ "Legal",
+ "A3",
+ "Tabloid"
+ ],
+ "type": "string"
+}
changedInput schema / properties / pdfA / description
Previous value: -"Optional PDF/A conformance level (powered by pdfnative v1.2). Use 'pdfa1b' for archival of simple text+images, 'pdfa2b'/'pdfa2u' for richer content (2u guarantees Unicode mapping), 'pdfa3b' when embedding source attachments (Factur-X / ZUGFeRD). Mutually exclusive with PDF encryption. See docs/guides/PDFA.md."New value: +"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 docs/guides/PDFA.md."
addedInput schema / properties / print
Added value: +{
+ "additionalProperties": false,
+ "description": "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). See docs/guides/PRINT.md.",
+ "properties": {
+ "artBox": {
+ "description": "[x0, y0, x1, y1] in points, origin bottom-left, inside the MediaBox.",
+ "items": {
+ "type": "number"
+ },
+ "maxItems": 4,
+ "minItems": 4,
+ "type": "array"
+ },
+ "bleed": {
+ "description": "Bleed in points (8.5 = 3 mm); sets TrimBox = MediaBox inset. Exclusive with trimBox.",
+ "exclusiveMinimum": 0,
+ "maximum": 200,
+ "type": "number"
+ },
+ "bleedBox": {
+ "description": "[x0, y0, x1, y1] in points, origin bottom-left, inside the MediaBox.",
+ "items": {
+ "type": "number"
+ },
+ "maxItems": 4,
+ "minItems": 4,
+ "type": "array"
+ },
+ "cropBox": {
+ "description": "[x0, y0, x1, y1] in points, origin bottom-left, inside the MediaBox.",
+ "items": {
+ "type": "number"
+ },
+ "maxItems": 4,
+ "minItems": 4,
+ "type": "array"
+ },
+ "marks": {
+ "description": "Printer's marks (needs bleed or trimBox): true for defaults, or an object.",
+ "oneOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "crop": {
+ "description": "Corner crop (trim) marks. Default true.",
+ "type": "boolean"
+ },
+ "length": {
+ "description": "Mark length in points. Default 14.",
+ "maximum": 100,
+ "minimum": 1,
+ "type": "number"
+ },
+ "offset": {
+ "description": "Gap between TrimBox and marks in points. Default 5.",
+ "maximum": 100,
+ "minimum": 0,
+ "type": "number"
+ },
+ "registration": {
+ "description": "Edge-midpoint registration targets. Default true.",
+ "type": "boolean"
+ },
+ "weight": {
+ "description": "Stroke width in points. Default 0.25.",
+ "maximum": 5,
+ "minimum": 0.05,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ }
+ ]
+ },
+ "trimBox": {
+ "description": "[x0, y0, x1, y1] in points, origin bottom-left, inside the MediaBox.",
+ "items": {
+ "type": "number"
+ },
+ "maxItems": 4,
+ "minItems": 4,
+ "type": "array"
+ },
+ "userUnit": {
+ "description": "/UserUnit (multiples of 1/72 in) for pages over 14400 pt. Rejected under pdfa1b.",
+ "maximum": 75000,
+ "minimum": 1,
+ "type": "number"
+ }
+ },
+ "type": "object"
+}
changedInput schema / properties / repeatHeader / description
Previous value: -"Repeat the header row on every continuation page (pdfnative v1.2). Default true."New value: +"Repeat the header row on every continuation page (default true)."
addedInput schema / properties / strict
Added value: +{
+ "default": false,
+ "description": "Fail 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.",
+ "type": "boolean"
+}
addedInput schema / properties / viewerPreferences / properties / duplex
Added value: +{
+ "description": "Print-dialog paper handling default (/Duplex): single-sided or double-sided flipping on the short/long edge.",
+ "enum": [
+ "simplex",
+ "duplexFlipShortEdge",
+ "duplexFlipLongEdge"
+ ],
+ "type": "string"
+}
addedInput schema / properties / viewerPreferences / properties / numCopies
Added value: +{
+ "description": "Default number of copies for the Print dialog (/NumCopies; viewers honour 2-5 per ISO 32000 Table 150).",
+ "maximum": 1000,
+ "minimum": 1,
+ "type": "integer"
+}
addedInput schema / properties / viewerPreferences / properties / pickTrayByPDFSize
Added value: +{
+ "description": "Ask the printer to pick the input tray from the PDF page size (/PickTrayByPDFSize).",
+ "type": "boolean"
+}
addedInput schema / properties / viewerPreferences / properties / printPageRange
Added value: +{
+ "description": "Default page ranges for the Print dialog (/PrintPageRange) as inclusive 1-based [first, last] pairs, e.g. [[1, 4], [7, 7]].",
+ "items": {
+ "items": {
+ "minimum": 1,
+ "type": "integer"
+ },
+ "maxItems": 2,
+ "minItems": 2,
+ "type": "array"
+ },
+ "maxItems": 100,
+ "type": "array"
+}
changedInput schema / properties / watermark / description
Previous value: -"Optional semi-transparent text watermark rendered on every page (e.g. 'DRAFT', 'CONFIDENTIAL'). Text only in this version. opacity < 1.0 is rejected under pdfA='pdfa1b' (ISO 19005-1 forbids transparency)."New value: +"Optional 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, including the defaults) is rejected under pdfA='pdfa1b' (ISO 19005-1 forbids transparency)."
changedInput schema / properties / watermark / properties / angle / description
Previous value: -"Rotation in degrees (counterclockwise). Default -45."New value: +"Text rotation in degrees (counterclockwise). Default -45."
changedInput schema / properties / watermark / properties / color / description
Previous value: -"RGB colour as a [r, g, b] triple in the 0.0–1.0 range. Default light gray [0.75, 0.75, 0.75]."New value: +"Text RGB colour as a [r, g, b] triple in the 0.0–1.0 range. Default light gray [0.75, 0.75, 0.75]."
changedInput schema / properties / watermark / properties / fontSize / description
Previous value: -"Font size in points. Default 60, auto-fit to the page."New value: +"Text font size in points. Default 60, auto-fit to the page."
addedInput schema / properties / watermark / properties / image
Added value: +{
+ "additionalProperties": false,
+ "description": "Image watermark (JPEG or PNG) centred on every page, optionally combined with `text`. Bytes are validated against the JPEG/PNG magic numbers; mimeType must match.",
+ "properties": {
+ "height": {
+ "description": "Display height in points (default: from the image pixel size).",
+ "exclusiveMinimum": 0,
+ "maximum": 14400,
+ "type": "number"
+ },
+ "imageBase64": {
+ "description": "Base64-encoded JPEG or 8-bit opaque PNG bytes (max 8 MiB decoded; alpha-channel, palette and interlaced PNGs are rejected with a remedy). Plain base64, no data: URI prefix.",
+ "maxLength": 12000000,
+ "minLength": 4,
+ "type": "string"
+ },
+ "mimeType": {
+ "description": "'image/jpeg' or 'image/png' — must match the actual bytes.",
+ "enum": [
+ "image/jpeg",
+ "image/png"
+ ],
+ "type": "string"
+ },
+ "opacity": {
+ "description": "Image opacity 0.0–1.0. Default 0.10.",
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "width": {
+ "description": "Display width in points (default: from the image pixel size).",
+ "exclusiveMinimum": 0,
+ "maximum": 14400,
+ "type": "number"
+ }
+ },
+ "required": [
+ "imageBase64",
+ "mimeType"
+ ],
+ "type": "object"
+}
changedInput schema / properties / watermark / properties / opacity / description
Previous value: -"Opacity 0.0–1.0. Default 0.15."New value: +"Text opacity 0.0–1.0. Default 0.15. (Image opacity is image.opacity.)"
changedInput schema / properties / watermark / properties / position / description
Previous value: -"'background' (behind page content, default) or 'foreground' (above it)."New value: +"'background' (behind page content, default) or 'foreground' (above it). Applies to text and image alike."
changedInput schema / properties / watermark / properties / text / description
Previous value: -"Watermark text."New value: +"Watermark text. Optional when `image` is given."
removedInput schema / properties / watermark / required
Removed value: -[
- "text"
-]
changedInput schema / properties / wrap / description
Previous value: -"Cell wrap policy (pdfnative v1.2). 'auto' (default) wraps only when a cell overflows; 'always' wraps every cell; 'never' uses v1.1 character truncation."New value: +"Cell wrap policy: 'auto' (default) wraps only overflowing cells; 'always' wraps every cell; 'never' truncates."
changedInput schema / properties / zebra / description
Previous value: -"Enable zebra striping (alternate-row light tint, PDF/A-1b safe). pdfnative v1.2."New value: +"Alternate-row light tint (static fill, PDF/A-1b safe)."
changedOutput schema / description
Previous value: -"Structured result of a PDF-producing tool. In base64 mode the PDF bytes are delivered out-of-band as an embedded `resource` content block (data: URI), NOT duplicated here, to keep responses token-frugal. In file mode `filePath` is the sandboxed absolute path."New value: +"Result of a PDF-producing tool. base64 mode: the PDF arrives as an embedded `resource` content block (not duplicated here); file mode: `filePath`."
addedOutput schema / properties / diagnostics
Added value: +{
+ "description": "PDF/A diagnostics (when includeDiagnostics=true).",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ },
+ "severity": {
+ "enum": [
+ "warning"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "message",
+ "severity"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+}
changedOutput schema / properties / filePath / description
Previous value: -"Absolute sandboxed file path (when mode='file')."New value: +"Sandboxed absolute path (file mode)."
addedOutput schema / properties / summary
Added value: +{
+ "additionalProperties": true,
+ "description": "Tool-specific summary, when produced.",
+ "type": "object"
+}