Hosted Gotenberg: HTML, Markdown, web pages and Office files to PDF with Chromium and LibreOffice.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Your API key; signing in with OAuth works instead
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Convert an HTML document up to 4 MB to a PDF with Chromium (Gotenberg). Pass the HTML as base64 in `content_base64`, or as a download link in `file`. JavaScript runs, and images, fonts and CSS the HTML links by public https URL are loaded. Returns `{"download_url": "<link>", "size_bytes": <PDF size>, "expires_in_minutes": 60}`: give the user the `download_url`. Requires an API key. Credits: 1 per call.
The file as a download link, instead of `content_base64`. In ChatGPT, pass the user's uploaded file here. Other clients can set `download_url` to a public https URL.
The file, base64-encoded. Up to 4 MB before encoding.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http gotenberg https://api.pagespool.com/mcp/gotenberg/
Headers
X-API-Key (optional, not in the config above): Your API key; signing in with OAuth works insteadConvert an HTML document up to 4 MB to a PDF with Chromium (Gotenberg). Pass the HTML as base64 in `content_base64`, or as a download link in `file`. JavaScript runs, and images, fonts and CSS the HTML links by public https URL are loaded. Returns `{"download_url": "<link>", "size_bytes": <PDF size>, "expires_in_minutes": 60}`: give the user the `download_url`. Requires an API key. Credits: 1 per call.
| Argument | Type | Description |
|---|---|---|
| file | object | The file as a download link, instead of `content_base64`. In ChatGPT, pass the user's uploaded file here. Other clients can set `download_url` to a public https URL. |
| content_base64 | any | The file, base64-encoded. Up to 4 MB before encoding. |
{
"type": "object",
"properties": {
"file": {
"type": "object",
"default": null,
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"description": "An identifier for the file. ChatGPT sets it; other clients may pass any label, such as the file name."
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"description": "A public https URL of the file."
}
},
"description": "The file as a download link, instead of `content_base64`. In ChatGPT, pass the user's uploaded file here. Other clients can set `download_url` to a public https URL."
},
"content_base64": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The file, base64-encoded. Up to 4 MB before encoding."
}
},
"additionalProperties": false
}Convert an office document up to 4 MB to a PDF with LibreOffice (Gotenberg). Word, Excel, PowerPoint, OpenDocument and the other formats LibreOffice opens. Pass the file as base64 in `content_base64`, or as a download link in `file`, and its name in `filename`: the extension tells LibreOffice the format. Returns `{"download_url": "<link>", "size_bytes": <PDF size>, "expires_in_minutes": 60}`: give the user the `download_url`. Requires an API key. Credits: 1 per call.
| Argument | Type | Description |
|---|---|---|
| file | object | The file as a download link, instead of `content_base64`. In ChatGPT, pass the user's uploaded file here. Other clients can set `download_url` to a public https URL. |
| filename* | string | The file name with its extension (.docx, .doc, .odt, .xlsx, .pptx, .rtf, …). LibreOffice reads the file by its extension. |
| content_base64 | any | The file, base64-encoded. Up to 4 MB before encoding. |
{
"type": "object",
"required": [
"filename"
],
"properties": {
"file": {
"type": "object",
"default": null,
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"description": "An identifier for the file. ChatGPT sets it; other clients may pass any label, such as the file name."
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"description": "A public https URL of the file."
}
},
"description": "The file as a download link, instead of `content_base64`. In ChatGPT, pass the user's uploaded file here. Other clients can set `download_url` to a public https URL."
},
"filename": {
"type": "string",
"description": "The file name with its extension (.docx, .doc, .odt, .xlsx, .pptx, .rtf, …). LibreOffice reads the file by its extension."
},
"content_base64": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The file, base64-encoded. Up to 4 MB before encoding."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 4, 2026.