Carbone MCP — Document Generation, Conversion & Automation
Carbone is the universal document automation MCP. Connect any AI agent or workflow to generate invoices, contracts, reports, certificates, tickets, and any structured document from a template + JSON data — then deliver it as PDF, DOCX, XLSX, PPTX, or 100+ other formats.
What you can do
📄 Generate documents from templates
Design a template once in Word, Excel, LibreOffice, HTML, or Markdown using simple {d.field} tags. Pass JSON data — Carbone merges both and returns the final document in seconds.
Supported template formats: DOCX, XLSX, PPTX, ODT, ODS, ODP, HTML, Markdown, CSV, XML, IDML, PDF (form filling).
Common use cases: invoices, contracts, NDAs, insurance certificates, payslips, delivery notes, reports, e-tickets, custom certificates.
🔄 Convert documents between 100+ formats
Pass a file (local path, URL, or base64) and get back the converted output instantly.
| From | To | Common use case |
|---|---|---|
| DOCX, XLSX, PPTX, ODT | Archive or share Office documents as PDF | |
| HTML, Markdown | Render web pages or markdown reports as PDF | |
| HTML, Markdown | DOCX | Convert web content to an editable Word document |
| PPTX, DOCX, PDF | PNG / JPG / WEBP | Generate slide thumbnails or document previews |
| XLSX | CSV | Export spreadsheet data for processing |
| DOCX / TXT | Extract and reuse content from PDF files | |
| DOCX | HTML | Convert Word documents for web display |
| Markdown | DOCX / ODT | Turn markdown into a portable Office document |
📦 Batch generation
Generate hundreds of documents in a single request. Split by any array in your JSON, receive all files as a ZIP archive. Perfect for: mass invoicing, personalised letters, bulk certificates.
🌍 Multilingual & multi-currency output
Render the same template in any language and currency. Use {t(key)} translation tags, BCP-47 locale codes, and ISO 4217 currency conversion — all in one API call.
🔒 Advanced PDF options
Password protection, watermarks, PDF/A compliance (1b, 2, 3), page range export, table of contents refresh.
🗂️ Template management
Store, version, categorise, tag, and deploy templates with full version history. Reuse templates across any number of renders via a stable Template ID.
Tools
| Tool | What it does |
|---|---|
render_document | Generate a document from a template + JSON data |
convert_document | Convert any file between 100+ formats |
upload_template | Store a reusable template with versioning |
list_templates | Browse stored templates with filters and search |
list_categories | List all template categories |
list_tags | List all template tags |
update_template_metadata | Rename, retag, deploy, or expire a template |
delete_template | Soft-delete a template or specific version |
download_template | Download the original template source file |
get_capabilities | Full capabilities overview with format matrix |
Quickstart
Just describe what you want in natural language — the AI handles the rest.
Generate a document from a template:
"Generate an invoice using template ID 1382332517758803574 with:
customer: Acme Corp, total: 1500, items: [...]"
One-shot render from a URL (no stored template):
"Generate a PDF from https://example.com/invoice.docx with
customer: Acme Corp, total: 1500"
Batch generation:
"Create one invoice PDF per client in my billing data and bundle them in a ZIP.
Name each file invoice-{d.id}.pdf"
Currency conversion & locale:
"Generate the invoice in French with prices converted from EUR to USD.
Use en-us locale and exchange rate 1 EUR = 1.08 USD"
Convert a file:
"Convert https://example.com/report.html to PDF using Chromium"
Advanced PDF options:
"Convert contract.docx to PDF with a CONFIDENTIAL watermark at 20% opacity,
rotated -45°, and password-protected with open password: secret123"
Manage templates:
"Upload this invoice template and tag it 'sales' and 'billing', category 'Invoices'"
"What templates do I have in the contracts category?"
"Deploy version V789 as the active version"
Template syntax (quick reference)
{d.customer.name} → field access
{d.items[i].price} → loop start
{d.items[i+1].price} → loop end
{d.amount:formatC(EUR)} → currency formatter
{d.date:formatD(DD/MM/YYYY)} → date formatter
{d.status:ifEQ(paid):show(✓)} → conditional
{t(invoice_title)} → translation tag
{c.company} → shared/static data
Full syntax reference: https://carbone.io/documentation/design/overview/getting-started.html
Why Carbone
- No-code templates — design in Word or Excel, no programming required
- Any output format — PDF, Office, images, CSV, HTML, and more
- Production-grade — used in thousands of production applications worldwide
- Template versioning — deploy, rollback, and manage template lifecycles
- AI-native — purpose-built MCP server for seamless agent integration
Server Config
{
"mcpServers": {
"carbone": {
"type": "streamable-http",
"url": "https://mcp.carbone.io",
"headers": {
"Authorization": "Bearer your_api_key_here"
}
}
}
}