For AI agents & AI coders
Building with an AI coder (Claude Code, Cursor) or an agent? You do not need to read this page. Copy the block below and paste it to your AI - it points at the open repos and the live endpoints, and your AI can take it from there.
I want to turn AI-generated markdown / analysis into a professionally formatted PDF
(and HTML) report. Tigzig runs this free and open-source. Open repos:
BACKENDS (services):
- Markdown-to-PDF converter (FastAPI + ReportLab; reusable PDF components, side-by-side
tables, embedded charts, custom styling): https://github.com/amararun/shared-reportlab-md-to-pdf
- Technical Analysis backend (indicators + charts + AI commentary -> report):
https://github.com/amararun/shared-fastapi-mcp-technical-analysis
FRONTENDS (live tools):
- Quants Agent (React; an AI agent builds a technical-analysis report end to end):
https://github.com/amararun/shared-portfolio-analysis-react
- Portfolio Analysis Suite (Google-AI-Studio UI): https://github.com/amararun/shared-portfolio-analysis-googleui
LIVE, no-auth endpoints:
- Markdown -> PDF (base https://mdtopdf.tigzig.com):
POST /api/convert/text {content, filename} -> PDF (standard)
POST /text-input {text, image_path} -> {pdf_url, html_url} (report style: side-by-side + charts)
POST /api/upload-image multipart file -> {image_path}
MCP: https://mcp-md-to-pdf.tigzig.com/mcp (tool convert_markdown_to_pdf)
- Technical Analysis report: https://ta.tigzig.com (docs /docs) · MCP https://ta.tigzig.com/mcp (tool create_technical_analysis)
- Quants backends (MCP): quantstats-h.tigzig.com/mcp, qrep-api.tigzig.com/v1/mcp/http, ffn.tigzig.com/mcp, yfin-h.tigzig.com/mcp
Read the repos, then help me: produce clean structured markdown from my data and POST it
to the right endpoint to get a formatted report.
What you get
One markdown-to-PDF engine, exposed four ways - pick whichever fits how you work:
- Free web tool - paste markdown or drop a
.mdfile, download a PDF. mdtopdf.tigzig.com. No sign-up, no key. - Open HTTP API - POST markdown, get a PDF (or a hosted report). No auth. Call it from any app, script, or no-code tool.
- MCP server - mount it in Claude, Cursor or n8n and let an agent produce PDFs as a tool call.
- Open source - the whole thing is on GitHub (FastAPI + ReportLab). Run it as your own service, or reuse the components to build your own report format.
Under the hood it is ReportLab - the same engine that renders every report across Tigzig. That is the difference from a quick markdown-to-HTML-to-PDF route: precise, professional, paginated layout you control.
Two report styles
The converter gives you two output styles. Choose by what you are making:
- Standard (
/api/convert,/api/convert/text) - a clean document layout for any markdown. Headings, lists, tables, code, blockquotes. Returns the PDF file directly. Best for docs, notes, generic reports. - Report style (
/text-input) - a richer report template with side-by-side tables and embedded charts, plus custom styling. Saves both a PDF and an HTML version and returns their URLs (the report is hosted for you). Best for analytical reports - this is what the Technical Analysis app uses.
Both accept the same markdown; the report style just adds the layout and hosting.
APIs & MCP
All no-auth. The showcase Technical Analysis backend, the Quants Agent backends, and this converter - each exposed as an HTTP API and an MCP server.
Technical Analysis report
The showcase - generate a full technical-analysis report (indicators, charts, AI commentary) for any ticker. API + MCP; full endpoint reference in the API catalog. A dedicated docs page is coming.
API ta.tigzig.comGenerate a technical-analysis report for a Yahoo Finance ticker. Swagger at /docs, spec at /openapi.json.
ticker + date range (see /docs)HTML report URLMCP ta.tigzig.com/mcpSame, as an MCP tool for Claude / Cursor / n8n.
tool: create_technical_analysisHTML report URLQuants Agent backends
The backends behind the Quants Agent and Portfolio Analysis Suite. All no-auth, each an API + an MCP server.
MCP quantstats-h.tigzig.com/mcpQuantStats portfolio analysis - tearsheet-style performance report vs a benchmark.
tool: create_portfolio_analysisHTML + CSV report URLsMCP qrep-api.tigzig.com/v1/mcp/httpQRep - compare up to 6 securities with 80+ QuantStats metrics.
tool: mcp_compare_securitiesHTML / PDF report URLsMCP ffn.tigzig.com/mcpSecurity Performance Review - multi-security performance & risk report.
tool: analyze_portfolioHTML report + CSV URLsMCP yfin-h.tigzig.com/mcpYahoo Finance extractor - prices, profile, financials (~15 endpoints).
MCP tools + REST (/docs)JSON / Excel dataMarkdown to PDF
The converter this page is about. Base https://mdtopdf.tigzig.com. Standard returns the PDF directly; Report returns hosted PDF + HTML URLs.
POST /api/convert/textMarkdown text -> PDF (clean standard layout). Returns the PDF file directly.
{ "content": "# Title\n\nYour **markdown**...", "filename": "output.pdf" }PDF file (binary download)POST /api/convertMarkdown FILE (multipart) -> PDF (clean standard layout). Returns the PDF file directly.
multipart/form-data: file=<your.md>PDF file (binary download)POST /text-inputAI-generated markdown -> report-styled PDF + HTML, with side-by-side tables and embedded charts. Returns URLs (the report is hosted for you).
{ "text": "# Report\n\n\n\n## Analysis...", "image_path": "daily.png" }{ "pdf_url": "...", "html_url": "..." }POST /api/upload-imageUpload a chart/image first; reference it in your markdown, then POST to /text-input.
multipart/form-data: file=<chart.png>{ "image_id": "...", "image_path": "chart.png" }MCP mcp-md-to-pdf.tigzig.com/mcpThe same converter as an MCP tool, for Claude / Cursor / n8n. Give it markdown, get back a PDF URL.
tool: convert_markdown_to_pdfPDF URLReusable building blocks
The converter is built from ReportLab flowables that almost nobody packages up as a ready-to-use service. Markdown maps straight onto them:
- Headings (H1-H6), paragraphs, bold / italic, horizontal rules, blockquotes.
- Lists - bulleted and numbered, nested.
- Tables - standard layout, and side-by-side table blocks (two columns of data or two charts next to each other).
- Images / charts - upload a PNG, reference it in the markdown, and it is embedded and sized for the page.
- HTML-in-markdown - embedded HTML tables and tags are allowed through an allowlist sanitizer, so it is safe to feed raw AI output.
Want a different look? Fork the repo and define your own styles, page template, or a new endpoint for a fixed report format. The components do the heavy lifting.
Send AI output, get a formatted report
The pattern this page exists for: take data, have an AI turn it into structured markdown, then POST that to the converter and get a report back. The trick is getting the AI to return clean markdown (not prose with a markdown sample buried in it).
1. Ask the AI for markdown only. Tell it: "Return only GitHub-flavored markdown. Use ## headings for sections, - for bullets, | a | b | tables for any data, and  for charts. No preamble, no explanation." A tight format instruction is what makes this reliable.
2. (Optional) upload charts. If your report has images, POST each to /api/upload-image first and use the returned image_path in the markdown.
3. POST the markdown. Standard PDF: /api/convert/text. Report style with charts and side-by-side tables: /text-input.
import requests
# Standard: markdown text -> PDF (returns the file)
r = requests.post("https://mdtopdf.tigzig.com/api/convert/text",
json={"content": ai_markdown, "filename": "report.pdf"})
open("report.pdf", "wb").write(r.content)
# Report style: markdown + chart -> hosted PDF + HTML (returns URLs)
img = requests.post("https://mdtopdf.tigzig.com/api/upload-image",
files={"file": open("daily.png", "rb")}).json()["image_path"]
out = requests.post("https://mdtopdf.tigzig.com/text-input",
json={"text": ai_markdown, "image_path": img}).json()
print(out["pdf_url"], out["html_url"])
For a full worked example - compute indicators, render charts, get AI commentary, upload, convert - read the Technical Analysis repo. It does exactly this against this converter.
FAQ
Getting started
Is it really free? Do I need to sign up or get a key?
What can it convert?
Web tool vs API vs MCP - which should I use?
Are there rate limits?
Two styles
What is the difference between the standard and report styles?
When should I use /text-input vs /api/convert/text?
Can I get HTML as well as PDF?
AI output to PDF
How do I send AI-generated markdown to the converter?
How do I get an AI to return the right markdown format?
How do I make sure the AI returns a clean, structured response I can convert (not prose)?
Can the AI output include data tables?
My report is long and multi-section - is that OK?
Is it safe to feed raw AI/LLM output straight in?
Charts & images
How do I embed a chart or image?
Can I put two charts side by side?
What image formats are supported?
Run it yourself / reuse
Can I run it as my own service?
Is there an MCP server I can mount?
Can I call it from Excel?
Can I build my own fixed report format?
End-to-end
Can you show a real end-to-end example?
What is the general data to AI to report pattern?
Pre-formatted report vs generic - what is the difference?
Tech
What libraries does it use?
Why ReportLab instead of the quick markdown route?
Repos & code
Everything here is open source - two backend services and two live-tool front ends. Run them yourself, or reuse the components to build your own.
Backends (services)
Front ends (live tools)
These open-source repos ship with basic security checks built in. They are point-in-time snapshots, so for the most current security guidelines and hardening practices, see the continuously-updated checklist at tigzig.com/security.