DocPenny PDF Generator
Server Details
Generate HTML to PDF documents in bulk or single — raw replacements or based on conditions, loops
- Status
- Healthy
- Uptime
- 54.0% over 40 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 6 tools
Each tool targets a distinct concern: preview generation, credit checking, job status, template details, template listing, and job submission. There is no overlap or ambiguity between them.
All tools follow a consistent snake_case verb_noun pattern (generate_preview, get_credits, get_job, get_template, list_templates, submit_job). The naming is uniform and predictable.
Six tools is well-scoped for a PDF generation server, covering the essential discovery, submission, monitoring, and preview workflows without unnecessary bloat.
The tool surface covers the full PDF generation lifecycle: discover templates, check credits, submit jobs, monitor job progress, and generate previews. No critical operations are missing for the stated purpose.
Available Tools
6 toolsgenerate_previewAInspect
Generate a watermarked preview PDF (no credits consumed). The preview PDF is available for one-time download via the returned URL, then deleted from storage.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | JSON string of template variable data (e.g. report info, holdings, allocation, performance arrays). Pass an empty object {} if omitted. | |
| templateId | Yes | The UUID of the template to use for generating the preview |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description fully bears transparency burden. Discloses watermarking, zero credit cost, one-time download, and deletion after retrieval.
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 cover purpose, behavior, and constraint (no credits). No wasted words, front-loaded.
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?
No output schema, but description explains the returned URL's behavior. Could mention size limits or format, but overall adequate for a preview tool.
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 already covers both parameters with descriptions. The description adds minimal extra context (data as JSON template variables). 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?
Clearly states the action (Generate), resource (preview PDF), and key differentiators: watermarked, no credits consumed. Distinguishes from sibling submit_job which likely consumes credits.
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?
Implicitly defines when to use (preview vs. actual job via no-credits hint). Lacks explicit when-not or alternatives, but context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_creditsAInspect
Check the organization's credit balance, including paid credits, free/promotional credits, and total available credits.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It clearly indicates a read operation (check) and lists the credit types returned. It does not disclose authentication or rate limits, but for a simple param-less query, this is sufficient.
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?
Single sentence conveying all necessary information with no wasted words. Front-loaded with the action and specifics.
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?
Given no parameters and no output schema, the description fully explains what the tool returns (credit balance components). The agent can correctly invoke and interpret results.
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?
Input schema is empty (0 parameters), schema coverage 100%. Baseline for 0 params is 4. Description adds no parameter info since none exist, which 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 clearly states the tool checks the organization's credit balance and lists specific components (paid, free/promotional, total). It distinguishes from sibling tools which deal with jobs and templates.
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 implies usage for checking credit balance but gives no explicit guidance on when to use vs alternatives or when not to use. Siblings are different enough to avoid confusion, but lack of explicit usage context lowers score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_jobAInspect
Get the status and progress of a PDF generation job, including task counts (total, completed, failed).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The UUID of the job to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description conveys a read-only operation (getting status) but lacks explicit statements about non-destructiveness, authentication, or error handling. Without annotations, the description carries the full burden and could be more detailed.
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 a single, well-structured sentence that front-loads the action and includes key details. No unnecessary words.
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 simple retrieval tool with one parameter, the description adequately specifies the return information (task counts). However, it does not mention other possible return fields or error cases, which could be added for completeness.
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 already describes the 'id' parameter as a UUID, and the tool description reinforces that it identifies the job. No additional semantics beyond the schema are provided, so baseline score applies.
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 it retrieves the status and progress of a PDF generation job with specific details (task counts). It is distinct from sibling tools like 'submit_job' and 'generate_preview', which perform different actions.
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 implies usage for checking job status after submission, but it does not explicitly state when to use versus alternatives like 'submit_job' or 'generate_preview'. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_templateAInspect
Get detailed information about a specific template, including its variables and JSON schema.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The UUID of the template to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool returns 'detailed information, including variables and JSON schema,' but does not mention potential errors (e.g., template not found), required permissions, or any side effects. For a read-only tool, this is adequate but lacks depth.
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 a single, well-structured sentence with no unnecessary words. It efficiently conveys the tool's function and return content.
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?
Given the tool's low complexity (one parameter, no output schema, no annotations), the description is mostly complete. It clearly states what the tool does and what it returns. However, it could be improved by briefly distinguishing from 'list_templates' or mentioning error handling.
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 description coverage is 100% for the sole parameter 'id' (described as 'The UUID of the template to retrieve'). The description adds meaning beyond the schema by specifying that the response includes variables and JSON schema, but does not enhance parameter semantics directly. 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 clearly states the tool's purpose: 'Get detailed information about a specific template, including its variables and JSON schema.' It uses a specific verb ('Get') and a specific resource ('template'), and distinguishes from siblings like 'list_templates' by emphasizing 'detailed information' for a single 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?
No usage guidance is provided. The description does not indicate when to use this tool over alternatives such as 'list_templates' for listing, or when not to use it. There is no mention of prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_templatesAInspect
List available PDF templates with optional pagination. Returns template names, IDs, and their required LiquidJS variables. Use source="system" to list system-wide pre-built templates instead of org-owned ones.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| source | No | If set to "system", returns system-wide starter templates instead of org-specific ones. | |
| pageSize | No | Items per page (default: 15) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the tool supports pagination and returns specific fields (names, IDs, variables). With no annotations, this is sufficient for a read-only list operation, though it could explicitly state it is non-destructive.
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 only, each with clear purpose: first states action and return, second gives usage hint. No filler, perfectly concise.
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?
Covers return fields (names, IDs, variables) and pagination behavior. With no output schema, this is reasonably complete, though pagination metadata (like total count) is not mentioned.
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 covers all parameters, but the description adds value by explaining the source parameter's effect (system vs. org templates) and noting pagination is optional, going beyond the schema 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 tool's purpose: listing PDF templates with optional pagination. It specifies what is returned (names, IDs, LiquidJS variables), distinguishing it from siblings like get_template (which likely fetches a single 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?
Provides explicit guidance on using source="system" for system-wide templates. However, it does not directly contrast with sibling tools like get_template, though the purpose implies this is for listing vs. single retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_jobBInspect
Submit a new PDF generation job using a template and a JSONL string. Each line in the data string represents one PDF to generate with variable values.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | JSONL formatted data — one JSON object per line, each line is one PDF to generate | |
| templateId | Yes | The UUID of the template to use for PDF generation | |
| webhookUrl | No | Optional URL to receive a webhook notification when the job completes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description conveys that this creates a new job (implying asynchronous processing) rather than returning a PDF immediately, and the optional webhook is visible in the schema. However, with no annotations at all, it does not disclose side effects like job persistence, processing time, or how results are retrieved.
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 concise sentences convey the action, the input format, and the per-line behavior without repetition or fluff. The structure is efficient and easy to parse.
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 the core invocation well and the schema is fully described, but it does not mention whether the job processes asynchronously, how results are retrieved (e.g., job ID), or when to prefer this over sibling tools such as generate_preview. It is sufficient for a basic call but leaves workflow context implicit.
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 description adds meaningful context beyond the schema by explaining that each JSON line includes variable values applied to the template essere. While the schema already covers the JSONL format well, the 'variable values' phrase clarifies the semantic purpose of the data, which is useful for constructing valid input.
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 action ('submit'), the object ('a new PDF generation job'), and the required inputs ('template' and 'JSONL string'). It does not explicitly contrast itself with sibling tools like generate_preview, but the phrase 'new job' conveys a batch/async operation distinct from simple retrieval or preview tools.
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 no guidance on when to use submit_job versus alternatives such as generate_preview or how to retrieve job results. It implies batch generation from JSONL lines, but does not explicitly state that this is for bulk/multiple PDFs or mention a lighter-weight preview option. The agent must infer usage from the description and sibling tool names.
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.
6 tool updates
- First observed
generate_preview - First observed
get_credits - First observed
get_job - First observed
get_template - First observed
list_templates - First observed
submit_job
Related MCP Connectors
Generate PDF/DOCX/XLSX/PPTX from templates+JSON. Convert Office/HTML/MD to PDF. Universal templating
JSON in, PDF out. Render invoices, certificates, reports and cards from a template and a payload.
Turn an HTML template plus JSON into a finished PDF: a quote, invoice, work order or certificate.
Cloud PDF generation from HTML, CSS and XSL-FO, with PDF/A and PDF/UA support.
Related MCP Servers
AlicenseAqualityBmaintenanceRenders PDFs from HTML templates or saved templates and spreadsheet data, with batch job support and document retrieval.643 npm1MIT- AlicenseAqualityCmaintenanceGenerate professional PDFs from Claude, Cursor, and other AI tools. Create invoices, contracts, reports, and certificates from templates or inline HTML markup.725 npm1MIT
- FlicenseNot gradedqualityDmaintenanceConverts HTML files or HTML content to PDF using Puppeteer's browser rendering engine with support for CSS, JavaScript, custom page formats, margins, and header/footer templates.6-

DocuQueue MCP Serverofficial
AlicenseNot gradedqualityBmaintenanceEnables creating professional documents (invoices, contracts, certificates, proposals, reports) via the DocuQueue API, with tools for template management, filling, previewing, and PDF generation.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.