Skip to main content
Glama

Server Details

Automate enterprise-grade documents from templates, merge and 100+ conversions: PDF, Office, HTML.

Ownership verified

The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.

If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.

Status
Unhealthy
Uptime
75.7% over 83 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP
URL
Repository
carboneio/carbone-mcp
GitHub Stars
6
Server Listing
Carbone MCP
ChatGPT
–
Claude
Carbone

TDQS

A4.5/5.0

Scored across 12 tools

Disambiguation5/5

Each tool targets a distinct resource+action. convert_document vs render_document is explicitly delineated (pure conversion vs data injection), inspect_template vs list_tags differ clearly, and the three list_* tools cover distinct collections (templates, categories, tags).

Naming Consistency5/5

All 12 tools follow a strict verb_noun snake_case convention: convert_document, delete_template, download_template, get_api_status, get_capabilities, inspect_template, list_categories, list_tags, list_templates, render_document, update_template_metadata, upload_template.

Tool Count5/5

12 tools is well within the ideal 3-15 range and each earns its place, covering the template lifecycle plus conversion, inspection and diagnostics without redundancy.

Completeness4/5

Strong coverage of the template lifecycle (upload, download, delete, update metadata, list, inspect, render, convert) plus utilities. Minor gaps: categories/tags can only be listed, not created or managed, and there is no single-template get beyond list_templates.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updates
    • Changedconvert_document11 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedInput schema / properties / asAttachment / description
        Previous value: -"If true, return the document as a downloadable file attachment (a base64 EmbeddedResource), for any format. Default delivery: text and png/jpg/gif/webp are returned inline; other binary outputs (PDF, Office, …) are saved to a temp file in stdio mode (path returned), or returned as an attachment in HTTP mode. Ignored when outputPath or returnLink is set."New value: +"If true, return the document as a downloadable file attachment (a base64 EmbeddedResource), for any format. Default delivery: text and png/jpg/gif/webp are returned inline; other binary outputs (PDF, Office, …) are returned as an attachment. Ignored when outputPath or returnLink is set."
      • changedInput schema / properties / convertTo / anyOf
        Previous value: -[
        -  {
        -    "enum": [
        -      "pdf",
        -      "docx",
        -      "doc",
        -      "xlsx",
        -      "xls",
        -      "pptx",
        -      "ppt",
        -      "odt",
        -      "ods",
        -      "odp",
        -      "odg",
        -      "html",
        -      "xhtml",
        -      "txt",
        -      "csv",
        -      "md",
        -      "xml",
        -      "rtf",
        -      "png",
        -      "jpg",
        -      "jpeg",
        -      "webp",
        -      "svg",
        -      "tiff",
        -      "bmp",
        -      "gif",
        -      "zip",
        -      "idml",
        -      "epub",
        -      "cdr"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "properties": {
        -      "formatName": {
        -        "description": "Target format name.",
        -        "enum": [
        -          "pdf",
        -          "docx",
        -          "doc",
        -          "xlsx",
        -          "xls",
        -          "pptx",
        -          "ppt",
        -          "odt",
        -          "ods",
        -          "odp",
        -          "odg",
        -          "html",
        -          "xhtml",
        -          "txt",
        -          "csv",
        -          "md",
        -          "xml",
        -          "rtf",
        -          "png",
        -          "jpg",
        -          "jpeg",
        -          "webp",
        -          "svg",
        -          "tiff",
        -          "bmp",
        -          "gif",
        -          "zip",
        -          "idml",
        -          "epub",
        -          "cdr"
        -        ],
        -        "type": "string"
        -      },
        -      "formatOptions": {
        -        "additionalProperties": {},
        -        "description": "Advanced format options object. Examples by format: PDF — { \"EncryptFile\": true, \"DocumentOpenPassword\": \"secret\", \"DocumentPermissionPassword\": \"owner\" } password-protect; PDF — { \"Watermarks\": [{ \"text\": \"DRAFT\", \"opacity\": 0.2, \"rotation\": -45, \"fontsize\": 60 }] } up to 5 watermarks; PDF — { \"SelectPdfVersion\": 1 } PDF/A-1b compliance (use 2 for PDF/A-2, 3 for PDF/A-3); PDF — { \"PageRange\": \"1-3,5\" } export specific pages only; PDF — { \"ConvertSlideshow\": true } convert each slide to a separate PDF page; Images (PNG/JPG/WEBP) — { \"Quality\": 90 } set compression quality 0-100; Images — { \"density\": 150 } set DPI for rasterisation (default 96); CSV — { \"fieldSeparator\": \";\" } custom column separator.",
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "formatName"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "pdf",
        +      "docx",
        +      "doc",
        +      "odt",
        +      "ott",
        +      "rtf",
        +      "epub",
        +      "xlsx",
        +      "xls",
        +      "ods",
        +      "ots",
        +      "csv",
        +      "dbf",
        +      "dif",
        +      "pptx",
        +      "ppt",
        +      "odp",
        +      "otp",
        +      "odg",
        +      "html",
        +      "xhtml",
        +      "txt",
        +      "md",
        +      "xml",
        +      "idml",
        +      "png",
        +      "jpg",
        +      "jpeg",
        +      "webp",
        +      "gif",
        +      "tiff",
        +      "bmp",
        +      "svg",
        +      "emf",
        +      "wmf",
        +      "eps"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "properties": {
        +      "formatName": {
        +        "description": "Target format name.",
        +        "enum": [
        +          "pdf",
        +          "docx",
        +          "doc",
        +          "odt",
        +          "ott",
        +          "rtf",
        +          "epub",
        +          "xlsx",
        +          "xls",
        +          "ods",
        +          "ots",
        +          "csv",
        +          "dbf",
        +          "dif",
        +          "pptx",
        +          "ppt",
        +          "odp",
        +          "otp",
        +          "odg",
        +          "html",
        +          "xhtml",
        +          "txt",
        +          "md",
        +          "xml",
        +          "idml",
        +          "png",
        +          "jpg",
        +          "jpeg",
        +          "webp",
        +          "gif",
        +          "tiff",
        +          "bmp",
        +          "svg",
        +          "emf",
        +          "wmf",
        +          "eps"
        +        ],
        +        "type": "string"
        +      },
        +      "formatOptions": {
        +        "additionalProperties": {},
        +        "description": "Format-specific options. Examples: PDF password: { \"EncryptFile\": true, \"DocumentOpenPassword\": \"s3cr3t\" }; PDF permissions: { \"RestrictPermissions\": true, \"PermissionPassword\": \"owner\" }; PDF watermarks (max 4): { \"Watermarks\": [{ \"text\": \"DRAFT\", \"size\": 60, \"opacity\": 0.2, \"rotation\": -45 }] }; PDF/A (L only): { \"SelectPdfVersion\": 2 } (2 = PDF/A-2b, 3 = PDF/A-3b, 4 = PDF/A-4); page selection (L only): { \"PageRange\": \"1-5\" }; accessibility (L only): { \"UseTaggedPDF\": true, \"PDFUACompliance\": true }; JPG/PNG: { \"PixelWidth\": 1200, \"PixelHeight\": 630 }, JPG quality: { \"Quality\": 80 } (1-100); CSV: { \"fieldSeparator\": \";\" }. All options: https://carbone.io/documentation/developer/http-api/generate-reports.html#pdf-options",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "formatName"
        +    ],
        +    "type": "object"
        +  }
        +]
      • changedInput schema / properties / convertTo / description
        Previous value: -"Target output format. Documents : \"pdf\", \"docx\", \"xlsx\", \"pptx\", \"odt\", \"ods\", \"odp\", \"odg\", \"rtf\", \"epub\", plus the legacy \"doc\", \"xls\", \"ppt\" (output only — Carbone writes them but cannot read them back). Web/text  : \"html\", \"xhtml\", \"txt\", \"csv\", \"md\", \"xml\", \"idml\". Images    : \"png\", \"jpg\", \"jpeg\", \"webp\", \"svg\", \"tiff\", \"bmp\", \"gif\". Archive   : \"zip\" (batch output). Simple usage: \"pdf\". Advanced usage: { \"formatName\": \"pdf\", \"formatOptions\": { \"EncryptFile\": true, \"DocumentOpenPassword\": \"secret\" } }."New value: +"Target output format. Valid outputs depend on the input format (e.g. HTML converts to pdf, docx or png, but not xlsx); see the conversion matrix: https://carbone.io/documentation/developer/http-api/generate-reports.html#output-file-type. \"doc\", \"xls\" and \"ppt\" are output formats; as input, use DOCX, XLSX or PPTX. Simple usage: \"pdf\". With options: { \"formatName\": \"pdf\", \"formatOptions\": { ... } }."
      • changedInput schema / properties / converter / description
        Previous value: -"Converter engine. Only relevant when convertTo is \"pdf\" (or an image format rasterised from a document). \"L\" — LibreOffice (default): best all-round engine for DOCX, XLSX, PPTX, ODT, ODS, ODP. \"O\" — OnlyOffice: highest fidelity rendering for Microsoft Office formats (DOCX, XLSX, PPTX). \"C\" — Chromium: best for HTML, CSS, JavaScript — full browser rendering. \"I\" — Carbone ICE (Instant Converter Engine, Carbone 5.14.0+): DOCX → PDF ONLY, no third-party converter — up to 60x faster than LibreOffice on a 1000-page DOCX (3x on a one-page document). Any other input or output format is REJECTED — use another converter for those. PDF options: only Watermarks are applied. EncryptFile, DocumentOpenPassword, RestrictPermissions and the other security options are SILENTLY IGNORED — the PDF comes back readable by anyone, with no error — so NEVER pick \"I\" when the request needs a password or restricted permissions; use \"L\" for those. Also unsupported: WEBP and EMF/WMF images, table of contents, SmartArt, complex charts, footnotes/endnotes, comments, tracked changes, form fields, equations, bookmarks and links; a missing font falls back to Noto Sans. If omitted, LibreOffice is used by default."New value: +"Converter engine, used whenever the format changes (not only for PDF). If omitted, \"L\" is used. \"L\" LibreOffice: DOCX, XLSX, PPTX, ODT, ODS, ODP, ODG, MD, PDF; the only converter supporting all PDF options. \"I\" Carbone ICE: DOCX and ODT to PDF; Carbone's own engine, 3x to 300x faster, recommended over \"O\" for DOCX from v5.15.0. It converts all content except WEBP and EMF/WMF images, SmartArt and complex charts (bar, line, area, pie and doughnut charts are drawn), comments, tracked changes, form fields and equations: keep the default \"L\" for documents with those. A missing font is replaced by Noto Sans (https://carbone.io/documentation/developer/http-api/generate-reports.html#converters-carbone-ice-limitations). \"O\" OnlyOffice: DOCX, XLSX, PPTX to PDF. \"C\" Chromium: HTML to PDF, JPG, PNG, WEBP with full CSS/JS; 100 MB max. PDF options: \"L\" supports all of them; \"O\", \"C\" and \"I\" apply Security (passwords, permissions) and Watermarks. Docs: https://carbone.io/documentation/developer/http-api/generate-reports.html#converters"
      • changedInput schema / properties / converter / enum
        Previous value: -[
        -  "L",
        -  "C",
        -  "O",
        -  "I"
        -]New value: +[
        +  "L",
        +  "O",
        +  "C",
        +  "I"
        +]
      • changedInput schema / properties / egressAuthorization / description
        Previous value: -"Value for the Authorization header Carbone adds to its OUTBOUND (egress) requests during conversion — e.g. when a Chromium HTML→PDF conversion fetches a protected external image or stylesheet. For example \"Bearer abc123\" makes Carbone send `authorization: Bearer abc123` to those hosts. Only the authorization header can be customised; max 512 characters."New value: +"Value for the Authorization header Carbone adds to its OUTBOUND (egress) requests during conversion — e.g. when a Chromium HTML→PDF conversion fetches a protected external image or stylesheet. For example \"Bearer abc123\" makes Carbone send `authorization: Bearer abc123` to those hosts. Only the authorization header can be customised; max 511 characters."
      • changedInput schema / properties / egressAuthorization / maxLength
        Previous value: -512New value: +511
      • changedInput schema / properties / file / description
        Previous value: -"The document to convert. Two input forms are accepted: (1) HTTPS URL — the file is downloaded automatically, e.g. \"https://example.com/file.pptx\". (2) Base64-encoded string — the raw file content encoded as base64. Local file paths are NOT accepted — this server is reached over HTTP, so a path would resolve on the server's disk rather than yours and is rejected. Upload the bytes as base64, or host the file at a URL. Supported input formats: DOCX, XLSX, PPTX, ODT, ODS, ODP, ODG, HTML, XHTML, XML, SVG, IDML, Markdown (MD), TXT, CSV, RTF, PDF, PNG and JPG. Carbone reads XML-based and text-based documents only, so the legacy BINARY Office formats DOC, XLS and PPT are REJECTED as input — Carbone can produce them as output but cannot read them. Re-save such a file as DOCX/XLSX/PPTX first. Full conversion matrix: https://carbone.io/documentation/developer/http-api/generate-reports.md"New value: +"The document to convert. Two input forms are accepted: (1) HTTPS URL — the file is downloaded automatically, e.g. \"https://example.com/file.pptx\". (2) Base64-encoded string — the raw file content encoded as base64. Local file paths are NOT accepted — this server is reached over HTTP, so a path would resolve on the server's disk rather than yours and is rejected. Upload the bytes as base64, or host the file at a URL. Supported input formats: DOCX, XLSX, PPTX, ODT, ODS, ODP, ODG, HTML, XHTML, XML, SVG, IDML, MD, TXT, CSV, RTF, PDF. Carbone reads XML-based and text-based documents (plus PDF): the legacy binary Office formats DOC, XLS and PPT are rejected as input, although they are valid outputs. Re-save such a file as DOCX, XLSX or PPTX first. Full conversion matrix: https://carbone.io/documentation/developer/http-api/generate-reports.html#output-file-type"
      • changedInput schema / properties / hardRefresh / description
        Previous value: -"Forces Carbone to run the converter even when the output format already matches the input format. Only useful for PDF: converting PDF → PDF to APPLY formatOptions (watermark, password, PDF/A, page range). Without it Carbone may pass the file straight through and none of those options take effect. Leave unset for any format-changing conversion (DOCX → PDF, XLSX → CSV, …), where the converter runs anyway."New value: +"If true, Carbone runs the converter even when the output format equals the input format, and recomputes pagination and the table of contents at the end of the conversion. Needed for PDF → PDF: without it Carbone returns the PDF unchanged and formatOptions (password, permissions, watermarks, PDF/A, …) are NOT applied. This server sets it automatically when the input is a PDF, convertTo is \"pdf\" and formatOptions are given; pass false to opt out. Example (PDF → PDF/A-4): { \"hardRefresh\": true, \"convertTo\": { \"formatName\": \"pdf\", \"formatOptions\": { \"SelectPdfVersion\": 4 } } }."
      • changedInput schema / properties / reportName / description
        Previous value: -"Filename (WITHOUT extension) for the converted document, returned in the Content-Disposition header. Carbone appends the extension matching convertTo, so do not include one — \"report.pdf\" yields \"report.pdf.pdf\". Examples: \"contract\", \"2026-invoice\". Unlike render_document, Carbone tags are NOT resolved here (conversion does not run templating), so pass a literal name rather than a pattern like \"{d.id}\" — a pattern would come back verbatim. Ignored when returnLink is set, which returns a download URL rather than a named file."New value: +"Name of the delivered file, WITHOUT extension (e.g. \"contract\", \"2026-invoice\"). The document is delivered as \"<reportName>.<ext>\", with the extension of convertTo, used as the attachment name. This server names the file itself: a conversion has no templating pass, which is where Carbone resolves reportName. Used literally: Carbone tags such as {d.id} are not resolved here. Ignored with returnLink (a download URL, not a named file)."
    • Changeddelete_template1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changeddownload_template3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedInput schema / properties / outputPath / description
        Previous value: -"NOT AVAILABLE on this server, which is reached over HTTP: the template file would be written to the server's disk instead of yours, so passing outputPath is rejected. Use asAttachment to receive the bytes, or returnLink for a one-time download URL."New value: +"NOT AVAILABLE on this server, which is reached over HTTP: the template file would be written to the server's disk instead of yours, so passing outputPath is rejected. Use asAttachment to receive the bytes."
      • changedInput schema / properties / sample / description
        Previous value: -"If true, download the JSON SAMPLE DATASET saved with the template (the \"sample\" array passed to upload_template) instead of the template file. Returns JSON of the form [{ \"data\": {...}, \"complement\": {...}, \"translations\": {...}, \"enum\": {...} }]. Use it to recover the example data a template expects — handy before calling render_document against an unfamiliar template. Errors if the template was uploaded without a sample."New value: +"If true, download the JSON SAMPLE DATASET saved with the template (the \"sample\" array passed to upload_template) instead of the template file, returned as inline JSON text by default, of the form [{ \"data\": {...}, \"complement\": {...}, \"translations\": {...}, \"enum\": {...} }] (each key optional). Use it to recover the example data a template expects before calling render_document. Errors if the template was uploaded without a sample."
    • Changedget_api_status1 field changed
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Addedinspect_template
    • Changedlist_categories1 field changed
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_tags1 field changed
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_templates4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of results to return, between 1 and 100. Default: 100. Use cursor to page beyond that."New value: +"Maximum number of results to return, between 1 and 100 (Carbone API limit). Default: 100. Use cursor to page beyond that."
      • changedInput schema / properties / origin / description
        Previous value: -"Filter by upload origin. 0 = API, 1 = Carbone Studio, 2 = Salesforce, 3 = Odoo, 4 = HubSpot. Templates created through this MCP are origin 0."New value: +"Filter by upload origin: 0 = API, 1 = Carbone Studio, 2 = Salesforce integration, 3 = Odoo integration, 4 = HubSpot integration. Templates uploaded through this MCP server are origin 0."
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrender_document23 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedInput schema / properties / asAttachment / description
        Previous value: -"If true, return the document as a downloadable file attachment (a base64 EmbeddedResource), for any format. Default delivery: text and png/jpg/gif/webp are returned inline; other binary outputs (PDF, Office, …) are saved to a temp file in stdio mode (path returned), or returned as an attachment in HTTP mode. Ignored when outputPath or returnLink is set."New value: +"If true, return the document as a downloadable file attachment (a base64 EmbeddedResource), for any format. Default delivery: text and png/jpg/gif/webp are returned inline; other binary outputs (PDF, Office, …) are returned as an attachment. Ignored when outputPath or returnLink is set."
      • changedInput schema / properties / batchOutput / description
        Previous value: -"How the batch result is packaged. Defaults to \"zip\". \"zip\" — every generated document is bundled into a single ZIP archive (use batchReportName to name each entry). \"pdf\" — all documents are CONCATENATED into one continuous PDF instead of being zipped; this requires convertTo to be \"pdf\" as well. Must be used together with batchSplitBy."New value: +"Batch result type, with batchSplitBy. \"zip\" (default): an archive of all generated documents. \"pdf\": the generated PDFs concatenated into one file; requires convertTo \"pdf\"."
      • changedInput schema / properties / batchReportName / description
        Previous value: -"Filename pattern for each individual document inside the batch ZIP. Supports Carbone tags. Tags are resolved against the item's data (relative path) or the full dataset (absolute path). Examples: \"invoice-{d.id}.pdf\", \"{d.client.name}-{d.date}.docx\". Carbone sanitises the result — path separators, \"..\", Windows-forbidden and control characters each become an underscore — and appends an index to duplicates (\"report_1.pdf\", \"report_2.pdf\"), so a pattern that resolves to the same name for several items will not silently drop documents. Only meaningful with batchOutput: \"zip\"; a concatenated \"pdf\" batch is a single file. Must be used together with batchSplitBy."New value: +"Name of each file inside the batch ZIP, WITHOUT extension (Carbone appends it). Carbone tags are resolved against each batch item, e.g. \"invoice-{d.id}\". Ignored when batchOutput is \"pdf\". From v5.14, an index is appended to every file as soon as two names collide (invoice_1.pdf, invoice_2.pdf). Requires batchSplitBy."
      • changedInput schema / properties / batchSplitBy / description
        Previous value: -"JSON path to the array in your data that drives batch generation. One document is generated per element of the array. Two forms: \"d\" when data itself IS the array (one report per top-level element), or \"d.arrayName\" to split on a child array. Example: \"d.invoices\" — produces one PDF per item in data.invoices. Example: \"d.employees\" — produces one contract per employee. Carbone Cloud allows 1 to 100 objects per batch (on-premise follows the nbReportMaxPerBatch setting). Batch is ALWAYS asynchronous — webhookUrl is required. Pair with batchOutput to choose ZIP or a single concatenated PDF, and batchReportName to name each document."New value: +"Batch generation: one document per object of an array. Use \"d\" when data itself is an array, or \"d.items\" for a direct child array of data. Requires webhookUrl (batch is always asynchronous: the result goes to the webhook, not to this tool). At most 100 objects on Carbone Cloud. Combine with batchOutput and batchReportName. Docs: https://carbone.io/documentation/developer/http-api/generate-reports.html#batch-processing"
      • changedInput schema / properties / convertTo / anyOf
        Previous value: -[
        -  {
        -    "enum": [
        -      "pdf",
        -      "docx",
        -      "doc",
        -      "xlsx",
        -      "xls",
        -      "pptx",
        -      "ppt",
        -      "odt",
        -      "ods",
        -      "odp",
        -      "odg",
        -      "html",
        -      "xhtml",
        -      "txt",
        -      "csv",
        -      "md",
        -      "xml",
        -      "rtf",
        -      "png",
        -      "jpg",
        -      "jpeg",
        -      "webp",
        -      "svg",
        -      "tiff",
        -      "bmp",
        -      "gif",
        -      "zip",
        -      "idml",
        -      "epub",
        -      "cdr"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "properties": {
        -      "formatName": {
        -        "description": "Target format name.",
        -        "enum": [
        -          "pdf",
        -          "docx",
        -          "doc",
        -          "xlsx",
        -          "xls",
        -          "pptx",
        -          "ppt",
        -          "odt",
        -          "ods",
        -          "odp",
        -          "odg",
        -          "html",
        -          "xhtml",
        -          "txt",
        -          "csv",
        -          "md",
        -          "xml",
        -          "rtf",
        -          "png",
        -          "jpg",
        -          "jpeg",
        -          "webp",
        -          "svg",
        -          "tiff",
        -          "bmp",
        -          "gif",
        -          "zip",
        -          "idml",
        -          "epub",
        -          "cdr"
        -        ],
        -        "type": "string"
        -      },
        -      "formatOptions": {
        -        "additionalProperties": {},
        -        "description": "Advanced format options object. Examples by format: PDF — { \"EncryptFile\": true, \"DocumentOpenPassword\": \"secret\", \"DocumentPermissionPassword\": \"owner\" } password-protect; PDF — { \"Watermarks\": [{ \"text\": \"DRAFT\", \"opacity\": 0.2, \"rotation\": -45, \"fontsize\": 60 }] } up to 5 watermarks; PDF — { \"SelectPdfVersion\": 1 } PDF/A-1b compliance (use 2 for PDF/A-2, 3 for PDF/A-3); PDF — { \"PageRange\": \"1-3,5\" } export specific pages only; PDF — { \"ConvertSlideshow\": true } convert each slide to a separate PDF page; Images (PNG/JPG/WEBP) — { \"Quality\": 90 } compression quality 0-100; Images — { \"density\": 150 } DPI for rasterisation (default 96); CSV — { \"fieldSeparator\": \";\" } custom column separator.",
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "formatName"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "pdf",
        +      "docx",
        +      "doc",
        +      "odt",
        +      "ott",
        +      "rtf",
        +      "epub",
        +      "xlsx",
        +      "xls",
        +      "ods",
        +      "ots",
        +      "csv",
        +      "dbf",
        +      "dif",
        +      "pptx",
        +      "ppt",
        +      "odp",
        +      "otp",
        +      "odg",
        +      "html",
        +      "xhtml",
        +      "txt",
        +      "md",
        +      "xml",
        +      "idml",
        +      "png",
        +      "jpg",
        +      "jpeg",
        +      "webp",
        +      "gif",
        +      "tiff",
        +      "bmp",
        +      "svg",
        +      "emf",
        +      "wmf",
        +      "eps"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "properties": {
        +      "formatName": {
        +        "description": "Target format name.",
        +        "enum": [
        +          "pdf",
        +          "docx",
        +          "doc",
        +          "odt",
        +          "ott",
        +          "rtf",
        +          "epub",
        +          "xlsx",
        +          "xls",
        +          "ods",
        +          "ots",
        +          "csv",
        +          "dbf",
        +          "dif",
        +          "pptx",
        +          "ppt",
        +          "odp",
        +          "otp",
        +          "odg",
        +          "html",
        +          "xhtml",
        +          "txt",
        +          "md",
        +          "xml",
        +          "idml",
        +          "png",
        +          "jpg",
        +          "jpeg",
        +          "webp",
        +          "gif",
        +          "tiff",
        +          "bmp",
        +          "svg",
        +          "emf",
        +          "wmf",
        +          "eps"
        +        ],
        +        "type": "string"
        +      },
        +      "formatOptions": {
        +        "additionalProperties": {},
        +        "description": "Format-specific options. Examples: PDF password: { \"EncryptFile\": true, \"DocumentOpenPassword\": \"s3cr3t\" }; PDF permissions: { \"RestrictPermissions\": true, \"PermissionPassword\": \"owner\" }; PDF watermarks (max 4): { \"Watermarks\": [{ \"text\": \"DRAFT\", \"size\": 60, \"opacity\": 0.2, \"rotation\": -45 }] }; PDF/A (L only): { \"SelectPdfVersion\": 2 } (2 = PDF/A-2b, 3 = PDF/A-3b, 4 = PDF/A-4); page selection (L only): { \"PageRange\": \"1-5\" }; accessibility (L only): { \"UseTaggedPDF\": true, \"PDFUACompliance\": true }; JPG/PNG: { \"PixelWidth\": 1200, \"PixelHeight\": 630 }, JPG quality: { \"Quality\": 80 } (1-100); CSV: { \"fieldSeparator\": \";\" }. All options: https://carbone.io/documentation/developer/http-api/generate-reports.html#pdf-options",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "formatName"
        +    ],
        +    "type": "object"
        +  }
        +]
      • changedInput schema / properties / convertTo / description
        Previous value: -"Output format. If omitted, the output matches the template format. Documents : \"pdf\", \"docx\", \"xlsx\", \"pptx\", \"odt\", \"ods\", \"odp\", \"odg\", \"rtf\", \"epub\". Web/text  : \"html\", \"xhtml\", \"txt\", \"csv\", \"md\", \"xml\", \"idml\". Images    : \"png\", \"jpg\", \"jpeg\", \"webp\", \"svg\", \"tiff\", \"bmp\", \"gif\". Archive   : \"zip\" (use with batchSplitBy for batch output). Simple usage: \"pdf\". Advanced usage: { \"formatName\": \"pdf\", \"formatOptions\": { ... } } for PDF-specific options."New value: +"Output format. If omitted, the output keeps the template format. Valid outputs depend on the input format (e.g. HTML converts to pdf, docx or png, but not xlsx); see the conversion matrix: https://carbone.io/documentation/developer/http-api/generate-reports.html#output-file-type. \"doc\", \"xls\" and \"ppt\" are output formats; as input, use DOCX, XLSX or PPTX. Simple usage: \"pdf\". With options: { \"formatName\": \"pdf\", \"formatOptions\": { ... } }."
      • changedInput schema / properties / converter / description
        Previous value: -"Converter engine. Only relevant when convertTo is \"pdf\" (or an image rasterised from a document). \"L\" — LibreOffice (default): best all-round engine for DOCX, XLSX, PPTX, ODT, ODS, ODP. \"O\" — OnlyOffice: highest fidelity for Microsoft Office formats (DOCX, XLSX, PPTX). \"C\" — Chromium: best for HTML/CSS/JS templates — full browser rendering. \"I\" — Carbone ICE (Instant Converter Engine, Carbone 5.14.0+): DOCX → PDF ONLY, no third-party converter — up to 60x faster than LibreOffice on a 1000-page DOCX (3x on a one-page document). Any other input or output format is REJECTED — use another converter for those. PDF options: only Watermarks are applied. EncryptFile, DocumentOpenPassword, RestrictPermissions and the other security options are SILENTLY IGNORED — the PDF comes back readable by anyone, with no error — so NEVER pick \"I\" when the request needs a password or restricted permissions; use \"L\" for those. Also unsupported: WEBP and EMF/WMF images, table of contents, SmartArt, complex charts, footnotes/endnotes, comments, tracked changes, form fields, equations, bookmarks and links; a missing font falls back to Noto Sans. If omitted, LibreOffice is used by default."New value: +"Converter engine, used whenever the format changes (not only for PDF). If omitted, \"L\" is used. \"L\" LibreOffice: DOCX, XLSX, PPTX, ODT, ODS, ODP, ODG, MD, PDF; the only converter supporting all PDF options. \"I\" Carbone ICE: DOCX and ODT to PDF; Carbone's own engine, 3x to 300x faster, recommended over \"O\" for DOCX from v5.15.0. It converts all content except WEBP and EMF/WMF images, SmartArt and complex charts (bar, line, area, pie and doughnut charts are drawn), comments, tracked changes, form fields and equations: keep the default \"L\" for documents with those. A missing font is replaced by Noto Sans (https://carbone.io/documentation/developer/http-api/generate-reports.html#converters-carbone-ice-limitations). \"O\" OnlyOffice: DOCX, XLSX, PPTX to PDF. \"C\" Chromium: HTML to PDF, JPG, PNG, WEBP with full CSS/JS; 100 MB max. PDF options: \"L\" supports all of them; \"O\", \"C\" and \"I\" apply Security (passwords, permissions) and Watermarks. Docs: https://carbone.io/documentation/developer/http-api/generate-reports.html#converters"
      • changedInput schema / properties / converter / enum
        Previous value: -[
        -  "L",
        -  "C",
        -  "O",
        -  "I"
        -]New value: +[
        +  "L",
        +  "O",
        +  "C",
        +  "I"
        +]
      • changedInput schema / properties / currencyTarget / description
        Previous value: -"ISO 4217 currency code of the output document. The :formatC formatter converts amounts from currencySource to this currency using currencyRates. Must be set together with currencySource and currencyRates. Example: \"USD\" to display prices in US dollars. Documentation: https://carbone.io/documentation.html#formatc-precisionorformat-"New value: +"ISO 4217 currency code of the output document. The :formatC formatter converts amounts from currencySource to this currency using currencyRates. Must be set together with currencySource and currencyRates. Example: \"USD\" to display prices in US dollars. Documentation: https://carbone.io/documentation/design/formatters/currency.html#formatc-precisionorformat-targetcurrency"
      • changedInput schema / properties / data / description
        Previous value: -"JSON data merged into the template — an object, or a top-level array (accessed with {d[i].field}). Access fields with {d.fieldName} tags. Nested objects: {d.customer.name}. Array loops: {d.items[i].description} … {d.items[i+1]}. Conditionals: {d.status == \"active\" ? \"Yes\" : \"No\"}. Optional — if omitted, defaults to an empty object {} so the template is simply converted (tags resolve to empty). Useful to convert a stored template by templateId without data injection. Instead of inlining a large dataset, you may pass a STRING reference to the JSON: an HTTPS URL or a base64-encoded JSON string (local file paths are not accepted over HTTP) — it is read and parsed server-side."New value: +"JSON data merged into the template — an object, or a top-level array (accessed with {d[i].field}). Access fields with {d.fieldName} tags. Nested objects: {d.customer.name}. Array loops: {d.items[i].description} … {d.items[i+1]}. Conditions: {d.status:ifEQ(active):show(Yes):elseShow(No)}. Optional: if omitted, {} is sent, so every tag resolves to empty (\"Hello {d.name}!\" becomes \"Hello !\"). To keep the tags as written instead, pass keepTags: true (and no data). Instead of inlining a large dataset, you may pass a STRING reference to the JSON: an HTTPS URL or a base64-encoded JSON string (local file paths are not accepted over HTTP) — it is read and parsed server-side."
      • changedInput schema / properties / egressAuthorization / description
        Previous value: -"Value for the Authorization header Carbone adds to its OUTBOUND (egress) requests while rendering — fetching external images ({d.imageUrl}), external PDFs (:appendFile / :attachFile), and calling webhooks. For example \"Bearer abc123\" or \"my-secret\" makes Carbone send `authorization: <value>` to those hosts. Only the authorization header can be customised; max 512 characters. For webhook calls specifically, webhookHeaders.authorization (if set) overrides this value."New value: +"Value for the Authorization header Carbone adds to its OUTBOUND (egress) requests while rendering — fetching external images ({d.imageUrl}), external PDFs (:appendFile / :attachFile), and calling webhooks. For example \"Bearer abc123\" or \"my-secret\" makes Carbone send `authorization: <value>` to those hosts. Only the authorization header can be customised; max 511 characters. For webhook calls specifically, webhookHeaders.authorization (if set) overrides this value."
      • changedInput schema / properties / egressAuthorization / maxLength
        Previous value: -512New value: +511
      • changedInput schema / properties / enum / description
        Previous value: -"Enumeration map used with the :convEnum(TYPE) formatter to translate code values into human-readable labels. Define one key per enum type; each value is an object mapping code → label. Example: { \"STATUS\": { \"1\": \"Active\", \"2\": \"Inactive\", \"3\": \"Pending\" }, \"ROLE\": { \"A\": \"Admin\", \"U\": \"User\" } }. Template usage: {d.status:convEnum(STATUS)}, {d.role:convEnum(ROLE)}. May instead be passed by reference as a string — an HTTPS URL or a base64-encoded JSON string (local file paths are not accepted over HTTP). Documentation: https://carbone.io/documentation.html#convenum-type-"New value: +"Enumeration map used with the :convEnum(TYPE) formatter to translate code values into human-readable labels. Define one key per enum type; each value is an object mapping code → label. Example: { \"STATUS\": { \"1\": \"Active\", \"2\": \"Inactive\", \"3\": \"Pending\" }, \"ROLE\": { \"A\": \"Admin\", \"U\": \"User\" } }. Template usage: {d.status:convEnum(STATUS)}, {d.role:convEnum(ROLE)}. May instead be passed by reference as a string — an HTTPS URL or a base64-encoded JSON string (local file paths are not accepted over HTTP). Documentation: https://carbone.io/documentation/design/advanced-features/key-value-mapping.html#convenum-type"
      • addedInput schema / properties / failOn
        Added value: +{
        +  "description": "Conditions that stop the render and return an error (Carbone v5.15.0+). \"IMAGE_URL_ERROR\": an image that cannot be downloaded from its URL fails the render, instead of being replaced with the broken-image placeholder. Empty image values are skipped; base64 images, barcodes and charts are not concerned. Example: [\"IMAGE_URL_ERROR\"]. Docs: https://carbone.io/documentation/developer/http-api/generate-reports.html#fail-on",
        +  "items": {
        +    "enum": [
        +      "IMAGE_URL_ERROR"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / keepTags / description
        Previous value: -"If true, SKIP templating entirely and leave every Carbone tag in the document exactly as written — {d.customer} comes out as the literal text \"{d.customer}\", formatters included. Use it to proof a stored template in another format (e.g. render templateId to PDF to check the tag layout), or to convert a template between formats while it stays a template. Mutually exclusive with data — passing both is rejected, because data would have nothing to fill. Note the difference from omitting data: no data renders the template with an EMPTY dataset, so every tag resolves to an empty string; keepTags leaves the tags themselves in place. Requires Carbone 5.9.0+ (carbone-version: 5)."New value: +"If true, SKIP templating entirely and leave every Carbone tag in the document exactly as written: {d.customer} comes out as the literal text \"{d.customer}\", formatters included. Use it to proof a stored template in another format (e.g. render templateId to PDF to check the tag layout), or to convert a template between formats while it stays a template. Mutually exclusive with data: passing both is rejected, because data would have nothing to fill. Not the same as omitting data: no data renders the template with an EMPTY dataset, so every tag resolves to an empty string; keepTags leaves the tags themselves in place."
      • addedInput schema / properties / preReleaseFeatureIn
        Added value: +{
        +  "description": "Pre-release feature level for this render only: features and fixes introduced up to this tag apply, later ones stay disabled. Overrides the server default; a tag set in the template overrides it. Example: 5000000. Docs: https://carbone.io/documentation/design/overview/version-lifecycle.html#pre-release-features",
        +  "maximum": 9007199254740991,
        +  "minimum": -9007199254740991,
        +  "type": "integer"
        +}
      • changedInput schema / properties / reportName / description
        Previous value: -"Filename (WITHOUT extension) for the generated document, returned in the Content-Disposition header. Carbone automatically appends the extension that matches convertTo, so do not include one — passing \"invoice.pdf\" yields \"invoice.pdf.pdf\". Supports Carbone tags resolved against the data at render time. Examples: \"invoice\" (static), \"{d.type}-{d.id}\" (dynamic), \"{d.client}-{d.date:formatD(YYYY-MM)}\"."New value: +"Filename (WITHOUT extension) for the generated document, returned in the Content-Disposition header. Carbone automatically appends the extension that matches convertTo, so do not include one — passing \"invoice.pdf\" yields \"invoice.pdf.pdf\". Supports Carbone tags resolved against the data at render time. Examples: \"invoice\" (static), \"{d.type}-{d.id}\" (dynamic), \"{d.client}-{d.date:formatD(YYYY-MM)}\". With keepTags (no templating pass), this server names the file \"<reportName>.<ext>\" itself, literally (tags are not resolved)."
      • changedInput schema / properties / returnLink / description
        Previous value: -"If true, generate the document and return a public download URL instead of the file contents. The link is SHORT-LIVED and ONE-TIME — Carbone deletes the file after the first download — so it is meant for the end user to download once (do not fetch it programmatically). Works in stdio and HTTP. Mutually exclusive with outputPath, asAttachment, and webhookUrl (async)."New value: +"If true, generate the document and return a public download URL instead of the file contents. The link is SHORT-LIVED and ONE-TIME — Carbone deletes the file after the first download — so it is meant for the end user to download once (do not fetch it programmatically). Works in stdio and HTTP. Mutually exclusive with outputPath and asAttachment. Ignored when webhookUrl is set (no link is returned)."
      • changedInput schema / properties / template / description
        Previous value: -"Inline template for one-shot render without storing a template first. Two input forms are accepted: (1) HTTPS URL — the file is downloaded automatically, e.g. \"https://example.com/file.pptx\". (2) Base64-encoded string — the raw file content encoded as base64. Local file paths are NOT accepted — this server is reached over HTTP, so a path would resolve on the server's disk rather than yours and is rejected. Upload the bytes as base64, or host the file at a URL. The template is uploaded and rendered in a single API request — no Template ID is returned. Use this for ephemeral renders; use upload_template + templateId when you need to reuse the template. Supported formats: DOCX, XLSX, PPTX, ODT, ODS, ODP, ODG, HTML, XHTML, IDML, XML, Markdown (MD), PDF, and more. Mutually exclusive with templateId — provide exactly one, never both."New value: +"Inline template for one-shot render without storing a template first. Two input forms are accepted: (1) HTTPS URL — the file is downloaded automatically, e.g. \"https://example.com/file.pptx\". (2) Base64-encoded string — the raw file content encoded as base64. Local file paths are NOT accepted — this server is reached over HTTP, so a path would resolve on the server's disk rather than yours and is rejected. Upload the bytes as base64, or host the file at a URL. The template is uploaded and rendered in a single API request — no Template ID is returned. Use this for ephemeral renders; use upload_template + templateId when you need to reuse the template. Supported input formats: DOCX, XLSX, PPTX, ODT, ODS, ODP, ODG, HTML, XHTML, XML, SVG, IDML, MD, TXT, CSV, RTF, PDF. Carbone reads XML-based and text-based documents (plus PDF): the legacy binary Office formats DOC, XLS and PPT are rejected as input, although they are valid outputs. Re-save such a file as DOCX, XLSX or PPTX first. Mutually exclusive with templateId — provide exactly one, never both."
      • changedInput schema / properties / translations / description
        Previous value: -"Translation map for multilingual documents. Requires \"lang\" to be set to select the active locale. Top-level keys are BCP-47 locale codes; values are key → translated-string maps. Template usage: {t(greeting)} is replaced by the matching string for the active locale. Example: { \"fr-fr\": { \"greeting\": \"Bonjour\", \"total\": \"Total\" }, \"en-us\": { \"greeting\": \"Hello\", \"total\": \"Total\" } }. These dictionaries get large, so you may instead pass a string reference — an HTTPS URL or a base64-encoded JSON string (local file paths are not accepted over HTTP). Documentation: https://carbone.io/documentation.html#translations"New value: +"Translation map for multilingual documents. Requires \"lang\" to be set to select the active locale. Top-level keys are BCP-47 locale codes; values are key → translated-string maps. Template usage: {t(greeting)} is replaced by the matching string for the active locale. Example: { \"fr-fr\": { \"greeting\": \"Bonjour\", \"total\": \"Total\" }, \"en-us\": { \"greeting\": \"Hello\", \"total\": \"Total\" } }. These dictionaries get large, so you may instead pass a string reference — an HTTPS URL or a base64-encoded JSON string (local file paths are not accepted over HTTP). Documentation: https://carbone.io/documentation/design/advanced-features/translations-i18n.html"
      • changedInput schema / properties / variableStr / description
        Previous value: -"Carbone alias expressions evaluated once before rendering, available everywhere in the template. Used to pre-compute reusable values or shorten repetitive paths. Syntax: \"{#aliasName = expression}\". Example: \"{#fullName = d.firstName + \\\" \\\" + d.lastName}{#total = d.price * d.qty}\". Aliases are then used in the template as {#fullName}, {#total}. Documentation: https://carbone.io/documentation.html#alias"New value: +"Carbone alias definitions applied to the whole template, as if written in it. An alias is a shortcut to a data path, not a variable: it stores no value and computes nothing (no arithmetic, no concatenation). Define with {#alias = d.path}, optionally with $parameters: {#mealOf($weekday) = d[weekday = $weekday]}. Use them in the template with {$alias}, e.g. {$mealOf(2).name}. Example: \"{#buyer = d.order.customer}\", then {$buyer.name} in the template renders d.order.customer.name. To store a computed value, use the :set formatter instead. Documentation: https://carbone.io/documentation/design/substitutions/aliases.html#alias"
      • changedInput schema / properties / webhookUrl / description
        Previous value: -"Webhook URL to enable asynchronous rendering. When provided, Carbone returns immediately and POSTs { \"success\": true, \"data\": { \"renderId\": \"...\" } } to this URL when the document is ready. The default render timeout is extended to 5 minutes on Carbone Cloud (vs 60 s for synchronous requests). Download the document with GET /render/:renderId once the webhook is received. Required when using batchSplitBy (batch generation is always asynchronous). Example: \"https://your-server.com/carbone-webhook\"."New value: +"Webhook URL that enables asynchronous rendering (render timeout raised to 5 minutes). This tool then returns only Carbone's acceptance message, never the document. When the document is ready, Carbone POSTs { \"success\": true, \"data\": { \"renderId\": \"...\" } } to this URL; the server behind it must download the document itself with GET /render/{renderId} on the Carbone API (one-time, no auth). You cannot fetch it from here. Required for batchSplitBy: batch output is always delivered this way. outputPath, asAttachment and returnLink are ignored in this mode. Example: \"https://your-server.com/carbone-webhook\"."
    • Changedupdate_template_metadata16 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedInput schema / properties / category / description
        Previous value: -"New category."New value: +"New category, max 200 characters."
      • addedInput schema / properties / category / maxLength
        Added value: +200
      • changedInput schema / properties / comment / description
        Previous value: -"New free-text comment."New value: +"New free-text comment, max 200 characters."
      • addedInput schema / properties / comment / maxLength
        Added value: +200
      • changedInput schema / properties / deployedAt / description
        Previous value: -"Unix timestamp (seconds) to set as the deployment time for this version. Carbone picks the version with the most recent deployedAt when rendering. Use 42000000000 to deploy immediately (special \"NOW\" value)."New value: +"Unix timestamp (seconds) to set as the deployment time for this version. Carbone picks the version with the most recent deployedAt when rendering by Template ID. Use 42000000000 to deploy immediately (special \"NOW\" value). Future values are not allowed, and the deployed version's deployedAt cannot move back in time."
      • changedInput schema / properties / expireAt / description
        Previous value: -"Unix timestamp (seconds) at which this template will be automatically deleted. Use 42000000000 to delete immediately."New value: +"Schedule deletion of the patched version at a UTC Unix timestamp (seconds). After that time it is no longer listed, downloadable or renderable (404), and the file is purged after the retention delay. Send 0 to cancel a scheduled deletion (permanent again); omit to leave it unchanged. To delete now, use delete_template."
      • changedInput schema / properties / expireAt / minimum
        Previous value: --9007199254740991New value: +0
      • changedInput schema / properties / id / description
        Previous value: -"Move this version under a DIFFERENT Template ID, re-parenting it so both share a version history. Pass the destination Template ID (64-bit). Leave unset to keep the version where it is — this does not rename anything, use name for that."New value: +"DEPRECATED: the 1.6.0 name of moveToTemplateId, kept so existing callers keep working. Use moveToTemplateId; passing both with different values is rejected."
      • addedInput schema / properties / id / minLength
        Added value: +1
      • addedInput schema / properties / moveToTemplateId
        Added value: +{
        +  "description": "CAUTION, structural change: moves the patched version to this other Template ID (64-bit; a Version ID is rejected). It is NOT the template to patch (that is templateId). Pass the version's Version ID as templateId; with a Template ID, its currently deployed version is moved and that Template ID falls back to its next most recent version (or stops resolving if none is left). Fails if the move creates a deployedAt conflict at the destination. Only use it when the user asks to move a version.",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • changedInput schema / properties / name / description
        Previous value: -"New display name."New value: +"New display name, max 200 characters."
      • addedInput schema / properties / name / maxLength
        Added value: +200
      • changedInput schema / properties / tags / description
        Previous value: -"New list of tags — replaces existing tags entirely."New value: +"New list of tags, replacing the existing ones. Duplicates are removed and the list is sorted; the whole list is limited to 100 characters (about 8 tags of 9 characters)."
      • changedInput schema / properties / templateId / description
        Previous value: -"Template ID (64-bit) or Version ID (SHA-256) to update. Using a Template ID updates the metadata shared by all versions. Using a Version ID updates only that specific version."New value: +"Template ID (64-bit) or Version ID (SHA-256) of the version to update. A Template ID patches only its currently deployed version (not every version). A Version ID patches that exact version."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "category": {
        +      "description": "Category, returned if updated.",
        +      "type": "string"
        +    },
        +    "comment": {
        +      "description": "Comment, returned if updated.",
        +      "type": "string"
        +    },
        +    "deployedAt": {
        +      "description": "Deployment timestamp, returned if updated.",
        +      "type": "number"
        +    },
        +    "expireAt": {
        +      "description": "Deletion timestamp (0 = never expires), returned if updated.",
        +      "type": "number"
        +    },
        +    "id": {
        +      "description": "Template ID the version now belongs to (returned when moveToTemplateId was used).",
        +      "type": "string"
        +    },
        +    "name": {
        +      "description": "Name, returned if updated.",
        +      "type": "string"
        +    },
        +    "tags": {
        +      "description": "Tags, returned if updated.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "versionId": {
        +      "description": "Version ID of the patched version.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "versionId"
        +  ],
        +  "type": "object"
        +}
    • Changedupload_template24 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedInput schema / properties / category / description
        Previous value: -"Group templates into folders/categories (e.g. \"invoices\", \"legal\", \"hr\")."New value: +"Group templates into folders/categories, max 200 characters (e.g. \"invoices\", \"legal\", \"hr\")."
      • addedInput schema / properties / category / maxLength
        Added value: +200
      • changedInput schema / properties / comment / description
        Previous value: -"Free-text comment to describe the template version or its purpose."New value: +"Free-text comment to describe the template version or its purpose, max 200 characters."
      • addedInput schema / properties / comment / maxLength
        Added value: +200
      • changedInput schema / properties / deployedAt / description
        Previous value: -"UTC Unix timestamp (seconds) to set as the deployment time for this version. Carbone uses the version with the most recent deployedAt when rendering via Template ID. Use 42000000000 to deploy immediately (special \"NOW\" sentinel value)."New value: +"UTC Unix timestamp (seconds) to set as the deployment time for this version. Carbone uses the version with the most recent deployedAt when rendering via Template ID. Use 42000000000 to deploy immediately (special \"NOW\" sentinel value). Future values are not allowed."
      • changedInput schema / properties / expireAt / description
        Previous value: -"UTC Unix timestamp (seconds) at which this template will be automatically deleted. Use 42000000000 to delete immediately (special \"NOW\" sentinel value)."New value: +"Schedule deletion at a UTC Unix timestamp (seconds); 0 (default) means the template never expires. After that time it is no longer listed, downloadable or renderable (404), and the file is purged after the retention delay. To remove a template now, use delete_template."
      • changedInput schema / properties / expireAt / minimum
        Previous value: --9007199254740991New value: +0
      • changedInput schema / properties / name / description
        Previous value: -"Display name for the template (e.g. \"Invoice Template\", \"NDA Contract\")."New value: +"Display name for the template, max 200 characters (e.g. \"Invoice Template\", \"NDA Contract\"). Optional but recommended: list_templates shows it and its search matches it."
      • addedInput schema / properties / name / maxLength
        Added value: +200
      • changedInput schema / properties / sample / description
        Previous value: -"Sample input data attached to the template for testing in Carbone Studio. Each item must include data, complement, translations, and enum objects."New value: +"Sample input data attached to the template for testing in Carbone Studio: an array with at most ONE object, whose keys data, complement, translations and enum are all optional. Example: [{ \"data\": { \"name\": \"Acme\" } }]."
      • addedInput schema / properties / sample / items / additionalProperties
        Added value: +false
      • removedInput schema / properties / sample / items / required
        Removed value: -[
        -  "data",
        -  "complement",
        -  "translations",
        -  "enum"
        -]
      • addedInput schema / properties / sample / maxItems
        Added value: +1
      • changedInput schema / properties / tags / description
        Previous value: -"Tags for searchability and filtering (e.g. [\"sales\", \"billing\", \"v2\"])."New value: +"Labels shown by list_tags and on each list_templates result (e.g. [\"sales\", \"billing\", \"v2\"]). Duplicates are removed and the list is sorted; the whole list is limited to 100 characters (about 8 tags of 9 characters)."
      • changedInput schema / properties / template / description
        Previous value: -"The template file. Two input forms are accepted: (1) HTTPS URL — the file is downloaded automatically, e.g. \"https://example.com/file.pptx\". (2) Base64-encoded string — the raw file content encoded as base64. Local file paths are NOT accepted — this server is reached over HTTP, so a path would resolve on the server's disk rather than yours and is rejected. Upload the bytes as base64, or host the file at a URL. Supported formats: DOCX, XLSX, PPTX, ODT, ODS, ODP, ODG, HTML, XHTML, IDML, XML, Markdown (MD), PDF, and more. Full list: https://carbone.io/documentation/developer/http-api/generate-reports.md"New value: +"The template file. Two input forms are accepted: (1) HTTPS URL — the file is downloaded automatically, e.g. \"https://example.com/file.pptx\". (2) Base64-encoded string — the raw file content encoded as base64. Local file paths are NOT accepted — this server is reached over HTTP, so a path would resolve on the server's disk rather than yours and is rejected. Upload the bytes as base64, or host the file at a URL. Supported input formats: DOCX, XLSX, PPTX, ODT, ODS, ODP, ODG, HTML, XHTML, XML, SVG, IDML, MD, TXT, CSV, RTF, PDF. Carbone reads XML-based and text-based documents (plus PDF): the legacy binary Office formats DOC, XLS and PPT are rejected as input, although they are valid outputs. Re-save such a file as DOCX, XLSX or PPTX first."
      • changedInput schema / properties / versioning / description
        Previous value: -"Enable template versioning (default: true). When true, a stable Template ID is generated and multiple versions can be managed under it. When false, behaves as legacy mode and returns only a templateId (SHA-256 hash)."New value: +"Enable template versioning (default: true). When true, a stable Template ID is generated and multiple versions can be managed under it. When false, behaves as legacy mode and returns only a templateId (SHA-256 hash) and templateExtension."
      • changedInput schema / required
        Previous value: -[
        -  "template",
        -  "name"
        -]New value: +[
        +  "template"
        +]
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / properties / createdAt
        Added value: +{
        +  "description": "UTC Unix timestamp (seconds) of the upload.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / deployedAt
        Added value: +{
        +  "description": "UTC Unix timestamp of deployment; 0 means this version is not explicitly deployed.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / name / description
        Previous value: -"Template display name."New value: +"Template display name, when one was given."
      • addedOutput schema / properties / templateExtension
        Added value: +{
        +  "description": "Detected file extension, e.g. \"docx\" (legacy/non-versioned mode).",
        +  "type": "string"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "name"
        -]
  2. 6 tool updates
    • Changedconvert_document8 fields changed
      • changedInput schema / properties / convertTo / anyOf
        Previous value: -[
        -  {
        -    "enum": [
        -      "pdf",
        -      "docx",
        -      "xlsx",
        -      "pptx",
        -      "odt",
        -      "ods",
        -      "odp",
        -      "odg",
        -      "html",
        -      "xhtml",
        -      "txt",
        -      "csv",
        -      "md",
        -      "xml",
        -      "rtf",
        -      "png",
        -      "jpg",
        -      "jpeg",
        -      "webp",
        -      "svg",
        -      "tiff",
        -      "bmp",
        -      "gif",
        -      "zip",
        -      "idml",
        -      "epub",
        -      "cdr"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "properties": {
        -      "formatName": {
        -        "description": "Target format name.",
        -        "enum": [
        -          "pdf",
        -          "docx",
        -          "xlsx",
        -          "pptx",
        -          "odt",
        -          "ods",
        -          "odp",
        -          "odg",
        -          "html",
        -          "xhtml",
        -          "txt",
        -          "csv",
        -          "md",
        -          "xml",
        -          "rtf",
        -          "png",
        -          "jpg",
        -          "jpeg",
        -          "webp",
        -          "svg",
        -          "tiff",
        -          "bmp",
        -          "gif",
        -          "zip",
        -          "idml",
        -          "epub",
        -          "cdr"
        -        ],
        -        "type": "string"
        -      },
        -      "formatOptions": {
        -        "additionalProperties": {},
        -        "description": "Advanced format options object. Examples by format: PDF — { \"EncryptFile\": true, \"DocumentOpenPassword\": \"secret\", \"DocumentPermissionPassword\": \"owner\" } password-protect; PDF — { \"Watermarks\": [{ \"text\": \"DRAFT\", \"opacity\": 0.2, \"rotation\": -45, \"fontsize\": 60 }] } up to 5 watermarks; PDF — { \"SelectPdfVersion\": 1 } PDF/A-1b compliance (use 2 for PDF/A-2, 3 for PDF/A-3); PDF — { \"PageRange\": \"1-3,5\" } export specific pages only; PDF — { \"ConvertSlideshow\": true } convert each slide to a separate PDF page; Images (PNG/JPG/WEBP) — { \"Quality\": 90 } set compression quality 0-100; Images — { \"density\": 150 } set DPI for rasterisation (default 96); CSV — { \"fieldSeparator\": \";\" } custom column separator.",
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "formatName"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "pdf",
        +      "docx",
        +      "doc",
        +      "xlsx",
        +      "xls",
        +      "pptx",
        +      "ppt",
        +      "odt",
        +      "ods",
        +      "odp",
        +      "odg",
        +      "html",
        +      "xhtml",
        +      "txt",
        +      "csv",
        +      "md",
        +      "xml",
        +      "rtf",
        +      "png",
        +      "jpg",
        +      "jpeg",
        +      "webp",
        +      "svg",
        +      "tiff",
        +      "bmp",
        +      "gif",
        +      "zip",
        +      "idml",
        +      "epub",
        +      "cdr"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "properties": {
        +      "formatName": {
        +        "description": "Target format name.",
        +        "enum": [
        +          "pdf",
        +          "docx",
        +          "doc",
        +          "xlsx",
        +          "xls",
        +          "pptx",
        +          "ppt",
        +          "odt",
        +          "ods",
        +          "odp",
        +          "odg",
        +          "html",
        +          "xhtml",
        +          "txt",
        +          "csv",
        +          "md",
        +          "xml",
        +          "rtf",
        +          "png",
        +          "jpg",
        +          "jpeg",
        +          "webp",
        +          "svg",
        +          "tiff",
        +          "bmp",
        +          "gif",
        +          "zip",
        +          "idml",
        +          "epub",
        +          "cdr"
        +        ],
        +        "type": "string"
        +      },
        +      "formatOptions": {
        +        "additionalProperties": {},
        +        "description": "Advanced format options object. Examples by format: PDF — { \"EncryptFile\": true, \"DocumentOpenPassword\": \"secret\", \"DocumentPermissionPassword\": \"owner\" } password-protect; PDF — { \"Watermarks\": [{ \"text\": \"DRAFT\", \"opacity\": 0.2, \"rotation\": -45, \"fontsize\": 60 }] } up to 5 watermarks; PDF — { \"SelectPdfVersion\": 1 } PDF/A-1b compliance (use 2 for PDF/A-2, 3 for PDF/A-3); PDF — { \"PageRange\": \"1-3,5\" } export specific pages only; PDF — { \"ConvertSlideshow\": true } convert each slide to a separate PDF page; Images (PNG/JPG/WEBP) — { \"Quality\": 90 } set compression quality 0-100; Images — { \"density\": 150 } set DPI for rasterisation (default 96); CSV — { \"fieldSeparator\": \";\" } custom column separator.",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "formatName"
        +    ],
        +    "type": "object"
        +  }
        +]
      • changedInput schema / properties / convertTo / description
        Previous value: -"Target output format. Documents : \"pdf\", \"docx\", \"xlsx\", \"pptx\", \"odt\", \"ods\", \"odp\", \"odg\", \"rtf\", \"epub\". Web/text  : \"html\", \"xhtml\", \"txt\", \"csv\", \"md\", \"xml\", \"idml\". Images    : \"png\", \"jpg\", \"jpeg\", \"webp\", \"svg\", \"tiff\", \"bmp\", \"gif\". Archive   : \"zip\" (batch output). Simple usage: \"pdf\". Advanced usage: { \"formatName\": \"pdf\", \"formatOptions\": { \"EncryptFile\": true, \"DocumentOpenPassword\": \"secret\" } }."New value: +"Target output format. Documents : \"pdf\", \"docx\", \"xlsx\", \"pptx\", \"odt\", \"ods\", \"odp\", \"odg\", \"rtf\", \"epub\", plus the legacy \"doc\", \"xls\", \"ppt\" (output only — Carbone writes them but cannot read them back). Web/text  : \"html\", \"xhtml\", \"txt\", \"csv\", \"md\", \"xml\", \"idml\". Images    : \"png\", \"jpg\", \"jpeg\", \"webp\", \"svg\", \"tiff\", \"bmp\", \"gif\". Archive   : \"zip\" (batch output). Simple usage: \"pdf\". Advanced usage: { \"formatName\": \"pdf\", \"formatOptions\": { \"EncryptFile\": true, \"DocumentOpenPassword\": \"secret\" } }."
      • changedInput schema / properties / converter / description
        Previous value: -"Converter engine. Only relevant when convertTo is \"pdf\" (or an image format rasterised from a document). \"L\" — LibreOffice (default): best all-round engine for DOCX, XLSX, PPTX, ODT, ODS, ODP. \"O\" — OnlyOffice: highest fidelity rendering for Microsoft Office formats (DOCX, XLSX, PPTX). \"C\" — Chromium: best for HTML, CSS, JavaScript — full browser rendering. If omitted, LibreOffice is used by default."New value: +"Converter engine. Only relevant when convertTo is \"pdf\" (or an image format rasterised from a document). \"L\" — LibreOffice (default): best all-round engine for DOCX, XLSX, PPTX, ODT, ODS, ODP. \"O\" — OnlyOffice: highest fidelity rendering for Microsoft Office formats (DOCX, XLSX, PPTX). \"C\" — Chromium: best for HTML, CSS, JavaScript — full browser rendering. \"I\" — Carbone ICE (Instant Converter Engine, Carbone 5.14.0+): DOCX → PDF ONLY, no third-party converter — up to 60x faster than LibreOffice on a 1000-page DOCX (3x on a one-page document). Any other input or output format is REJECTED — use another converter for those. PDF options: only Watermarks are applied. EncryptFile, DocumentOpenPassword, RestrictPermissions and the other security options are SILENTLY IGNORED — the PDF comes back readable by anyone, with no error — so NEVER pick \"I\" when the request needs a password or restricted permissions; use \"L\" for those. Also unsupported: WEBP and EMF/WMF images, table of contents, SmartArt, complex charts, footnotes/endnotes, comments, tracked changes, form fields, equations, bookmarks and links; a missing font falls back to Noto Sans. If omitted, LibreOffice is used by default."
      • changedInput schema / properties / converter / enum
        Previous value: -[
        -  "L",
        -  "C",
        -  "O"
        -]New value: +[
        +  "L",
        +  "C",
        +  "O",
        +  "I"
        +]
      • changedInput schema / properties / file / description
        Previous value: -"The document to convert. Three input forms are accepted: (1) Local file path — absolute or relative, e.g. \"/home/user/report.docx\" or \"./invoice.xlsx\". (2) HTTPS URL — the file is downloaded automatically, e.g. \"https://example.com/file.pptx\". (3) Base64-encoded string — the raw file content encoded as base64. Supported input formats include: DOCX, XLSX, PPTX, ODT, ODS, ODP, ODG, HTML, XHTML, XML, IDML, Markdown (MD), PDF, TXT, CSV, PNG, JPG, SVG, and more. Full conversion matrix: https://carbone.io/documentation/developer/http-api/generate-reports.md"New value: +"The document to convert. Two input forms are accepted: (1) HTTPS URL — the file is downloaded automatically, e.g. \"https://example.com/file.pptx\". (2) Base64-encoded string — the raw file content encoded as base64. Local file paths are NOT accepted — this server is reached over HTTP, so a path would resolve on the server's disk rather than yours and is rejected. Upload the bytes as base64, or host the file at a URL. Supported input formats: DOCX, XLSX, PPTX, ODT, ODS, ODP, ODG, HTML, XHTML, XML, SVG, IDML, Markdown (MD), TXT, CSV, RTF, PDF, PNG and JPG. Carbone reads XML-based and text-based documents only, so the legacy BINARY Office formats DOC, XLS and PPT are REJECTED as input — Carbone can produce them as output but cannot read them. Re-save such a file as DOCX/XLSX/PPTX first. Full conversion matrix: https://carbone.io/documentation/developer/http-api/generate-reports.md"
      • addedInput schema / properties / hardRefresh
        Added value: +{
        +  "description": "Forces Carbone to run the converter even when the output format already matches the input format. Only useful for PDF: converting PDF → PDF to APPLY formatOptions (watermark, password, PDF/A, page range). Without it Carbone may pass the file straight through and none of those options take effect. Leave unset for any format-changing conversion (DOCX → PDF, XLSX → CSV, …), where the converter runs anyway.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / outputPath / description
        Previous value: -"Optional local file path to save the converted document to (e.g. \"/home/user/out.pdf\" or \"~/out.pdf\"). When set, the file is written to disk and the tool returns the saved path + size instead of embedding the document inline — ideal for large files. Local (stdio) mode only; rejected in HTTP mode."New value: +"NOT AVAILABLE on this server, which is reached over HTTP: the converted document would be written to the server's disk instead of yours, so passing outputPath is rejected. Use asAttachment to receive the bytes, or returnLink for a one-time download URL."
      • addedInput schema / properties / reportName
        Added value: +{
        +  "description": "Filename (WITHOUT extension) for the converted document, returned in the Content-Disposition header. Carbone appends the extension matching convertTo, so do not include one — \"report.pdf\" yields \"report.pdf.pdf\". Examples: \"contract\", \"2026-invoice\". Unlike render_document, Carbone tags are NOT resolved here (conversion does not run templating), so pass a literal name rather than a pattern like \"{d.id}\" — a pattern would come back verbatim. Ignored when returnLink is set, which returns a download URL rather than a named file.",
        +  "type": "string"
        +}
    • Changeddownload_template2 fields changed
      • changedInput schema / properties / outputPath / description
        Previous value: -"Optional local file path to save the template file to (e.g. \"/home/user/template.docx\" or \"~/template.docx\"). When set, the file is written to disk and the tool returns the saved path + size instead of embedding the file inline. Local (stdio) mode only; rejected in HTTP mode."New value: +"NOT AVAILABLE on this server, which is reached over HTTP: the template file would be written to the server's disk instead of yours, so passing outputPath is rejected. Use asAttachment to receive the bytes, or returnLink for a one-time download URL."
      • addedInput schema / properties / sample
        Added value: +{
        +  "description": "If true, download the JSON SAMPLE DATASET saved with the template (the \"sample\" array passed to upload_template) instead of the template file. Returns JSON of the form [{ \"data\": {...}, \"complement\": {...}, \"translations\": {...}, \"enum\": {...} }]. Use it to recover the example data a template expects — handy before calling render_document against an unfamiliar template. Errors if the template was uploaded without a sample.",
        +  "type": "boolean"
        +}
    • Changedlist_templates2 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of results to return. Must be between 1 and 100 (Carbone API limit). Default: 100."New value: +"Maximum number of results to return, between 1 and 100. Default: 100. Use cursor to page beyond that."
      • changedInput schema / properties / origin / description
        Previous value: -"Filter by upload origin. 0 = uploaded via API, 1 = uploaded via Carbone Studio."New value: +"Filter by upload origin. 0 = API, 1 = Carbone Studio, 2 = Salesforce, 3 = Odoo, 4 = HubSpot. Templates created through this MCP are origin 0."
    • Changedrender_document15 fields changed
      • changedInput schema / properties / batchOutput / description
        Previous value: -"Container format for the batch result. Use \"zip\" to receive all generated documents as a single ZIP archive. Must be used together with batchSplitBy."New value: +"How the batch result is packaged. Defaults to \"zip\". \"zip\" — every generated document is bundled into a single ZIP archive (use batchReportName to name each entry). \"pdf\" — all documents are CONCATENATED into one continuous PDF instead of being zipped; this requires convertTo to be \"pdf\" as well. Must be used together with batchSplitBy."
      • addedInput schema / properties / batchOutput / enum
        Added value: +[
        +  "zip",
        +  "pdf"
        +]
      • changedInput schema / properties / batchReportName / description
        Previous value: -"Filename pattern for each individual document inside the batch ZIP. Supports Carbone tags. Tags are resolved against the item's data (relative path) or the full dataset (absolute path). Examples: \"invoice-{d.id}.pdf\", \"{d.client.name}-{d.date}.docx\". Must be used together with batchSplitBy."New value: +"Filename pattern for each individual document inside the batch ZIP. Supports Carbone tags. Tags are resolved against the item's data (relative path) or the full dataset (absolute path). Examples: \"invoice-{d.id}.pdf\", \"{d.client.name}-{d.date}.docx\". Carbone sanitises the result — path separators, \"..\", Windows-forbidden and control characters each become an underscore — and appends an index to duplicates (\"report_1.pdf\", \"report_2.pdf\"), so a pattern that resolves to the same name for several items will not silently drop documents. Only meaningful with batchOutput: \"zip\"; a concatenated \"pdf\" batch is a single file. Must be used together with batchSplitBy."
      • changedInput schema / properties / batchSplitBy / description
        Previous value: -"JSON path to the array in your data that drives batch generation. One document is generated per element of the array; all documents are bundled together. Use batchOutput: \"zip\" to receive a single ZIP archive. Use batchReportName to customise each filename inside the ZIP. Example: \"d.invoices\" — produces one PDF per item in data.invoices. Example: \"d.employees\" — produces one contract per employee."New value: +"JSON path to the array in your data that drives batch generation. One document is generated per element of the array. Two forms: \"d\" when data itself IS the array (one report per top-level element), or \"d.arrayName\" to split on a child array. Example: \"d.invoices\" — produces one PDF per item in data.invoices. Example: \"d.employees\" — produces one contract per employee. Carbone Cloud allows 1 to 100 objects per batch (on-premise follows the nbReportMaxPerBatch setting). Batch is ALWAYS asynchronous — webhookUrl is required. Pair with batchOutput to choose ZIP or a single concatenated PDF, and batchReportName to name each document."
      • changedInput schema / properties / complement / description
        Previous value: -"Extra data object accessible in templates with {c.field} tags (as opposed to {d.field} for main data). Useful for static or shared values that should not be mixed into the main dataset: company info, logo URLs, footer text, configuration constants. Example: { \"company\": \"Acme Corp\", \"address\": \"123 Main St\", \"vatNumber\": \"FR12345\" }. Like data, may instead be passed by reference as a string — a local path, HTTPS URL, or base64 to a JSON file."New value: +"Extra data object accessible in templates with {c.field} tags (as opposed to {d.field} for main data). Useful for static or shared values that should not be mixed into the main dataset: company info, logo URLs, footer text, configuration constants. Example: { \"company\": \"Acme Corp\", \"address\": \"123 Main St\", \"vatNumber\": \"FR12345\" }. Like data, may instead be passed by reference as a string — an HTTPS URL or a base64-encoded JSON string (local file paths are not accepted over HTTP)."
      • changedInput schema / properties / convertTo / anyOf
        Previous value: -[
        -  {
        -    "enum": [
        -      "pdf",
        -      "docx",
        -      "xlsx",
        -      "pptx",
        -      "odt",
        -      "ods",
        -      "odp",
        -      "odg",
        -      "html",
        -      "xhtml",
        -      "txt",
        -      "csv",
        -      "md",
        -      "xml",
        -      "rtf",
        -      "png",
        -      "jpg",
        -      "jpeg",
        -      "webp",
        -      "svg",
        -      "tiff",
        -      "bmp",
        -      "gif",
        -      "zip",
        -      "idml",
        -      "epub",
        -      "cdr"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "properties": {
        -      "formatName": {
        -        "description": "Target format name.",
        -        "enum": [
        -          "pdf",
        -          "docx",
        -          "xlsx",
        -          "pptx",
        -          "odt",
        -          "ods",
        -          "odp",
        -          "odg",
        -          "html",
        -          "xhtml",
        -          "txt",
        -          "csv",
        -          "md",
        -          "xml",
        -          "rtf",
        -          "png",
        -          "jpg",
        -          "jpeg",
        -          "webp",
        -          "svg",
        -          "tiff",
        -          "bmp",
        -          "gif",
        -          "zip",
        -          "idml",
        -          "epub",
        -          "cdr"
        -        ],
        -        "type": "string"
        -      },
        -      "formatOptions": {
        -        "additionalProperties": {},
        -        "description": "Advanced format options object. Examples by format: PDF — { \"EncryptFile\": true, \"DocumentOpenPassword\": \"secret\", \"DocumentPermissionPassword\": \"owner\" } password-protect; PDF — { \"Watermarks\": [{ \"text\": \"DRAFT\", \"opacity\": 0.2, \"rotation\": -45, \"fontsize\": 60 }] } up to 5 watermarks; PDF — { \"SelectPdfVersion\": 1 } PDF/A-1b compliance (use 2 for PDF/A-2, 3 for PDF/A-3); PDF — { \"PageRange\": \"1-3,5\" } export specific pages only; PDF — { \"ConvertSlideshow\": true } convert each slide to a separate PDF page; Images (PNG/JPG/WEBP) — { \"Quality\": 90 } compression quality 0-100; Images — { \"density\": 150 } DPI for rasterisation (default 96); CSV — { \"fieldSeparator\": \";\" } custom column separator.",
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "formatName"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "pdf",
        +      "docx",
        +      "doc",
        +      "xlsx",
        +      "xls",
        +      "pptx",
        +      "ppt",
        +      "odt",
        +      "ods",
        +      "odp",
        +      "odg",
        +      "html",
        +      "xhtml",
        +      "txt",
        +      "csv",
        +      "md",
        +      "xml",
        +      "rtf",
        +      "png",
        +      "jpg",
        +      "jpeg",
        +      "webp",
        +      "svg",
        +      "tiff",
        +      "bmp",
        +      "gif",
        +      "zip",
        +      "idml",
        +      "epub",
        +      "cdr"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "properties": {
        +      "formatName": {
        +        "description": "Target format name.",
        +        "enum": [
        +          "pdf",
        +          "docx",
        +          "doc",
        +          "xlsx",
        +          "xls",
        +          "pptx",
        +          "ppt",
        +          "odt",
        +          "ods",
        +          "odp",
        +          "odg",
        +          "html",
        +          "xhtml",
        +          "txt",
        +          "csv",
        +          "md",
        +          "xml",
        +          "rtf",
        +          "png",
        +          "jpg",
        +          "jpeg",
        +          "webp",
        +          "svg",
        +          "tiff",
        +          "bmp",
        +          "gif",
        +          "zip",
        +          "idml",
        +          "epub",
        +          "cdr"
        +        ],
        +        "type": "string"
        +      },
        +      "formatOptions": {
        +        "additionalProperties": {},
        +        "description": "Advanced format options object. Examples by format: PDF — { \"EncryptFile\": true, \"DocumentOpenPassword\": \"secret\", \"DocumentPermissionPassword\": \"owner\" } password-protect; PDF — { \"Watermarks\": [{ \"text\": \"DRAFT\", \"opacity\": 0.2, \"rotation\": -45, \"fontsize\": 60 }] } up to 5 watermarks; PDF — { \"SelectPdfVersion\": 1 } PDF/A-1b compliance (use 2 for PDF/A-2, 3 for PDF/A-3); PDF — { \"PageRange\": \"1-3,5\" } export specific pages only; PDF — { \"ConvertSlideshow\": true } convert each slide to a separate PDF page; Images (PNG/JPG/WEBP) — { \"Quality\": 90 } compression quality 0-100; Images — { \"density\": 150 } DPI for rasterisation (default 96); CSV — { \"fieldSeparator\": \";\" } custom column separator.",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "formatName"
        +    ],
        +    "type": "object"
        +  }
        +]
      • changedInput schema / properties / converter / description
        Previous value: -"Converter engine. Only relevant when convertTo is \"pdf\" (or an image rasterised from a document). \"L\" — LibreOffice (default): best all-round engine for DOCX, XLSX, PPTX, ODT, ODS, ODP. \"O\" — OnlyOffice: highest fidelity for Microsoft Office formats (DOCX, XLSX, PPTX). \"C\" — Chromium: best for HTML/CSS/JS templates — full browser rendering. If omitted, LibreOffice is used by default."New value: +"Converter engine. Only relevant when convertTo is \"pdf\" (or an image rasterised from a document). \"L\" — LibreOffice (default): best all-round engine for DOCX, XLSX, PPTX, ODT, ODS, ODP. \"O\" — OnlyOffice: highest fidelity for Microsoft Office formats (DOCX, XLSX, PPTX). \"C\" — Chromium: best for HTML/CSS/JS templates — full browser rendering. \"I\" — Carbone ICE (Instant Converter Engine, Carbone 5.14.0+): DOCX → PDF ONLY, no third-party converter — up to 60x faster than LibreOffice on a 1000-page DOCX (3x on a one-page document). Any other input or output format is REJECTED — use another converter for those. PDF options: only Watermarks are applied. EncryptFile, DocumentOpenPassword, RestrictPermissions and the other security options are SILENTLY IGNORED — the PDF comes back readable by anyone, with no error — so NEVER pick \"I\" when the request needs a password or restricted permissions; use \"L\" for those. Also unsupported: WEBP and EMF/WMF images, table of contents, SmartArt, complex charts, footnotes/endnotes, comments, tracked changes, form fields, equations, bookmarks and links; a missing font falls back to Noto Sans. If omitted, LibreOffice is used by default."
      • changedInput schema / properties / converter / enum
        Previous value: -[
        -  "L",
        -  "C",
        -  "O"
        -]New value: +[
        +  "L",
        +  "C",
        +  "O",
        +  "I"
        +]
      • changedInput schema / properties / currencyRates / description
        Previous value: -"Exchange rate table used by :formatC for currency conversion. Keys are ISO 4217 currency codes; values are rates relative to a common base. The base currency should have rate 1. Example: { \"EUR\": 1, \"USD\": 1.08, \"GBP\": 0.86, \"JPY\": 160.5 }. May instead be passed by reference as a string — a local path, HTTPS URL, or base64 to a JSON file."New value: +"Exchange rate table used by :formatC for currency conversion. Keys are ISO 4217 currency codes; values are rates relative to a common base. The base currency should have rate 1. Example: { \"EUR\": 1, \"USD\": 1.08, \"GBP\": 0.86, \"JPY\": 160.5 }. May instead be passed by reference as a string — an HTTPS URL or a base64-encoded JSON string (local file paths are not accepted over HTTP)."
      • changedInput schema / properties / data / description
        Previous value: -"JSON data merged into the template — an object, or a top-level array (accessed with {d[i].field}). Access fields with {d.fieldName} tags. Nested objects: {d.customer.name}. Array loops: {d.items[i].description} … {d.items[i+1]}. Conditionals: {d.status == \"active\" ? \"Yes\" : \"No\"}. Optional — if omitted, defaults to an empty object {} so the template is simply converted (tags resolve to empty). Useful to convert a stored template by templateId without data injection. Instead of inlining a large dataset, you may pass a STRING reference to the JSON: a local file path (e.g. \"/data/invoices.json\"), an HTTPS URL, or a base64-encoded JSON string — it is read and parsed server-side. Local paths resolve in stdio (local) mode only; URLs and base64 work in both transports."New value: +"JSON data merged into the template — an object, or a top-level array (accessed with {d[i].field}). Access fields with {d.fieldName} tags. Nested objects: {d.customer.name}. Array loops: {d.items[i].description} … {d.items[i+1]}. Conditionals: {d.status == \"active\" ? \"Yes\" : \"No\"}. Optional — if omitted, defaults to an empty object {} so the template is simply converted (tags resolve to empty). Useful to convert a stored template by templateId without data injection. Instead of inlining a large dataset, you may pass a STRING reference to the JSON: an HTTPS URL or a base64-encoded JSON string (local file paths are not accepted over HTTP) — it is read and parsed server-side."
      • changedInput schema / properties / enum / description
        Previous value: -"Enumeration map used with the :convEnum(TYPE) formatter to translate code values into human-readable labels. Define one key per enum type; each value is an object mapping code → label. Example: { \"STATUS\": { \"1\": \"Active\", \"2\": \"Inactive\", \"3\": \"Pending\" }, \"ROLE\": { \"A\": \"Admin\", \"U\": \"User\" } }. Template usage: {d.status:convEnum(STATUS)}, {d.role:convEnum(ROLE)}. May instead be passed by reference as a string — a local path, HTTPS URL, or base64 to a JSON file. Documentation: https://carbone.io/documentation.html#convenum-type-"New value: +"Enumeration map used with the :convEnum(TYPE) formatter to translate code values into human-readable labels. Define one key per enum type; each value is an object mapping code → label. Example: { \"STATUS\": { \"1\": \"Active\", \"2\": \"Inactive\", \"3\": \"Pending\" }, \"ROLE\": { \"A\": \"Admin\", \"U\": \"User\" } }. Template usage: {d.status:convEnum(STATUS)}, {d.role:convEnum(ROLE)}. May instead be passed by reference as a string — an HTTPS URL or a base64-encoded JSON string (local file paths are not accepted over HTTP). Documentation: https://carbone.io/documentation.html#convenum-type-"
      • addedInput schema / properties / keepTags
        Added value: +{
        +  "description": "If true, SKIP templating entirely and leave every Carbone tag in the document exactly as written — {d.customer} comes out as the literal text \"{d.customer}\", formatters included. Use it to proof a stored template in another format (e.g. render templateId to PDF to check the tag layout), or to convert a template between formats while it stays a template. Mutually exclusive with data — passing both is rejected, because data would have nothing to fill. Note the difference from omitting data: no data renders the template with an EMPTY dataset, so every tag resolves to an empty string; keepTags leaves the tags themselves in place. Requires Carbone 5.9.0+ (carbone-version: 5).",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / outputPath / description
        Previous value: -"Optional local file path to save the generated document to (e.g. \"/home/user/out.pdf\" or \"~/out.pdf\"). When set, the file is written to disk and the tool returns the saved path + size instead of embedding the document inline — ideal for large files. Local (stdio) mode only; rejected in HTTP mode. Ignored for async/webhook renders (no document is returned inline)."New value: +"NOT AVAILABLE on this server, which is reached over HTTP: the generated document would be written to the server's disk instead of yours, so passing outputPath is rejected. Use asAttachment to receive the bytes, or returnLink for a one-time download URL. Ignored for async/webhook renders (no document is returned inline)."
      • changedInput schema / properties / template / description
        Previous value: -"Inline template for one-shot render without storing a template first. Accepts a local file path (e.g. /home/user/invoice.docx), a URL (https://example.com/template.docx), or a base64-encoded string. The template is uploaded and rendered in a single API request — no Template ID is returned. Use this for ephemeral renders; use upload_template + templateId when you need to reuse the template. Supported formats: DOCX, XLSX, PPTX, ODT, ODS, ODP, ODG, HTML, XHTML, IDML, XML, Markdown (MD), PDF, and more. Mutually exclusive with templateId — provide exactly one, never both."New value: +"Inline template for one-shot render without storing a template first. Two input forms are accepted: (1) HTTPS URL — the file is downloaded automatically, e.g. \"https://example.com/file.pptx\". (2) Base64-encoded string — the raw file content encoded as base64. Local file paths are NOT accepted — this server is reached over HTTP, so a path would resolve on the server's disk rather than yours and is rejected. Upload the bytes as base64, or host the file at a URL. The template is uploaded and rendered in a single API request — no Template ID is returned. Use this for ephemeral renders; use upload_template + templateId when you need to reuse the template. Supported formats: DOCX, XLSX, PPTX, ODT, ODS, ODP, ODG, HTML, XHTML, IDML, XML, Markdown (MD), PDF, and more. Mutually exclusive with templateId — provide exactly one, never both."
      • changedInput schema / properties / translations / description
        Previous value: -"Translation map for multilingual documents. Requires \"lang\" to be set to select the active locale. Top-level keys are BCP-47 locale codes; values are key → translated-string maps. Template usage: {t(greeting)} is replaced by the matching string for the active locale. Example: { \"fr-fr\": { \"greeting\": \"Bonjour\", \"total\": \"Total\" }, \"en-us\": { \"greeting\": \"Hello\", \"total\": \"Total\" } }. These dictionaries get large, so you may instead pass a string reference — a local path, HTTPS URL, or base64 to a JSON file. Documentation: https://carbone.io/documentation.html#translations"New value: +"Translation map for multilingual documents. Requires \"lang\" to be set to select the active locale. Top-level keys are BCP-47 locale codes; values are key → translated-string maps. Template usage: {t(greeting)} is replaced by the matching string for the active locale. Example: { \"fr-fr\": { \"greeting\": \"Bonjour\", \"total\": \"Total\" }, \"en-us\": { \"greeting\": \"Hello\", \"total\": \"Total\" } }. These dictionaries get large, so you may instead pass a string reference — an HTTPS URL or a base64-encoded JSON string (local file paths are not accepted over HTTP). Documentation: https://carbone.io/documentation.html#translations"
    • Changedupdate_template_metadata1 field changed
      • addedInput schema / properties / id
        Added value: +{
        +  "description": "Move this version under a DIFFERENT Template ID, re-parenting it so both share a version history. Pass the destination Template ID (64-bit). Leave unset to keep the version where it is — this does not rename anything, use name for that.",
        +  "type": "string"
        +}
    • Changedupload_template1 field changed
      • changedInput schema / properties / template / description
        Previous value: -"The template file. Accepts a local file path (e.g. /home/user/invoice.docx), a URL (https://example.com/template.docx), or a base64-encoded string. Supported formats: DOCX, XLSX, PPTX, ODT, ODS, ODP, ODG, HTML, XHTML, IDML, XML, Markdown (MD), PDF, and more. Full list: https://carbone.io/documentation/developer/http-api/generate-reports.md"New value: +"The template file. Two input forms are accepted: (1) HTTPS URL — the file is downloaded automatically, e.g. \"https://example.com/file.pptx\". (2) Base64-encoded string — the raw file content encoded as base64. Local file paths are NOT accepted — this server is reached over HTTP, so a path would resolve on the server's disk rather than yours and is rejected. Upload the bytes as base64, or host the file at a URL. Supported formats: DOCX, XLSX, PPTX, ODT, ODS, ODP, ODG, HTML, XHTML, IDML, XML, Markdown (MD), PDF, and more. Full list: https://carbone.io/documentation/developer/http-api/generate-reports.md"
  3. 2 tool updates
    • Changedconvert_document1 field changed
      • addedInput schema / properties / egressAuthorization
        Added value: +{
        +  "description": "Value for the Authorization header Carbone adds to its OUTBOUND (egress) requests during conversion — e.g. when a Chromium HTML→PDF conversion fetches a protected external image or stylesheet. For example \"Bearer abc123\" makes Carbone send `authorization: Bearer abc123` to those hosts. Only the authorization header can be customised; max 512 characters.",
        +  "maxLength": 512,
        +  "type": "string"
        +}
    • Changedrender_document3 fields changed
      • changedInput schema / properties / data / description
        Previous value: -"JSON data merged into the template — an object, or a top-level array (accessed with {d[i].field}). Access fields with {d.fieldName} tags. Nested objects: {d.customer.name}. Array loops: {d.items[i].description} … {d.items[i+1]}. Conditionals: {d.status == \"active\" ? \"Yes\" : \"No\"}. For pure document conversion without data injection, pass {}. Instead of inlining a large dataset, you may pass a STRING reference to the JSON: a local file path (e.g. \"/data/invoices.json\"), an HTTPS URL, or a base64-encoded JSON string — it is read and parsed server-side. Local paths resolve in stdio (local) mode only; URLs and base64 work in both transports."New value: +"JSON data merged into the template — an object, or a top-level array (accessed with {d[i].field}). Access fields with {d.fieldName} tags. Nested objects: {d.customer.name}. Array loops: {d.items[i].description} … {d.items[i+1]}. Conditionals: {d.status == \"active\" ? \"Yes\" : \"No\"}. Optional — if omitted, defaults to an empty object {} so the template is simply converted (tags resolve to empty). Useful to convert a stored template by templateId without data injection. Instead of inlining a large dataset, you may pass a STRING reference to the JSON: a local file path (e.g. \"/data/invoices.json\"), an HTTPS URL, or a base64-encoded JSON string — it is read and parsed server-side. Local paths resolve in stdio (local) mode only; URLs and base64 work in both transports."
      • addedInput schema / properties / egressAuthorization
        Added value: +{
        +  "description": "Value for the Authorization header Carbone adds to its OUTBOUND (egress) requests while rendering — fetching external images ({d.imageUrl}), external PDFs (:appendFile / :attachFile), and calling webhooks. For example \"Bearer abc123\" or \"my-secret\" makes Carbone send `authorization: <value>` to those hosts. Only the authorization header can be customised; max 512 characters. For webhook calls specifically, webhookHeaders.authorization (if set) overrides this value.",
        +  "maxLength": 512,
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "data"
        -]
  4. 1 tool update
    • Changedrender_document25 fields changed
      • removedInput schema / properties / complement / additionalProperties
        Removed value: -{}
      • addedInput schema / properties / complement / anyOf
        Added value: +[
        +  {
        +    "additionalProperties": {},
        +    "propertyNames": {
        +      "type": "string"
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / complement / description
        Previous value: -"Extra data object accessible in templates with {c.field} tags (as opposed to {d.field} for main data). Useful for static or shared values that should not be mixed into the main dataset: company info, logo URLs, footer text, configuration constants. Example: { \"company\": \"Acme Corp\", \"address\": \"123 Main St\", \"vatNumber\": \"FR12345\" }"New value: +"Extra data object accessible in templates with {c.field} tags (as opposed to {d.field} for main data). Useful for static or shared values that should not be mixed into the main dataset: company info, logo URLs, footer text, configuration constants. Example: { \"company\": \"Acme Corp\", \"address\": \"123 Main St\", \"vatNumber\": \"FR12345\" }. Like data, may instead be passed by reference as a string — a local path, HTTPS URL, or base64 to a JSON file."
      • removedInput schema / properties / complement / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / complement / type
        Removed value: -"object"
      • removedInput schema / properties / currencyRates / additionalProperties
        Removed value: -{
        -  "type": "number"
        -}
      • addedInput schema / properties / currencyRates / anyOf
        Added value: +[
        +  {
        +    "additionalProperties": {
        +      "type": "number"
        +    },
        +    "propertyNames": {
        +      "type": "string"
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / currencyRates / description
        Previous value: -"Exchange rate table used by :formatC for currency conversion. Keys are ISO 4217 currency codes; values are rates relative to a common base. The base currency should have rate 1. Example: { \"EUR\": 1, \"USD\": 1.08, \"GBP\": 0.86, \"JPY\": 160.5 }."New value: +"Exchange rate table used by :formatC for currency conversion. Keys are ISO 4217 currency codes; values are rates relative to a common base. The base currency should have rate 1. Example: { \"EUR\": 1, \"USD\": 1.08, \"GBP\": 0.86, \"JPY\": 160.5 }. May instead be passed by reference as a string — a local path, HTTPS URL, or base64 to a JSON file."
      • removedInput schema / properties / currencyRates / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / currencyRates / type
        Removed value: -"object"
      • removedInput schema / properties / data / additionalProperties
        Removed value: -{}
      • addedInput schema / properties / data / anyOf
        Added value: +[
        +  {
        +    "additionalProperties": {},
        +    "propertyNames": {
        +      "type": "string"
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / data / description
        Previous value: -"JSON data merged into the template. Access fields with {d.fieldName} tags. Nested objects: {d.customer.name}. Array loops: {d.items[i].description} … {d.items[i+1]}. Conditionals: {d.status == \"active\" ? \"Yes\" : \"No\"}. For pure document conversion without data injection, pass {}."New value: +"JSON data merged into the template — an object, or a top-level array (accessed with {d[i].field}). Access fields with {d.fieldName} tags. Nested objects: {d.customer.name}. Array loops: {d.items[i].description} … {d.items[i+1]}. Conditionals: {d.status == \"active\" ? \"Yes\" : \"No\"}. For pure document conversion without data injection, pass {}. Instead of inlining a large dataset, you may pass a STRING reference to the JSON: a local file path (e.g. \"/data/invoices.json\"), an HTTPS URL, or a base64-encoded JSON string — it is read and parsed server-side. Local paths resolve in stdio (local) mode only; URLs and base64 work in both transports."
      • removedInput schema / properties / data / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / data / type
        Removed value: -"object"
      • removedInput schema / properties / enum / additionalProperties
        Removed value: -{}
      • addedInput schema / properties / enum / anyOf
        Added value: +[
        +  {
        +    "additionalProperties": {},
        +    "propertyNames": {
        +      "type": "string"
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / enum / description
        Previous value: -"Enumeration map used with the :convEnum(TYPE) formatter to translate code values into human-readable labels. Define one key per enum type; each value is an object mapping code → label. Example: { \"STATUS\": { \"1\": \"Active\", \"2\": \"Inactive\", \"3\": \"Pending\" }, \"ROLE\": { \"A\": \"Admin\", \"U\": \"User\" } }. Template usage: {d.status:convEnum(STATUS)}, {d.role:convEnum(ROLE)}. Documentation: https://carbone.io/documentation.html#convenum-type-"New value: +"Enumeration map used with the :convEnum(TYPE) formatter to translate code values into human-readable labels. Define one key per enum type; each value is an object mapping code → label. Example: { \"STATUS\": { \"1\": \"Active\", \"2\": \"Inactive\", \"3\": \"Pending\" }, \"ROLE\": { \"A\": \"Admin\", \"U\": \"User\" } }. Template usage: {d.status:convEnum(STATUS)}, {d.role:convEnum(ROLE)}. May instead be passed by reference as a string — a local path, HTTPS URL, or base64 to a JSON file. Documentation: https://carbone.io/documentation.html#convenum-type-"
      • removedInput schema / properties / enum / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / enum / type
        Removed value: -"object"
      • removedInput schema / properties / translations / additionalProperties
        Removed value: -{
        -  "additionalProperties": {
        -    "type": "string"
        -  },
        -  "propertyNames": {
        -    "type": "string"
        -  },
        -  "type": "object"
        -}
      • addedInput schema / properties / translations / anyOf
        Added value: +[
        +  {
        +    "additionalProperties": {
        +      "additionalProperties": {
        +        "type": "string"
        +      },
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "propertyNames": {
        +      "type": "string"
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / translations / description
        Previous value: -"Translation map for multilingual documents. Requires \"lang\" to be set to select the active locale. Top-level keys are BCP-47 locale codes; values are key → translated-string maps. Template usage: {t(greeting)} is replaced by the matching string for the active locale. Example: { \"fr-fr\": { \"greeting\": \"Bonjour\", \"total\": \"Total\" }, \"en-us\": { \"greeting\": \"Hello\", \"total\": \"Total\" } }. Documentation: https://carbone.io/documentation.html#translations"New value: +"Translation map for multilingual documents. Requires \"lang\" to be set to select the active locale. Top-level keys are BCP-47 locale codes; values are key → translated-string maps. Template usage: {t(greeting)} is replaced by the matching string for the active locale. Example: { \"fr-fr\": { \"greeting\": \"Bonjour\", \"total\": \"Total\" }, \"en-us\": { \"greeting\": \"Hello\", \"total\": \"Total\" } }. These dictionaries get large, so you may instead pass a string reference — a local path, HTTPS URL, or base64 to a JSON file. Documentation: https://carbone.io/documentation.html#translations"
      • removedInput schema / properties / translations / propertyNames
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / translations / type
        Removed value: -"object"
  5. 2 tool updates
    • Changedconvert_document1 field changed
      • changedInput schema / properties / file / description
        Previous value: -"The document to convert. Three input forms are accepted: (1) Local file path — absolute or relative, e.g. \"/home/user/report.docx\" or \"./invoice.xlsx\". (2) HTTPS URL — the file is downloaded automatically, e.g. \"https://example.com/file.pptx\". (3) Base64-encoded string — the raw file content encoded as base64. Supported input formats include: DOCX, XLSX, PPTX, ODT, ODS, ODP, ODG, HTML, XHTML, XML, IDML, Markdown (MD), PDF, TXT, CSV, PNG, JPG, SVG, and more. Full conversion matrix: https://carbone.io/documentation/developer/http-api/generate-reports.html#output-file-type"New value: +"The document to convert. Three input forms are accepted: (1) Local file path — absolute or relative, e.g. \"/home/user/report.docx\" or \"./invoice.xlsx\". (2) HTTPS URL — the file is downloaded automatically, e.g. \"https://example.com/file.pptx\". (3) Base64-encoded string — the raw file content encoded as base64. Supported input formats include: DOCX, XLSX, PPTX, ODT, ODS, ODP, ODG, HTML, XHTML, XML, IDML, Markdown (MD), PDF, TXT, CSV, PNG, JPG, SVG, and more. Full conversion matrix: https://carbone.io/documentation/developer/http-api/generate-reports.md"
    • Changedupload_template1 field changed
      • changedInput schema / properties / template / description
        Previous value: -"The template file. Accepts a local file path (e.g. /home/user/invoice.docx), a URL (https://example.com/template.docx), or a base64-encoded string. Supported formats: DOCX, XLSX, PPTX, ODT, ODS, ODP, ODG, HTML, XHTML, IDML, XML, Markdown (MD), PDF, and more. Full list: https://carbone.io/documentation/developer/http-api/generate-reports.html#output-file-type"New value: +"The template file. Accepts a local file path (e.g. /home/user/invoice.docx), a URL (https://example.com/template.docx), or a base64-encoded string. Supported formats: DOCX, XLSX, PPTX, ODT, ODS, ODP, ODG, HTML, XHTML, IDML, XML, Markdown (MD), PDF, and more. Full list: https://carbone.io/documentation/developer/http-api/generate-reports.md"
  6. 2 tool updates
    • Changedconvert_document2 fields changed
      • changedInput schema / properties / asAttachment / description
        Previous value: -"If true, return the document as a downloadable file attachment (base64 resource) instead of inline text/image. Use when the user wants to download or save the file rather than read its content inline — especially in HTTP mode where outputPath is unavailable. Default: false (text inline, images viewable, other binaries as resources). Ignored when outputPath is set."New value: +"If true, return the document as a downloadable file attachment (a base64 EmbeddedResource), for any format. Default delivery: text and png/jpg/gif/webp are returned inline; other binary outputs (PDF, Office, …) are saved to a temp file in stdio mode (path returned), or returned as an attachment in HTTP mode. Ignored when outputPath or returnLink is set."
      • addedInput schema / properties / returnLink
        Added value: +{
        +  "description": "If true, generate the document and return a public download URL instead of the file contents. The link is SHORT-LIVED and ONE-TIME — Carbone deletes the file after the first download — so it is meant for the end user to download once (do not fetch it programmatically). Works in stdio and HTTP. Mutually exclusive with outputPath and asAttachment.",
        +  "type": "boolean"
        +}
    • Changedrender_document2 fields changed
      • changedInput schema / properties / asAttachment / description
        Previous value: -"If true, return the document as a downloadable file attachment (base64 resource) instead of inline text/image. Use when the user wants to download or save the file rather than read its content inline — especially in HTTP mode where outputPath is unavailable. Default: false (text inline, images viewable, other binaries as resources). Ignored when outputPath is set."New value: +"If true, return the document as a downloadable file attachment (a base64 EmbeddedResource), for any format. Default delivery: text and png/jpg/gif/webp are returned inline; other binary outputs (PDF, Office, …) are saved to a temp file in stdio mode (path returned), or returned as an attachment in HTTP mode. Ignored when outputPath or returnLink is set."
      • addedInput schema / properties / returnLink
        Added value: +{
        +  "description": "If true, generate the document and return a public download URL instead of the file contents. The link is SHORT-LIVED and ONE-TIME — Carbone deletes the file after the first download — so it is meant for the end user to download once (do not fetch it programmatically). Works in stdio and HTTP. Mutually exclusive with outputPath, asAttachment, and webhookUrl (async).",
        +  "type": "boolean"
        +}
  7. 8 tool updates
    • Changedconvert_document3 fields changed
      • addedInput schema / properties / asAttachment
        Added value: +{
        +  "description": "If true, return the document as a downloadable file attachment (base64 resource) instead of inline text/image. Use when the user wants to download or save the file rather than read its content inline — especially in HTTP mode where outputPath is unavailable. Default: false (text inline, images viewable, other binaries as resources). Ignored when outputPath is set.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / convertTo / anyOf
        Previous value: -[
        -  {
        -    "enum": [
        -      "pdf",
        -      "docx",
        -      "xlsx",
        -      "pptx",
        -      "odt",
        -      "ods",
        -      "odp",
        -      "odg",
        -      "html",
        -      "xhtml",
        -      "txt",
        -      "csv",
        -      "md",
        -      "xml",
        -      "rtf",
        -      "png",
        -      "jpg",
        -      "jpeg",
        -      "webp",
        -      "svg",
        -      "tiff",
        -      "bmp",
        -      "gif",
        -      "zip",
        -      "idml",
        -      "epub"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "properties": {
        -      "formatName": {
        -        "description": "Target format name.",
        -        "enum": [
        -          "pdf",
        -          "docx",
        -          "xlsx",
        -          "pptx",
        -          "odt",
        -          "ods",
        -          "odp",
        -          "odg",
        -          "html",
        -          "xhtml",
        -          "txt",
        -          "csv",
        -          "md",
        -          "xml",
        -          "rtf",
        -          "png",
        -          "jpg",
        -          "jpeg",
        -          "webp",
        -          "svg",
        -          "tiff",
        -          "bmp",
        -          "gif",
        -          "zip",
        -          "idml",
        -          "epub"
        -        ],
        -        "type": "string"
        -      },
        -      "formatOptions": {
        -        "additionalProperties": {},
        -        "description": "Advanced format options object. Examples by format: PDF — { \"EncryptFile\": true, \"DocumentOpenPassword\": \"secret\", \"DocumentPermissionPassword\": \"owner\" } password-protect; PDF — { \"Watermarks\": [{ \"text\": \"DRAFT\", \"opacity\": 0.2, \"rotation\": -45, \"fontsize\": 60 }] } up to 5 watermarks; PDF — { \"SelectPdfVersion\": 1 } PDF/A-1b compliance (use 2 for PDF/A-2, 3 for PDF/A-3); PDF — { \"PageRange\": \"1-3,5\" } export specific pages only; PDF — { \"ConvertSlideshow\": true } convert each slide to a separate PDF page; Images (PNG/JPG/WEBP) — { \"Quality\": 90 } set compression quality 0-100; Images — { \"density\": 150 } set DPI for rasterisation (default 96); CSV — { \"fieldSeparator\": \";\" } custom column separator.",
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "formatName"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "pdf",
        +      "docx",
        +      "xlsx",
        +      "pptx",
        +      "odt",
        +      "ods",
        +      "odp",
        +      "odg",
        +      "html",
        +      "xhtml",
        +      "txt",
        +      "csv",
        +      "md",
        +      "xml",
        +      "rtf",
        +      "png",
        +      "jpg",
        +      "jpeg",
        +      "webp",
        +      "svg",
        +      "tiff",
        +      "bmp",
        +      "gif",
        +      "zip",
        +      "idml",
        +      "epub",
        +      "cdr"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "properties": {
        +      "formatName": {
        +        "description": "Target format name.",
        +        "enum": [
        +          "pdf",
        +          "docx",
        +          "xlsx",
        +          "pptx",
        +          "odt",
        +          "ods",
        +          "odp",
        +          "odg",
        +          "html",
        +          "xhtml",
        +          "txt",
        +          "csv",
        +          "md",
        +          "xml",
        +          "rtf",
        +          "png",
        +          "jpg",
        +          "jpeg",
        +          "webp",
        +          "svg",
        +          "tiff",
        +          "bmp",
        +          "gif",
        +          "zip",
        +          "idml",
        +          "epub",
        +          "cdr"
        +        ],
        +        "type": "string"
        +      },
        +      "formatOptions": {
        +        "additionalProperties": {},
        +        "description": "Advanced format options object. Examples by format: PDF — { \"EncryptFile\": true, \"DocumentOpenPassword\": \"secret\", \"DocumentPermissionPassword\": \"owner\" } password-protect; PDF — { \"Watermarks\": [{ \"text\": \"DRAFT\", \"opacity\": 0.2, \"rotation\": -45, \"fontsize\": 60 }] } up to 5 watermarks; PDF — { \"SelectPdfVersion\": 1 } PDF/A-1b compliance (use 2 for PDF/A-2, 3 for PDF/A-3); PDF — { \"PageRange\": \"1-3,5\" } export specific pages only; PDF — { \"ConvertSlideshow\": true } convert each slide to a separate PDF page; Images (PNG/JPG/WEBP) — { \"Quality\": 90 } set compression quality 0-100; Images — { \"density\": 150 } set DPI for rasterisation (default 96); CSV — { \"fieldSeparator\": \";\" } custom column separator.",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "formatName"
        +    ],
        +    "type": "object"
        +  }
        +]
      • addedInput schema / properties / outputPath
        Added value: +{
        +  "description": "Optional local file path to save the converted document to (e.g. \"/home/user/out.pdf\" or \"~/out.pdf\"). When set, the file is written to disk and the tool returns the saved path + size instead of embedding the document inline — ideal for large files. Local (stdio) mode only; rejected in HTTP mode.",
        +  "type": "string"
        +}
    • Changeddownload_template2 fields changed
      • addedInput schema / properties / asAttachment
        Added value: +{
        +  "description": "If true, return the template as a downloadable file attachment (base64 resource) instead of inline text/image. Useful in HTTP mode where outputPath is unavailable. Default: false. Ignored when outputPath is set.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / outputPath
        Added value: +{
        +  "description": "Optional local file path to save the template file to (e.g. \"/home/user/template.docx\" or \"~/template.docx\"). When set, the file is written to disk and the tool returns the saved path + size instead of embedding the file inline. Local (stdio) mode only; rejected in HTTP mode.",
        +  "type": "string"
        +}
    • Changedget_api_status1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "message": {
        +      "description": "Status message returned by the API.",
        +      "type": "string"
        +    },
        +    "version": {
        +      "description": "The running Carbone API version.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "version",
        +    "message"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_categories1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "categories": {
        +      "description": "Template category names in use.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "categories"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_tags1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "tags": {
        +      "description": "Template tag names in use.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "tags"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_templates5 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of results to return (default: 100)."New value: +"Maximum number of results to return. Must be between 1 and 100 (Carbone API limit). Default: 100."
      • removedInput schema / properties / limit / exclusiveMinimum
        Removed value: -0
      • changedInput schema / properties / limit / maximum
        Previous value: -9007199254740991New value: +100
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "hasMore": {
        +      "description": "Whether more results are available via the cursor.",
        +      "type": "boolean"
        +    },
        +    "nextCursor": {
        +      "description": "Cursor to pass to the next list_templates call.",
        +      "type": "string"
        +    },
        +    "templates": {
        +      "description": "The matching templates (all fields).",
        +      "items": {
        +        "additionalProperties": {},
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "templates",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Changedrender_document4 fields changed
      • addedInput schema / properties / asAttachment
        Added value: +{
        +  "description": "If true, return the document as a downloadable file attachment (base64 resource) instead of inline text/image. Use when the user wants to download or save the file rather than read its content inline — especially in HTTP mode where outputPath is unavailable. Default: false (text inline, images viewable, other binaries as resources). Ignored when outputPath is set.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / convertTo / anyOf
        Previous value: -[
        -  {
        -    "enum": [
        -      "pdf",
        -      "docx",
        -      "xlsx",
        -      "pptx",
        -      "odt",
        -      "ods",
        -      "odp",
        -      "odg",
        -      "html",
        -      "xhtml",
        -      "txt",
        -      "csv",
        -      "md",
        -      "xml",
        -      "rtf",
        -      "png",
        -      "jpg",
        -      "jpeg",
        -      "webp",
        -      "svg",
        -      "tiff",
        -      "bmp",
        -      "gif",
        -      "zip",
        -      "idml",
        -      "epub"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "properties": {
        -      "formatName": {
        -        "description": "Target format name.",
        -        "enum": [
        -          "pdf",
        -          "docx",
        -          "xlsx",
        -          "pptx",
        -          "odt",
        -          "ods",
        -          "odp",
        -          "odg",
        -          "html",
        -          "xhtml",
        -          "txt",
        -          "csv",
        -          "md",
        -          "xml",
        -          "rtf",
        -          "png",
        -          "jpg",
        -          "jpeg",
        -          "webp",
        -          "svg",
        -          "tiff",
        -          "bmp",
        -          "gif",
        -          "zip",
        -          "idml",
        -          "epub"
        -        ],
        -        "type": "string"
        -      },
        -      "formatOptions": {
        -        "additionalProperties": {},
        -        "description": "Advanced format options object. Examples by format: PDF — { \"EncryptFile\": true, \"DocumentOpenPassword\": \"secret\", \"DocumentPermissionPassword\": \"owner\" } password-protect; PDF — { \"Watermarks\": [{ \"text\": \"DRAFT\", \"opacity\": 0.2, \"rotation\": -45, \"fontsize\": 60 }] } up to 5 watermarks; PDF — { \"SelectPdfVersion\": 1 } PDF/A-1b compliance (use 2 for PDF/A-2, 3 for PDF/A-3); PDF — { \"PageRange\": \"1-3,5\" } export specific pages only; PDF — { \"ConvertSlideshow\": true } convert each slide to a separate PDF page; Images (PNG/JPG/WEBP) — { \"Quality\": 90 } compression quality 0-100; Images — { \"density\": 150 } DPI for rasterisation (default 96); CSV — { \"fieldSeparator\": \";\" } custom column separator.",
        -        "propertyNames": {
        -          "type": "string"
        -        },
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "formatName"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "pdf",
        +      "docx",
        +      "xlsx",
        +      "pptx",
        +      "odt",
        +      "ods",
        +      "odp",
        +      "odg",
        +      "html",
        +      "xhtml",
        +      "txt",
        +      "csv",
        +      "md",
        +      "xml",
        +      "rtf",
        +      "png",
        +      "jpg",
        +      "jpeg",
        +      "webp",
        +      "svg",
        +      "tiff",
        +      "bmp",
        +      "gif",
        +      "zip",
        +      "idml",
        +      "epub",
        +      "cdr"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "properties": {
        +      "formatName": {
        +        "description": "Target format name.",
        +        "enum": [
        +          "pdf",
        +          "docx",
        +          "xlsx",
        +          "pptx",
        +          "odt",
        +          "ods",
        +          "odp",
        +          "odg",
        +          "html",
        +          "xhtml",
        +          "txt",
        +          "csv",
        +          "md",
        +          "xml",
        +          "rtf",
        +          "png",
        +          "jpg",
        +          "jpeg",
        +          "webp",
        +          "svg",
        +          "tiff",
        +          "bmp",
        +          "gif",
        +          "zip",
        +          "idml",
        +          "epub",
        +          "cdr"
        +        ],
        +        "type": "string"
        +      },
        +      "formatOptions": {
        +        "additionalProperties": {},
        +        "description": "Advanced format options object. Examples by format: PDF — { \"EncryptFile\": true, \"DocumentOpenPassword\": \"secret\", \"DocumentPermissionPassword\": \"owner\" } password-protect; PDF — { \"Watermarks\": [{ \"text\": \"DRAFT\", \"opacity\": 0.2, \"rotation\": -45, \"fontsize\": 60 }] } up to 5 watermarks; PDF — { \"SelectPdfVersion\": 1 } PDF/A-1b compliance (use 2 for PDF/A-2, 3 for PDF/A-3); PDF — { \"PageRange\": \"1-3,5\" } export specific pages only; PDF — { \"ConvertSlideshow\": true } convert each slide to a separate PDF page; Images (PNG/JPG/WEBP) — { \"Quality\": 90 } compression quality 0-100; Images — { \"density\": 150 } DPI for rasterisation (default 96); CSV — { \"fieldSeparator\": \";\" } custom column separator.",
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "formatName"
        +    ],
        +    "type": "object"
        +  }
        +]
      • addedInput schema / properties / outputPath
        Added value: +{
        +  "description": "Optional local file path to save the generated document to (e.g. \"/home/user/out.pdf\" or \"~/out.pdf\"). When set, the file is written to disk and the tool returns the saved path + size instead of embedding the document inline — ideal for large files. Local (stdio) mode only; rejected in HTTP mode. Ignored for async/webhook renders (no document is returned inline).",
        +  "type": "string"
        +}
      • changedInput schema / properties / reportName / description
        Previous value: -"Filename for the generated document, returned in the Content-Disposition header. Supports Carbone tags resolved against the data at render time. Examples: \"invoice.pdf\" (static), \"{d.type}-{d.id}.pdf\" (dynamic), \"{d.client}-{d.date:formatD(YYYY-MM)}.docx\"."New value: +"Filename (WITHOUT extension) for the generated document, returned in the Content-Disposition header. Carbone automatically appends the extension that matches convertTo, so do not include one — passing \"invoice.pdf\" yields \"invoice.pdf.pdf\". Supports Carbone tags resolved against the data at render time. Examples: \"invoice\" (static), \"{d.type}-{d.id}\" (dynamic), \"{d.client}-{d.date:formatD(YYYY-MM)}\"."
    • Changedupload_template1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "id": {
        +      "description": "Stable Template ID (when versioning is enabled).",
        +      "type": "string"
        +    },
        +    "name": {
        +      "description": "Template display name.",
        +      "type": "string"
        +    },
        +    "size": {
        +      "description": "Template size in bytes.",
        +      "type": "number"
        +    },
        +    "templateId": {
        +      "description": "Template ID returned in legacy/non-versioned mode.",
        +      "type": "string"
        +    },
        +    "type": {
        +      "description": "Detected template file type.",
        +      "type": "string"
        +    },
        +    "versionId": {
        +      "description": "Version ID (SHA-256) of this uploaded version.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "name"
        +  ],
        +  "type": "object"
        +}
  8. 1 tool update
    • Changedrender_document2 fields changed
      • addedInput schema / properties / webhookHeaders
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "Custom headers Carbone will include when POSTing to your webhookUrl. Pass plain header names as keys — the prefix \"carbone-webhook-header-\" is added automatically before sending to Carbone, and Carbone forwards the original header names to your webhook endpoint. Example: { \"authorization\": \"my-secret\", \"custom-id\": \"12345\", \"custom-name\": \"Jane Doe\" } — Carbone will call your URL with headers: authorization: my-secret, custom-id: 12345, custom-name: Jane Doe. Requires webhookUrl to be set.",
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / webhookUrl
        Added value: +{
        +  "description": "Webhook URL to enable asynchronous rendering. When provided, Carbone returns immediately and POSTs { \"success\": true, \"data\": { \"renderId\": \"...\" } } to this URL when the document is ready. The default render timeout is extended to 5 minutes on Carbone Cloud (vs 60 s for synchronous requests). Download the document with GET /render/:renderId once the webhook is received. Required when using batchSplitBy (batch generation is always asynchronous). Example: \"https://your-server.com/carbone-webhook\".",
        +  "format": "uri",
        +  "type": "string"
        +}
  9. 11 tool updates
    • First observedconvert_document
    • First observeddelete_template
    • First observeddownload_template
    • First observedget_api_status
    • First observedget_capabilities
    • First observedlist_categories
    • First observedlist_tags
    • First observedlist_templates
    • First observedrender_document
    • First observedupdate_template_metadata
    • First observedupload_template

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.