Pressa - LaTeX to PDF
Server Details
Compile LaTeX to PDF without installing TeX Live. No API key needed to start.
- Status
- Healthy
- Uptime
- 100.0% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- pressa-dev/mcp
- GitHub Stars
- 0
- Server Listing
- @pressa/mcp
TDQS
Scored across 4 tools
Each tool has a clear, non-overlapping role: compile handles raw LaTeX, list_public_templates discovers templates, get_public_template fetches template schema/details, and render_public_template produces a PDF from structured data. Even though compile and render both output PDFs, the descriptions make the boundary explicit.
The three template tools follow a clear verb_noun pattern: list_public_templates, get_public_template, render_public_template. The compile tool breaks the pattern slightly by having no noun object, but this is defensible since it is the core compiler action, and the overall style remains predictable.
Four tools is a well-scoped count for this server's purpose: one raw compilation tool and three tools covering the template workflow. Each tool addresses a distinct step and none feel redundant or missing.
The tool surface covers the full end-to-end workflow: discover templates, inspect their requirements, render them, or compile arbitrary LaTeX from scratch. Template customization is supported via getting the LaTeX source and editing before compiling, so there are no obvious dead ends.
Available Tools
4 toolscompileCompile LaTeX to PDFAInspect
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}\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.
| Name | Required | Description | Default |
|---|---|---|---|
| latex | Yes | Complete LaTeX source, including \documentclass and \begin{document}...\end{document}. | |
| compiler | No | Defaults to pdflatex. Anonymous callers may only use pdflatex. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which only indicate open-world and non-read-only), the description discloses important behaviors: anonymous rate limits, failed compilations not counting, preview behavior with API keys, and automatic diagnosis on failure. It also warns that it compiles LaTeX only, not plain text. This fully covers behavioral context without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with clear headings and front-loaded purpose. Every sentence adds meaningful information—usage conditions, limits, error handling, and examples—without redundant fluff. The length is justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all essential aspects: return values (PDF URL, page count, compile time), error diagnosis, preview behavior with keys, anonymous limits, and LaTeX syntax requirements. It is thorough enough for an agent to use correctly without further clarification.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds significant value: it explains the latex parameter must be complete and valid, gives a minimal document example, lists escape characters, and clarifies compiler defaults and anonymous restrictions. This goes well beyond the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Compile LaTeX source into a PDF' and lists the return values. With no sibling tools, it unambiguously identifies the operation. The opening sentence is specific and sets expectations precisely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'USE THIS WHEN' and 'DO NOT USE THIS TO' sections, naming concrete scenarios and exclusions. It also explains when to prefer this over local compilation and when to avoid it for other PDF operations, giving clear routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_public_templateFetch one public templateARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| template | Yes | Template slug from list_public_templates, e.g. classic-resume. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, covering the safety profile. The description adds value beyond annotations by specifying the nature of the returned data (fields, sample data, instructions, LaTeX source) and the directive to read instructions before data collection. It does not contradict annotations and provides useful behavioral context for a read-only fetch.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero waste. The main purpose is front-loaded, followed by concise routing guidance. Every clause earns its place, and there is no redundant or verbose phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description names the return components (fields, sample data, filling instructions, LaTeX source) and offers clear next-step actions. It covers the core behavior adequately for a simple fetch tool, though it does not explicitly describe response formatting or error handling. Given the simplicity and the annotations covering safety, this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema description for the 'template' parameter already specifies it is a slug from list_public_templates with an example. The tool description adds no new parameter information beyond what the schema provides, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('a public template') and enumerates the exact content returned: fields (JSON schema), sample data, filling instructions, and LaTeX source. It clearly differentiates from siblings by naming render_public_template (for making the PDF) and compile (for changing layout), so an agent can distinguish this fetch operation immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit routing: after fetching, pass data to render_public_template to make a PDF, or edit source and use compile to change layout. It also tells the agent to read the instructions before collecting data from the user, providing clear context for when this tool is the right step in a workflow. Alternatives are named with their conditions, leaving no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_public_templatesBrowse Pressa's public document templatesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds genuinely useful behavior: it returns summary text and preview image URLs, and it works without an API key, giving the agent practical expectations without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences carry all essential information with no redundancy. The primary purpose is front-loaded, followed by usage conditions and a practical auth note. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless listing tool with strong read-only annotations, this description is complete. It covers what the tool does, what the output contains, when to use it, and the absence of an API key requirement. Nothing needed for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema description coverage is 100%, so there is little for the description to add about parameters. It still contributes by describing the result payload (summary and preview URL), which helps the agent understand what the tool returns despite the absence of an output schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the specific verb 'List' and names a precise resource: Pressa's public document templates, including categories. It also states what each listing contains (one-line summary and preview image URL), which clearly distinguishes this from siblings like get_public_template or render_public_template.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly gives the condition for use: when the user wants one of these documents and has no layout of their own, or asks to see designs to choose from. It stops short of naming alternatives like get_public_template, so it lacks an explicit when-not or alternative routing, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_public_templateFill a public template and get a PDFAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Values for the template's fields. | |
| template | Yes | Template slug, e.g. modern-resume. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as non-read-only and open-world, and the description adds useful behavioral context: missing fields return a list of what to ask for and cost nothing, and the tool works without an API key within a daily free limit. It does not detail side effects, but the added context goes meaningfully beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main action is front-loaded, and each of the four sentences adds a distinct operational fact: schema matching, missing-field behavior, template interchangeability, and authentication/rate-limit context. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still names the return value (a PDF link) and covers the common failure mode (missing fields). It could mention how to discover valid slugs or handle invalid template slugs, but for a two-parameter tool this is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for both parameters, and the description enriches them: 'data' must match the template schema with defined missing-field behavior, and 'template' is a slug that can be swapped to switch styles. This is useful semantics beyond the generic schema wording.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and outcome: 'Fill a public template with the user's data and return a PDF link.' It clearly identifies the resource and intended result. However, it does not explicitly differentiate this tool from the sibling 'compile', so some distinction is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete usage context: consult get_public_template for the schema, expect a missing-field prompt list, and reuse the same call with a different slug to switch resume styles. It does not explicitly state when to prefer compile or list_public_templates, so exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- Added
get_public_template - Added
list_public_templates - Added
render_public_template
1 tool update
- First observed
compile
Related MCP Connectors
A hosted LaTeX editor your assistant can actually use. Search 1,019 free templates, create and edit projects, and compile them to PDF on a real TeX Live farm, getting back the PDF or the compile log when a build fails. Thirteen tools behind OAuth 2.1, with nothing to install and nothing to run locally.
Persistent AI LaTeX workspace: edit and compile multi-file projects, export publication-ready PDFs.
Convert files, HTML, and Markdown to PDF via the FileToPDF API. Bring your own API key.
Cloud PDF generation from HTML, CSS and XSL-FO, with PDF/A and PDF/UA support.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables AI agents to edit LaTeX documents with a live PDF preview, source editor, and PDF-anchored comments that become edit instructions. Requires no local TeX install, using a WASM TeX engine.7103 npm4AGPL 3.0
- AlicenseBqualityCmaintenanceCompiles LaTeX resumes into PDFs via MCP tools, including validation, preview, template compilation, and LaTeX export, with security defaults like path isolation and no shell escapes.7MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server for programmatic creation, modification, and compilation of structured LaTeX documents.14 npm3Apache 2.0
- AlicenseNot gradedqualityDmaintenanceMCP server that renders LaTeX to PDF via pdflatex, supporting raw LaTeX and Jinja2 templates with artifact generation.11MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.