Carbone MCP
Server Details
Automate enterprise-grade documents from templates, merge and 100+ conversions: PDF, Office, HTML.
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
Scored across 12 tools
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).
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.
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.
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.
11 tool updates
- Changed
convert_document11 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Input schema / properties / asAttachment / descriptionPrevious 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." - changed
Input schema / properties / convertTo / anyOfPrevious 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" + } +] - changed
Input schema / properties / convertTo / descriptionPrevious 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\": { ... } }." - changed
Input schema / properties / converter / descriptionPrevious 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" - changed
Input schema / properties / converter / enumPrevious value: -[ - "L", - "C", - "O", - "I" -]New value: +[ + "L", + "O", + "C", + "I" +] - changed
Input schema / properties / egressAuthorization / descriptionPrevious 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." - changed
Input schema / properties / egressAuthorization / maxLengthPrevious value: -512New value: +511 - changed
Input schema / properties / file / descriptionPrevious 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" - changed
Input schema / properties / hardRefresh / descriptionPrevious 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 } } }." - changed
Input schema / properties / reportName / descriptionPrevious 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)."
- Changed
delete_template1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
download_template3 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Input schema / properties / outputPath / descriptionPrevious 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." - changed
Input schema / properties / sample / descriptionPrevious 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."
- Changed
get_api_status1 field changed- changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Added
inspect_template - Changed
list_categories1 field changed- changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
list_tags1 field changed- changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
list_templates4 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Input schema / properties / limit / descriptionPrevious 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." - changed
Input schema / properties / origin / descriptionPrevious 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." - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
render_document23 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Input schema / properties / asAttachment / descriptionPrevious 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." - changed
Input schema / properties / batchOutput / descriptionPrevious 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\"." - changed
Input schema / properties / batchReportName / descriptionPrevious 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." - changed
Input schema / properties / batchSplitBy / descriptionPrevious 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" - changed
Input schema / properties / convertTo / anyOfPrevious 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" + } +] - changed
Input schema / properties / convertTo / descriptionPrevious 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\": { ... } }." - changed
Input schema / properties / converter / descriptionPrevious 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" - changed
Input schema / properties / converter / enumPrevious value: -[ - "L", - "C", - "O", - "I" -]New value: +[ + "L", + "O", + "C", + "I" +] - changed
Input schema / properties / currencyTarget / descriptionPrevious 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" - changed
Input schema / properties / data / descriptionPrevious 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." - changed
Input schema / properties / egressAuthorization / descriptionPrevious 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." - changed
Input schema / properties / egressAuthorization / maxLengthPrevious value: -512New value: +511 - changed
Input schema / properties / enum / descriptionPrevious 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" - added
Input schema / properties / failOnAdded 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" +} - changed
Input schema / properties / keepTags / descriptionPrevious 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." - added
Input schema / properties / preReleaseFeatureInAdded 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" +} - changed
Input schema / properties / reportName / descriptionPrevious 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)." - changed
Input schema / properties / returnLink / descriptionPrevious 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)." - changed
Input schema / properties / template / descriptionPrevious 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." - changed
Input schema / properties / translations / descriptionPrevious 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" - changed
Input schema / properties / variableStr / descriptionPrevious 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" - changed
Input schema / properties / webhookUrl / descriptionPrevious 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\"."
- Changed
update_template_metadata16 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Input schema / properties / category / descriptionPrevious value: -"New category."New value: +"New category, max 200 characters." - added
Input schema / properties / category / maxLengthAdded value: +200 - changed
Input schema / properties / comment / descriptionPrevious value: -"New free-text comment."New value: +"New free-text comment, max 200 characters." - added
Input schema / properties / comment / maxLengthAdded value: +200 - changed
Input schema / properties / deployedAt / descriptionPrevious 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." - changed
Input schema / properties / expireAt / descriptionPrevious 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." - changed
Input schema / properties / expireAt / minimumPrevious value: --9007199254740991New value: +0 - changed
Input schema / properties / id / descriptionPrevious 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." - added
Input schema / properties / id / minLengthAdded value: +1 - added
Input schema / properties / moveToTemplateIdAdded 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" +} - changed
Input schema / properties / name / descriptionPrevious value: -"New display name."New value: +"New display name, max 200 characters." - added
Input schema / properties / name / maxLengthAdded value: +200 - changed
Input schema / properties / tags / descriptionPrevious 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)." - changed
Input schema / properties / templateId / descriptionPrevious 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." - changed
Output 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" +}
- Changed
upload_template24 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Input schema / properties / category / descriptionPrevious 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\")." - added
Input schema / properties / category / maxLengthAdded value: +200 - changed
Input schema / properties / comment / descriptionPrevious 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." - added
Input schema / properties / comment / maxLengthAdded value: +200 - changed
Input schema / properties / deployedAt / descriptionPrevious 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." - changed
Input schema / properties / expireAt / descriptionPrevious 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." - changed
Input schema / properties / expireAt / minimumPrevious value: --9007199254740991New value: +0 - changed
Input schema / properties / name / descriptionPrevious 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." - added
Input schema / properties / name / maxLengthAdded value: +200 - changed
Input schema / properties / sample / descriptionPrevious 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\" } }]." - added
Input schema / properties / sample / items / additionalPropertiesAdded value: +false - removed
Input schema / properties / sample / items / requiredRemoved value: -[ - "data", - "complement", - "translations", - "enum" -] - added
Input schema / properties / sample / maxItemsAdded value: +1 - changed
Input schema / properties / tags / descriptionPrevious 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)." - changed
Input schema / properties / template / descriptionPrevious 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." - changed
Input schema / properties / versioning / descriptionPrevious 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." - changed
Input schema / requiredPrevious value: -[ - "template", - "name" -]New value: +[ + "template" +] - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / properties / createdAtAdded value: +{ + "description": "UTC Unix timestamp (seconds) of the upload.", + "type": "number" +} - added
Output schema / properties / deployedAtAdded value: +{ + "description": "UTC Unix timestamp of deployment; 0 means this version is not explicitly deployed.", + "type": "number" +} - changed
Output schema / properties / name / descriptionPrevious value: -"Template display name."New value: +"Template display name, when one was given." - added
Output schema / properties / templateExtensionAdded value: +{ + "description": "Detected file extension, e.g. \"docx\" (legacy/non-versioned mode).", + "type": "string" +} - removed
Output schema / requiredRemoved value: -[ - "name" -]
6 tool updates
- Changed
convert_document8 fields changed- changed
Input schema / properties / convertTo / anyOfPrevious 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" + } +] - changed
Input schema / properties / convertTo / descriptionPrevious 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\" } }." - changed
Input schema / properties / converter / descriptionPrevious 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." - changed
Input schema / properties / converter / enumPrevious value: -[ - "L", - "C", - "O" -]New value: +[ + "L", + "C", + "O", + "I" +] - changed
Input schema / properties / file / descriptionPrevious 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" - added
Input schema / properties / hardRefreshAdded 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" +} - changed
Input schema / properties / outputPath / descriptionPrevious 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." - added
Input schema / properties / reportNameAdded 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" +}
- Changed
download_template2 fields changed- changed
Input schema / properties / outputPath / descriptionPrevious 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." - added
Input schema / properties / sampleAdded 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" +}
- Changed
list_templates2 fields changed- changed
Input schema / properties / limit / descriptionPrevious 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." - changed
Input schema / properties / origin / descriptionPrevious 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."
- Changed
render_document15 fields changed- changed
Input schema / properties / batchOutput / descriptionPrevious 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." - added
Input schema / properties / batchOutput / enumAdded value: +[ + "zip", + "pdf" +] - changed
Input schema / properties / batchReportName / descriptionPrevious 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." - changed
Input schema / properties / batchSplitBy / descriptionPrevious 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." - changed
Input schema / properties / complement / descriptionPrevious 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)." - changed
Input schema / properties / convertTo / anyOfPrevious 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" + } +] - changed
Input schema / properties / converter / descriptionPrevious 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." - changed
Input schema / properties / converter / enumPrevious value: -[ - "L", - "C", - "O" -]New value: +[ + "L", + "C", + "O", + "I" +] - changed
Input schema / properties / currencyRates / descriptionPrevious 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)." - changed
Input schema / properties / data / descriptionPrevious 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." - changed
Input schema / properties / enum / descriptionPrevious 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-" - added
Input schema / properties / keepTagsAdded 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" +} - changed
Input schema / properties / outputPath / descriptionPrevious 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)." - changed
Input schema / properties / template / descriptionPrevious 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." - changed
Input schema / properties / translations / descriptionPrevious 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"
- Changed
update_template_metadata1 field changed- added
Input schema / properties / idAdded 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" +}
- Changed
upload_template1 field changed- changed
Input schema / properties / template / descriptionPrevious 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"
2 tool updates
- Changed
convert_document1 field changed- added
Input schema / properties / egressAuthorizationAdded 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" +}
- Changed
render_document3 fields changed- changed
Input schema / properties / data / descriptionPrevious 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." - added
Input schema / properties / egressAuthorizationAdded 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" +} - removed
Input schema / requiredRemoved value: -[ - "data" -]
1 tool update
- Changed
render_document25 fields changed- removed
Input schema / properties / complement / additionalPropertiesRemoved value: -{} - added
Input schema / properties / complement / anyOfAdded value: +[ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "string" + } +] - changed
Input schema / properties / complement / descriptionPrevious 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." - removed
Input schema / properties / complement / propertyNamesRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / complement / typeRemoved value: -"object" - removed
Input schema / properties / currencyRates / additionalPropertiesRemoved value: -{ - "type": "number" -} - added
Input schema / properties / currencyRates / anyOfAdded value: +[ + { + "additionalProperties": { + "type": "number" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "string" + } +] - changed
Input schema / properties / currencyRates / descriptionPrevious 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." - removed
Input schema / properties / currencyRates / propertyNamesRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / currencyRates / typeRemoved value: -"object" - removed
Input schema / properties / data / additionalPropertiesRemoved value: -{} - added
Input schema / properties / data / anyOfAdded value: +[ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "items": {}, + "type": "array" + }, + { + "type": "string" + } +] - changed
Input schema / properties / data / descriptionPrevious 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." - removed
Input schema / properties / data / propertyNamesRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / data / typeRemoved value: -"object" - removed
Input schema / properties / enum / additionalPropertiesRemoved value: -{} - added
Input schema / properties / enum / anyOfAdded value: +[ + { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "string" + } +] - changed
Input schema / properties / enum / descriptionPrevious 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-" - removed
Input schema / properties / enum / propertyNamesRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / enum / typeRemoved value: -"object" - removed
Input schema / properties / translations / additionalPropertiesRemoved value: -{ - "additionalProperties": { - "type": "string" - }, - "propertyNames": { - "type": "string" - }, - "type": "object" -} - added
Input schema / properties / translations / anyOfAdded value: +[ + { + "additionalProperties": { + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + { + "type": "string" + } +] - changed
Input schema / properties / translations / descriptionPrevious 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" - removed
Input schema / properties / translations / propertyNamesRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / translations / typeRemoved value: -"object"
2 tool updates
- Changed
convert_document1 field changed- changed
Input schema / properties / file / descriptionPrevious 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"
- Changed
upload_template1 field changed- changed
Input schema / properties / template / descriptionPrevious 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"
2 tool updates
- Changed
convert_document2 fields changed- changed
Input schema / properties / asAttachment / descriptionPrevious 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." - added
Input schema / properties / returnLinkAdded 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" +}
- Changed
render_document2 fields changed- changed
Input schema / properties / asAttachment / descriptionPrevious 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." - added
Input schema / properties / returnLinkAdded 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" +}
8 tool updates
- Changed
convert_document3 fields changed- added
Input schema / properties / asAttachmentAdded 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" +} - changed
Input schema / properties / convertTo / anyOfPrevious 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" + } +] - added
Input schema / properties / outputPathAdded 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" +}
- Changed
download_template2 fields changed- added
Input schema / properties / asAttachmentAdded 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" +} - added
Input schema / properties / outputPathAdded 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" +}
- Changed
get_api_status1 field changed- changed
Output 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" +}
- Changed
list_categories1 field changed- changed
Output 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" +}
- Changed
list_tags1 field changed- changed
Output 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" +}
- Changed
list_templates5 fields changed- changed
Input schema / properties / limit / descriptionPrevious 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." - removed
Input schema / properties / limit / exclusiveMinimumRemoved value: -0 - changed
Input schema / properties / limit / maximumPrevious value: -9007199254740991New value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Output 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" +}
- Changed
render_document4 fields changed- added
Input schema / properties / asAttachmentAdded 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" +} - changed
Input schema / properties / convertTo / anyOfPrevious 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" + } +] - added
Input schema / properties / outputPathAdded 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" +} - changed
Input schema / properties / reportName / descriptionPrevious 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)}\"."
- Changed
upload_template1 field changed- changed
Output 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" +}
1 tool update
- Changed
render_document2 fields changed- added
Input schema / properties / webhookHeadersAdded 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" +} - added
Input schema / properties / webhookUrlAdded 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" +}
11 tool updates
- First observed
convert_document - First observed
delete_template - First observed
download_template - First observed
get_api_status - First observed
get_capabilities - First observed
list_categories - First observed
list_tags - First observed
list_templates - First observed
render_document - First observed
update_template_metadata - First observed
upload_template
Related MCP Connectors
Fill PDF and Word templates, generate PDFs and Word documents, and collect e-signatures.
Cloud PDF generation from HTML, CSS and XSL-FO, with PDF/A and PDF/UA support.
Composable APIs for document extraction, image transformation, and document & sheet generation.
Convert, create and edit Word, PowerPoint, Excel and PDF documents from any AI agent.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceEnables creating professional documents (invoices, contracts, certificates, proposals, reports) via the DocuQueue API, with tools for template management, filling, previewing, and PDF generation.27 npm1MIT
@sheetrender/mcpofficial
AlicenseAqualityBmaintenanceRenders PDFs from HTML templates or saved templates and spreadsheet data, with batch job support and document retrieval.11154 npm1MIT- FlicenseNot gradedqualityCmaintenanceEnables conversion between PDF/Office documents and structured JSON, supporting extraction and generation of document content.-
- AlicenseNot gradedqualityCmaintenanceEnables creating, editing, reading, and converting Word, Excel, PowerPoint, PDF, and plain-text documents, including live editing of open Office documents, template-based document generation, and high-fidelity PDF/PNG rendering.3MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.