Server definition
- Hash
- sha256:2b4a808e68c546582a19845159a0eb6af87c0e8c8ee1fcb518cdfc3e0ef20df7
- What it is
- What a remote MCP server returned when asked what it offers: 4 tools
The blob, as servednamed by its sha256
{
"instructions": "pdfzen renders HTML to PDF for AI agents. Four tools:\n\n list_starters — 45 public templates (free). Returns slug, name, description, dataKeys.\n get_starter — full template body + sampleData for one slug (free).\n render_template_to_pdf — prepare a paid render of a starter (returns the ready HTTP request).\n render_html_to_pdf — prepare a paid render of custom HTML (returns the ready HTTP request).\n\nTypical flow: list_starters → pick → get_starter (inspect dataKeys) → render_template_to_pdf.\n\nIMPORTANT: pdfzen renders are executed over HTTP, not streamed in-band over MCP. The two render tools validate your request and hand back the exact call to POST to the render endpoint — POST /v402/render/pdf (x402, $0.006 USDC on Base, no API key; use an x402 client like x402-fetch or Coinbase Agent Kit) or POST /v1/render/pdf (pdfzen API key, credit-billed). Execute that HTTP call to get the PDF bytes back (200 application/pdf).\n\nDocs: https://pdfzen.site/docs/x402 | Tool schemas: https://pdfzen.site/docs/agents/tools",
"tools": [
{
"description": "Fetch the full HTML body, CSS, sampleData, and pageOptions for one starter template by slug. Use this when you need to understand the exact shape of `data` the template expects before calling render_template_to_pdf, or when you want to fork a starter into custom HTML. Free, no payment, no auth required.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"slug": {
"description": "The starter slug. Examples: \"invoice\", \"receipt\", \"certificate\", \"contract\", \"nda\", \"boarding-pass\", \"menu\". Call list_starters to discover all 45 slugs.",
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "get_starter",
"outputSchema": null
},
{
"description": "List pdfzen's 45 public starter templates — invoices, receipts, contracts, certificates, NDAs, letters, reports, resumes, boarding passes, menus, bank statements, lab reports, lease agreements, performance reviews, and more. Returns an array of { slug, name, description, icon, pageOptions, fonts, dataKeys }. Free, no payment, no auth required. Call this first to discover what fits the user request, then optionally call get_starter to see the expected data shape, then call render_template_to_pdf to produce the PDF.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "list_starters",
"outputSchema": null
},
{
"description": "Prepare a paid PDF render from arbitrary Handlebars-flavoured HTML. Use only when no starter fits (one-off layouts, custom branding). Prefer render_template_to_pdf when a starter matches. Validates your HTML and returns the exact, ready-to-execute HTTP request to run against pdfzen's render endpoint — POST /v402/render/pdf (x402, $0.006 USDC on Base, no API key) or POST /v1/render/pdf (pdfzen API key). pdfzen renders are executed over HTTP, not streamed in-band over MCP; this tool is the bridge.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"css": {
"description": "Optional CSS injected into the document head. Alternative to inline <style> in `html`.",
"type": "string"
},
"data": {
"additionalProperties": true,
"description": "Handlebars context object resolved against the {{...}} expressions in `html`.",
"type": "object"
},
"html": {
"description": "The HTML body. Supports Handlebars {{ }} expressions resolved against `data`, plus pdfzen helpers ({{barChart}}, {{lineChart}}, {{pageBreak}}, {{#each}}, {{#if eq}}). Don't include <html>/<head>; just the body content + any <style> tags.",
"type": "string"
},
"pageOptions": {
"additionalProperties": true,
"description": "Page format/margin/orientation. Defaults to A4 portrait. Example: { \"format\": \"A4\", \"margin\": { \"top\": \"20mm\" } }.",
"type": "object"
}
},
"required": [
"html"
],
"type": "object"
},
"name": "render_html_to_pdf",
"outputSchema": null
},
{
"description": "Prepare a paid PDF render from one of the 45 starter templates. Validates your template + data and returns the exact, ready-to-execute HTTP request to run against pdfzen's render endpoint — POST /v402/render/pdf (x402, $0.006 USDC on Base, no API key) or POST /v1/render/pdf (pdfzen API key, credit-billed). pdfzen renders are executed over HTTP, not streamed in-band over MCP; this tool is the bridge. Your `data` is merged ON TOP of the starter sampleData at render time, so partial payloads inherit demo defaults (e.g. ship just the customer name + total).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"data": {
"additionalProperties": true,
"description": "Handlebars context. Each starter expects a specific shape — call get_starter to see the sampleData and dataKeys for the chosen slug. Your fields merge ON TOP of sampleData, so you can supply only the fields the user gave you and the rest fall back to the demo content.",
"type": "object"
},
"pageOptions": {
"additionalProperties": true,
"description": "Page format/margin/orientation overrides. Defaults come from the starter (most are A4 portrait). Example: { \"format\": \"Letter\", \"landscape\": true }.",
"type": "object"
},
"template": {
"description": "Slug of the starter to render (e.g. \"invoice\", \"receipt\", \"certificate\"). Call list_starters first if unsure which fits the user request.",
"type": "string"
}
},
"required": [
"template"
],
"type": "object"
},
"name": "render_template_to_pdf",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:2b4a808e68c546582a19845159a0eb6af87c0e8c8ee1fcb518cdfc3e0ef20df7 | sha256sum