Carbone MCP
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_PATH | No | HTTP endpoint path (only used when MCP_TRANSPORT=http) | / |
| MCP_PORT | No | HTTP server port (only used when MCP_TRANSPORT=http) | 3000 |
| MCP_TRANSPORT | No | Transport mode: stdio (default, for AI clients) or http (for self-hosted deployments) | stdio |
| CARBONE_API_KEY | No | Your Carbone API key. Not required when CARBONE_BASE_URL points to your own on-premise server, or when running in HTTP mode. | |
| CARBONE_TIMEOUT | No | Request timeout in milliseconds (max: 60000) | 60000 |
| CARBONE_BASE_URL | No | Override for self-hosted or staging environments. When set to a custom URL, CARBONE_API_KEY is not required. | https://api.carbone.io |
| MCP_MAX_BODY_BYTES | No | Maximum request body size in bytes (10 MB default) | 10485760 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| resources | {
"listChanged": false
} |
| completions | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_templatesA | List stored Carbone templates with filtering, search, and pagination. Filter by Template ID, Version ID, category, or upload origin. Use includeVersions to see the full version history of each template. Supports cursor-based pagination for large collections. Each result carries its |
| convert_documentA | Convert a document to another format without storing a template. Pure conversion: no data is sent, so Carbone tags such as {d.name} are kept as written; this is also how you proof a template in another format (DOCX template → PDF, or DOCX → ODT while it stays a template). The source file can be a local file path, an HTTPS URL, or a base64-encoded string. Use render_document instead when you need data injection ({d.field} tags resolved), translations, or batch generation. Example: { "file": "/Users/me/report.docx", "convertTo": "pdf" } (a bare file name such as "report.docx" is not a path). Common conversions: DOCX → PDF (add converter: "I" for the fastest conversion), XLSX → PDF, PPTX → PDF, HTML → PDF (converter: "C" for full CSS/JS rendering), DOCX → HTML, XLSX → CSV, PDF → PNG, PPTX → PNG (first slide as image), MD → PDF. |
| render_documentA | Generate a document by merging a Carbone template with JSON data. Two modes: (1) pass templateId to use a previously uploaded template; (2) pass template (a local file path, an HTTPS URL, or a base64-encoded string) to upload and render in a single request without storing a template. Supports output format conversion, multilingual rendering, currency conversion, batch generation, and advanced PDF options (watermark, password, PDF/A). Without data, every tag resolves to empty; to keep the tags as written, pass keepTags: true (e.g. to proof a stored template), or use convert_document for a file. Async mode: pass webhookUrl. This tool then returns only Carbone's acceptance message, never the document: Carbone POSTs { "success": true, "data": { "renderId": "..." } } to the webhook, whose server downloads the document itself from GET /render/{renderId} (one-time, no auth). You cannot fetch it from here. Batch generation (batchSplitBy) is always delivered this way. |
| inspect_templateA | List the Carbone tags a template uses and return a sample JSON dataset matching its structure. Call it before render_document when you do not know which data a template expects. Pass exactly one of templateId (a stored template: Template ID or Version ID) or template: a local file path, an HTTPS URL, or a base64-encoded string. It runs one render on the Carbone account and discards the document. {t()} translation tags are not listed. |
| list_categoriesA | List all template categories currently in use in your Carbone account. Categories act like folders for organising templates (e.g. "invoices", "legal", "hr"). Use the returned names as the category filter in list_templates or upload_template. |
| list_tagsA | List all tags currently used across templates in your Carbone account. Tags are free-form labels attached to templates (e.g. "sales", "billing", "v2"). To find the templates with a tag, call list_templates and keep the results whose |
| upload_templateA | Upload and store a reusable Carbone template. Once uploaded, use render_document with the returned Template ID to generate documents from it. Supports versioning: multiple versions can live under a single stable Template ID, and rendering by Template ID uses the version with the most recent deployedAt. A result deployedAt of 0 means the version is not explicitly deployed: if another version of the same Template ID is deployed, renders by Template ID keep using that one. Accepted formats: DOCX, XLSX, PPTX, ODT, ODS, ODP, ODG, HTML, XHTML, XML, SVG, IDML, Markdown, TXT, CSV, RTF and PDF (not the legacy binary DOC, XLS or PPT). |
| update_template_metadataA | Update the metadata of ONE stored template version: name, comment, category, tags, deployment (deployedAt), scheduled deletion (expireAt), or the Template ID it belongs to (moveToTemplateId). With a Template ID, Carbone patches its currently deployed version only; with a Version ID, that exact version. Use deployedAt to choose the version used when rendering by Template ID. Returns the patched versionId and the updated fields, as echoed back by Carbone. To delete a template now, use delete_template. |
| delete_templateA | Delete a stored Carbone template. Takes effect immediately: the template is no longer listed, downloadable or renderable (404); the file itself is purged after the retention delay (Carbone Cloud: 24 hours). You can delete by Template ID (removes all versions) or by Version ID (removes only that specific version). To schedule a deletion instead, use update_template_metadata with expireAt set to a future Unix timestamp. |
| download_templateA | Download the original source file of a stored Carbone template (e.g. the DOCX, XLSX, PPTX, or HTML file that was uploaded). Use this to inspect, edit, or back up a template. Pass a Template ID to download the currently deployed version, or a Version ID to download a specific version. Set sample: true to get the JSON sample dataset stored with the template instead of the template file. |
| get_api_statusA | Check Carbone API health and version. Returns the current API version and a status message. Useful for verifying connectivity and confirming which Carbone version is active. |
| get_capabilitiesA | Returns a summary of all Carbone capabilities: supported formats, features, tool usage examples, and links to full documentation. Call this first if you are unsure what Carbone can do. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| carbone-templates | Browse stored Carbone templates (up to 100, most recent first). For filtering by category/search/version/origin, includeVersions, or pagination, use the list_templates tool — MCP resources cannot receive query-string parameters. |
| carbone-categories | List all template categories currently in use in your Carbone account. Categories act like folders for organising templates (e.g. "invoices", "legal", "hr"). Use the returned names as the category filter in carbone://templates or the list_templates / upload_template tools. |
| carbone-tags | List all tags currently used across templates in your Carbone account. Tags are free-form labels attached to templates (e.g. "sales", "billing", "v2"). To find the templates with a tag, call list_templates and keep the results whose `tags` include it. |
| carbone-status | Check the Carbone API health status and current version. |
TDQS
Scored across 12 tools
Each tool targets a distinct action on a distinct resource (upload, list, download, update, delete, render, convert, inspect), and the descriptions explicitly cross-reference each other to steer selection. The only mild overlap is render_document vs convert_document (both can output a converted/proofed file, and render with keepTags:true approaches conversion), but the descriptions call this distinction out clearly.
All twelve tools use a uniform snake_case verb_noun pattern (upload_template, list_tags, update_template_metadata, delete_template, get_api_status, etc.). No mixed casing or inconsistent verb styles; list/get/update/delete/upload/convert/render forms are predictable.
Twelve tools is well within the ideal 3-15 range and each one covers a distinct capability (lifecycle CRUD, rendering, conversion, inspection, discovery helpers). No obvious filler or redundant tool.
Template lifecycle is fully covered: upload (create), list/download (read), update_template_metadata (update), delete, plus render, convert, inspect, and discovery helpers for tags/categories/capabilities/status. Minor gaps exist around async render jobs—there is no tool to poll render status or fetch a renderId result, since async output only goes to a webhook—and tags/categories can only be listed, not managed directly.