Turn HTML or Markdown into a clean, styled PDF and get a download link.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
HTML & Markdown β PDF, as a REST API and an MCP server.
No template editor. No template IDs. No dashboard. No signup to try.
Agents write Markdown. People need documents. MintPDF is the missing step: send HTML or Markdown, get a clean PDF back, from your code or straight from an AI agent via MCP.
generate_pdf and pdf_from_url over streamable HTTP. Claude can render a
document mid-conversation.No signup, no key:
Want more than 10 renders a day? A free key (email only, no card) raises it to 100 a month:
Then send Authorization: Bearer pm_β¦ with your requests.
Prefer the hosted endpoint directly? Use mcp-remote instead:
Restart your client, then just ask:
"Summarise this thread as a one-page brief with page numbers and give me a PDF."
| Tool | Input | Returns |
|---|---|---|
generate_pdf | html or markdown, plus options | download URL, valid 1 hour |
pdf_from_url | url (public http/https), plus options | download URL, valid 1 hour |
POST /v1/pdfBody takes exactly one source, plus options:
| Field | Type | Notes |
|---|---|---|
html | string | Full document or fragment |
markdown | string | Rendered with the default stylesheet |
url | string | Public page to render. Private/internal addresses are blocked |
format | string | A4 (default), Letter, Legal, A3, A5 |
landscape | boolean | default false |
margin | string | all sides, e.g. "18mm" |
headerText / footerText | string | small text on every page |
pageNumbers | boolean | adds 3 / 7 to the footer |
output | "pdf" | "url" | default returns PDF bytes; "url" returns JSON with a link |
POST /v1/keys{"email":"you@example.com"} β a free key. No card, no verification loop.
POST /mcpMCP streamable-HTTP endpoint, stateless. Same capabilities as the REST API.
| Tier | Limit | Price |
|---|---|---|
| Anonymous | 10 renders/day per IP | free, no signup |
| Free key | 100 renders/month | free, email only |
| Solo | 3,000 renders/month | $19/month |
| Team | 12,000 renders/month | $49/month |
| Scale | 50,000 renders/month | $129/month |
MintPDF is MIT-licensed; run your own if you'd rather.
Or pull the published image, which has Chromium and the fonts baked in:
Then it is the same API on your own machine, with no limits and nothing leaving it:
Images are built and published by CI on every change, and each is smoke-tested by starting the
container and rendering a real PDF from it before being tagged. Tags are latest and the short
commit SHA. Building it yourself works too:
Environment: BASE_URL (used in download links), DATA_DIR (defaults to /tmp/mintpdf; mount a
volume to persist keys), ANON_DAILY_LIMIT, FREE_MONTHLY_LIMIT, SOLO_MONTHLY_LIMIT,
TEAM_MONTHLY_LIMIT, SCALE_MONTHLY_LIMIT, OVERAGE_FACTOR.
If you want a fuller self-hosted PDF toolchain (Office formats, merging, splitting), Gotenberg is excellent and does more than this does.
TypeScript, Fastify, Puppeteer driving one shared Chromium (page per request), node:sqlite for keys
and quotas so there are no native dependencies. Requests to private and internal addresses are blocked
both at URL validation and at Chromium's request layer, so embedded resources can't reach them either.
MIT β see LICENSE.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/mintpdf)<a href="https://allmcps.com/mcp/mintpdf"><img src="https://allmcps.com/api/badge/mintpdf?style=directory" alt="MintPDF on AllMCPs" /></a>