MCP Server

Pressa - LaTeX to PDF

io.github.pressa-dev/pressa
Media & Content Productivity Public & reachable MCP 2026-07-28

What this MCP does

Compiles LaTeX into PDFs and fills reusable templates for resumes, cover letters, invoices, reports, certificates, and related documents.

compile
Compile LaTeX to PDF
Compile LaTeX source into a PDF. Returns a PDF URL, page count and compile time. USE THIS WHEN: you have LaTeX source (or a \documentclass) and no local pdflatex / TeX Live installation to run it with. This is that missing compiler, available over HTTP. Also use it whenever the user asks for a document where typesetting matters - an invoice, contract, report, letter, CV, certificate, or academic paper - since you can write the LaTeX yourself and compile it here. DO NOT USE THIS TO: convert HTML to PDF, merge, split or compress existing PDF files, or extract text from a PDF. This compiles LaTeX source and nothing else. No API key is required. Anonymous callers get a small number of compilations per day and failed attempts do not count, so you can iterate on your LaTeX for free. Send an API key in the Authorization header to raise the limits. With a key, a document over the plan's page or size limit still returns a PDF: `preview: true`, the first pages the plan allows, `total_pages`, and `plan_required` naming the plan that covers the whole document. Show the user the preview and relay `warning`; never drop pages silently. IMPORTANT: This tool compiles LaTeX, NOT plain text. You must generate complete, valid LaTeX source yourself before calling it. Do not pass plain text, markdown or JSON directly - convert them to LaTeX first, and never ask the user to write LaTeX. A minimal valid document is: \documentclass{article}\begin{document}<content>\end{document}. Escape these in body text: % & $ # _ { } and backslash. If compilation fails the response includes a `diagnosis` naming the cause and a concrete suggested fix, often a missing \usepackage. Apply it and call again yourself rather than showing the user a TeX log.
Open world
Input schema
{'type': 'object', 'required': ['latex'], 'properties': {'latex': {'type': 'string', 'description': 'Complete LaTeX source, including \\documentclass and \\begin{document}...\\end{document}.'}, 'compiler': {'enum': ['pdflatex', 'xelatex', 'lualatex'], 'type': 'string', 'description': 'Defaults to pdflatex. Anonymous callers may only use pdflatex.'}}, 'additionalProperties': False}
get_public_template
Fetch one public template
Get a public template's fields (JSON schema), sample data, filling instructions and LaTeX source. Read the instructions before collecting data from the user. To make the PDF, pass the data to `render_public_template`; to change the layout itself, edit the source and use `compile`.
Read only Open world Idempotent
Input schema
{'type': 'object', 'required': ['template'], 'properties': {'template': {'type': 'string', 'description': 'Template slug from list_public_templates, e.g. classic-resume.'}}, 'additionalProperties': False}
list_public_templates
Browse Pressa's public document templates
List Pressa's public, professionally designed document templates (resumes, CVs, cover letters, invoices, reports, certificates), each with a one-line summary and a preview image URL. Use this when the user wants one of these documents and has no layout of their own, or asks to see designs to choose from. Works without an API key.
Read only Open world Idempotent
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
render_public_template
Fill a public template and get a PDF
Fill a public template with the user's data and return a PDF link. Data must match the template's schema (see get_public_template); a missing field comes back as a list of what to ask for, and costs nothing. All resume templates take the same data, so switching style is the same call with a different slug. Works without an API key within the daily free limit.
Open world
Input schema
{'type': 'object', 'required': ['template', 'data'], 'properties': {'data': {'type': 'object', 'description': "Values for the template's fields.", 'additionalProperties': True}, 'template': {'type': 'string', 'description': 'Template slug, e.g. modern-resume.'}}, 'additionalProperties': False}
Added
render_public_template
Sept. 26, 2026, 2:40 a.m.
Added
get_public_template
Sept. 26, 2026, 2:40 a.m.
Added
list_public_templates
Sept. 26, 2026, 2:40 a.m.
Added
compile
Sept. 24, 2026, 2:40 a.m.