https://mdtopdf.tigzig.com/mcpWhat it is
One engine that turns Markdown into a professionally formatted PDF - the same ReportLab engine that renders reports across TigZig. Two public endpoints, both no-auth:
- POST /v1/convert/text - send Markdown text as JSON, get the PDF back directly. The canonical endpoint (and what the MCP tool wraps).
- POST /v1/convert - upload a
.mdfile (multipart), get the PDF back directly.
Clean document layout: headings, lists, tables, code, blockquotes, horizontal rules. Precise, paginated output - not a quick markdown-to-HTML-to-PDF route. There is also a free web tool if you just want to paste and download.
MCP server (for AI agents)
Mount it in an AI agent and let it produce PDFs as a tool call. No auth. One endpoint:
https://mdtopdf.tigzig.com/mcp- Streamable HTTP, the recommended transport (MCP spec 2025-03-26). Tool:convert_markdown_to_pdf.
Add to Claude.ai: Settings -> Connectors -> Add custom connector -> paste the Streamable HTTP URL. Same URL works for Cursor, n8n, any MCP client. The agent writes a report in Markdown, calls the tool, gets back a PDF URL.
Styled reports with charts (open source)
The same ReportLab engine also produces richer analytical reports - side-by-side tables, embedded charts, custom styling, saved as a hosted PDF + HTML. That is what powers the TigZig Technical Analysis app.
That report pipeline is not offered as a public endpoint here - it is a backend for our own apps and needs a specific multi-step calling convention. But it is fully open source: if you want to build formatted, charted reports for yourself, clone the repo and take the code. The ReportLab building blocks (paragraphs, tables, side-by-side frames, image embedding, an allowlist HTML sanitizer) are all there to assemble into your own report format.
Repo: shared-reportlab-md-to-pdf. For a full worked example - compute indicators, render charts, get AI commentary, build a report - see the Technical Analysis repo.
Build your own (open source)
The source is open - the repo runs the whole converter - run it as your own service, or reuse the components for your own report format.
github.com/amararun/shared-reportlab-md-to-pdf
Built on FastAPI, ReportLab.
CORS is configured for xlwings (addin.xlwings.org), so you can POST Markdown to it straight from Python-in-Excel and get a PDF back.
Guides
This page is the reference - what the endpoints are and how to call them. The guides below are the long-form versions, with worked examples and the edges you only meet in real use:
- Demystifying the API errors - what each error actually means and what to do about it, instead of guessing from a status code. Covers every TigZig API, not just this one.
- Your agents and scripts have been talking to me - what real callers actually do, read out of the server logs: the common mistakes, what works, and the patterns worth copying.
Each is a plain page with a Markdown twin, so you can hand a URL straight to an agent. Come back to this page when you want parameter-level detail.
Rate limits
Published so a well-behaved client can plan around them. These are per-IP limits:
- Per IP: 30 requests / minute.
You get a 429 with Retry-After (seconds) and a body naming the budget you crossed.
Avoiding 429s: Rendering is per-document, so there is no batching trick here - just space out requests and honor Retry-After.
Every successful response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (Unix epoch seconds), read straight from the running limiter, and Retry-After is set on 429. The current numbers are also published as machine-readable JSON at https://mdtopdf.tigzig.com/v1/, derived from live config. Read those at runtime rather than hard-coding the figures above - limits change, and these channels change with them.
API Endpoints (REST / HTTP)
https://mdtopdf.tigzig.comPrepend this to every path listed below (e.g. /series becomes https://mdtopdf.tigzig.com/series). The curl example on each card shows the full URL.The public endpoints of this API. Interactive Swagger and the OpenAPI spec are disabled on this backend (a hardening choice), so this table is the contract.
/v1/convert
Convert Markdown
Convert uploaded markdown file to PDF.
curl -X POST "https://mdtopdf.tigzig.com/v1/convert" -F "file=@<path-to-file>"/v1/convert/text
Convert Markdown Text Endpoint
Convert markdown text directly to PDF.
curl -X POST "https://mdtopdf.tigzig.com/v1/convert/text" -H 'Content-Type: application/json' -d '{"content":"# Title\n\nHello world","filename":"out.pdf"}'