Skip to main content
Glama

Server Details

Compliant PDFs (PDF/A-2A + PDF/UA-1) from markdown or a compact DSL - fast, no headless browser.

Ownership verified
Status
Healthy
Uptime
100.0% over the last 24 hours
Last Tested
Transport
Streamable HTTP · MCP 2025-03-26
URL
ChatGPT
–
Claude
–

TDQS

A4.1/5.0

Scored across 11 tools

Disambiguation4/5

Template CRUD tools (delete/get/list/save/update_template) are cleanly distinct, and validation tools split neatly by input type (validate_dsl vs validate_markdown). The three render tools (render_dsl_preview, render_template, render_markdown) all produce PDFs and could momentarily overlap, but the descriptions sharply distinguish free-preview, billed-template, and markdown paths.

Naming Consistency5/5

Every tool follows a consistent snake_case verb_noun pattern (delete_template, get_template, list_templates, render_markdown, validate_dsl, report_feedback, etc.). Verbs are precise and uniform across the whole set.

Tool Count5/5

11 tools is well-scoped for a PDF rendering/validation service, with each tool earning its place. No redundant or filler tools are present.

Completeness4/5

Covers full template lifecycle (save/list/get/update/delete), rendering (preview + billed, DSL + markdown), and validation for both input types, plus feedback. The only notable gap is that artifactId is returned but there is no tool to list, fetch, or manage previously-rendered artifacts.

Available Tools

11 tools
delete_templateAInspect

Delete a caller-owned template by ID. Library rows cannot be deleted. Mirrors DELETE /api/v1/templates/:id.

NameRequiredDescriptionDefault
templateIdYesTemplate ID — slug for library rows (e.g. 'invoice-classic') or UUID for user rows.
get_templateAInspect

Fetch a single template (library or caller-owned) by ID, including its full DSL source and sampleData. Mirrors GET /api/v1/templates/:id.

NameRequiredDescriptionDefault
templateIdYesTemplate ID — slug for library rows (e.g. 'invoice-classic') or UUID for user rows.
list_templatesAInspect

List templates visible to the caller — both curated library templates (no owner) and the caller's own saved templates. Metadata only (no DSL bodies). Paginated. Use owner: 'mine' to restrict to your own; owner: 'library' for the curated catalog only; default 'all' returns both. Optional category, tags (comma-separated, ANDed), and q (free-text over name + description) filters apply across both. Mirrors GET /api/v1/templates.

NameRequiredDescriptionDefault
qNo
tagsNo
limitNo
ownerNoall
offsetNo
categoryNo
render_dsl_previewAInspect

Render a DSL template + data to a preview PDF. Free (no credits), always watermarked 'PREVIEW — NOT FOR USE'. Returns JSON metadata plus the PDF bytes as an embedded base64 resource. Mirrors POST /api/v1/preview.

NameRequiredDescriptionDefault
dslYesThe builder DSL script.
dataNoOptional binding data. Falls back to the script's sampleData when omitted.
titleNoOptional document title (shown in PDF metadata).
render_markdownAInspect

Render GitHub-flavored markdown to a real PDF (PDF/A-2A + PDF/UA-1 dual-compliant, tagged). BILLED - consumes credits at the rate of 1 credit per 10 pages. Returns JSON metadata (pageCount, creditsDeducted, creditsRemaining, artifactId) plus the PDF bytes as an embedded base64 resource. On the free plan the PDF is watermarked; paid plans render clean. Mirrors POST /api/v1/md. Run validate_markdown first - it is free and catches heading-hierarchy and alt-text problems before you pay to render them. There is no free markdown preview: markdown needs no layout iteration, so this is the only markdown render tool.

NameRequiredDescriptionDefault
optionsNoOptional render settings. Anything omitted falls back to YAML frontmatter in the markdown, then to the runtime default.
markdownYesGitHub-flavored markdown source. Max 200KB of text; inline data: image payloads are excluded from that budget.
render_templateAInspect

Render any readable template (curated library row or caller-owned) to a real PDF. BILLED — consumes credits at the rate of 1 credit per 10 pages. Returns JSON metadata (pageCount, creditsDeducted, creditsRemaining, artifactId) plus the PDF bytes as an embedded base64 resource. On the free plan the PDF is watermarked; paid plans render clean. Mirrors POST /api/v1/render with the { templateId, data } body shape. Use render_dsl_preview first to confirm the layout — that's free and watermarked. Only call this once you're confident the template is right.

NameRequiredDescriptionDefault
dataNoBinding data substituted into {{var}} expressions. Falls back to the template's sampleData when omitted.
titleNoOptional document title (shown in PDF metadata).
templateIdYesTemplate ID — slug for library rows (e.g. 'invoice-classic') or UUID for user rows.
report_feedbackAInspect

Report feedback about this MCP server to the makesPDF team — where you got stuck, a tool error or description that misled you, a capability you needed but could not find, or a concrete suggestion for the server. Call it after a tool failed and you could not work out why, when an error message or tool description contradicted the skill file, when something you needed is missing, or when you have a specific improvement in mind. Write the problem in your own words: what you were trying to do, what you tried, and what you expected to happen. Do not include the user's document text, markdown, DSL source or data values. Describe the problem instead; if it concerns a specific render, pass its artifactId. This is not a support channel — nobody replies in real time. Calling it is free: it does not consume credits and does not affect the user's renders.

NameRequiredDescriptionDefault
kindYes`stuck` — a tool failed and you could not work out why; `bug` — something behaved incorrectly (a misleading error/description counts); `suggestion` — a missing capability or a concrete improvement.
summaryYesThe problem in your own words: what you tried and what you expected. Do not include document content (see the content rule above).
toolNameNoOptional name of the tool this concerns (e.g. `render_template`).
artifactIdNoOptional UUID of the render artifact this concerns (the `artifactId` returned by a render call or the `X-Artifact-Id` response header).
save_templateAInspect

Save a user-owned DSL template for later reuse via /api/v1/render. Validates the DSL with the catalog before persisting. Free (no credits). Pass sampleData (any JSON value) so the template's binding shape is preserved — the modify-template flow on /ai/chat round-trips this back into the Render data panel when the user returns. Optional description is a one-sentence summary surfaced on /templates. Returns { templateId, name, createdAt }.

NameRequiredDescriptionDefault
dslYesThe builder DSL script (<=512KB).
nameYesHuman-readable template name.
sampleDataNoOptional JSON binding data to persist alongside the template. Round-tripped on get_template / modify-template flow.
descriptionNoOptional one-sentence summary (max 280 chars). Surfaced on /templates list rows.
update_templateBInspect

Update a saved template's DSL, name, description, and/or sampleData. Revalidates the DSL when provided. For description and sampleData: pass null to clear; omit to leave unchanged. Mirrors PUT /api/v1/templates/:id.

NameRequiredDescriptionDefault
dslNoReplacement builder DSL script (<=512KB).
nameNo
sampleDataNoOptional JSON binding data. `null` clears the stored value; omit to leave unchanged.
templateIdYesTemplate ID — slug for library rows (e.g. 'invoice-classic') or UUID for user rows.
descriptionNoOptional one-sentence summary (max 280 chars). Pass `null` (instead of a string) to clear the stored value; omit the key entirely to leave it unchanged.
validate_dslAInspect

Validate a PDF template DSL script for structure, tag/style correctness, and accessibility issues. Runs catalog validation plus alt-text checks. Cheap — no rendering. Mirrors POST /api/v1/preview/validate.

NameRequiredDescriptionDefault
dslYesThe builder DSL script to validate. Must define a template (see skills/pdf-template-author.md).
dataNoOptional binding data. Falls back to the script's sampleData when omitted.
validate_markdownAInspect

Validate a markdown document for PDF/UA-1 accessibility issues (heading hierarchy, missing alt text). Cheap — no rendering. Mirrors POST /api/v1/md/validate.

NameRequiredDescriptionDefault
markdownYesGitHub-flavored markdown source. Max 200KB of text; inline data: image payloads are excluded from that budget.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedrender_markdown2 fields changed
      • addedInput schema / properties / options / properties / pageNumberPosition
        Added value: +{
        +  "description": "Footer alignment when pageNumbers is set. Default 'right'. Ignored without pageNumbers.",
        +  "enum": [
        +    "left",
        +    "center",
        +    "right"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / options / properties / pageNumbers
        Added value: +{
        +  "description": "Footer page-number format: 'page-n-of-total' (Page 3 of 12), 'n-of-total' (3 / 12), or 'n' (3). Omit for no page numbers.",
        +  "enum": [
        +    "page-n-of-total",
        +    "n-of-total",
        +    "n"
        +  ],
        +  "type": "string"
        +}
  2. 2 tool updates
    • Changedrender_markdown2 fields changed
      • changedInput schema / properties / markdown / description
        Previous value: -"GitHub-flavored markdown source."New value: +"GitHub-flavored markdown source. Max 200KB of text; inline data: image payloads are excluded from that budget."
      • removedInput schema / properties / markdown / maxLength
        Removed value: -200000
    • Changedvalidate_markdown2 fields changed
      • changedInput schema / properties / markdown / description
        Previous value: -"GitHub-flavored markdown source."New value: +"GitHub-flavored markdown source. Max 200KB of text; inline data: image payloads are excluded from that budget."
      • removedInput schema / properties / markdown / maxLength
        Removed value: -200000
  3. 1 tool update
    • Addedreport_feedback
  4. 2 tool updates
    • Changeddelete_template1 field changed
      • addedInput schema / properties / templateId / description
        Added value: +"Template ID — slug for library rows (e.g. 'invoice-classic') or UUID for user rows."
    • Changedupdate_template3 fields changed
      • changedInput schema / properties / description / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • addedInput schema / properties / dsl / description
        Added value: +"Replacement builder DSL script (<=512KB)."
      • addedInput schema / properties / templateId / description
        Added value: +"Template ID — slug for library rows (e.g. 'invoice-classic') or UUID for user rows."
  5. 1 tool update
    • Addedrender_markdown
  6. 9 tool updates
    • First observeddelete_template
    • First observedget_template
    • First observedlist_templates
    • First observedrender_dsl_preview
    • First observedrender_template
    • First observedsave_template
    • First observedupdate_template
    • First observedvalidate_dsl
    • First observedvalidate_markdown

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources