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"
+}
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 / outputMode / description
Added value: +"'base64' (default) returns the PDF inline; 'file' writes it inside the PDFNATIVE_MCP_OUTPUT_DIR sandbox (SECURITY_VIOLATION when the sandbox is not configured)."
addedInput schema / properties / outputPath / description
Added value: +"Required when outputMode='file'. Relative path inside the sandbox; must end with .pdf (no absolute paths, no '..')."
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"
+}
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"
+}
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"
+}