APITemplate.io MCP by usefulapi
Generate PDFs and images with APITemplate.io from templates, HTML, Markdown or a URL.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (8)
- HIGH
- MEDIUMin apitemplate_create_pdf_from_html
- MEDIUMin apitemplate_create_pdf_from_markdown
- LOWin apitemplate_create_pdf_from_html
- LOWin apitemplate_create_pdf_from_markdown
- LOWin apitemplate_create_pdf_from_url
- INFOin apitemplate_create_pdf_from_html
- INFOin apitemplate_create_pdf_from_markdown
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"apitemplate": {
"url": "https://apitemplate.usefulapi.io/mcp"
}
}
}Remote-Endpunkte
https://apitemplate.usefulapi.io/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (10)
🟢apitemplate_get_account
The APITemplate.io account behind this key: plan, subscription status and period, and the quota: api_quota, api_used, api_remaining (generations), plus the template quota and count. Check api_remaining before generating. GET /v2/account-information.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢apitemplate_list_templates(limit, offset, format, group_name, template_id)
List the templates of the account (PDF and image): template_id, name, format (PDF or JPEG), status, group and dates. Use the template_id with the create tools. Read-only; templates are never changed. GET /v2/list-templates.
Eingabe-Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Number of records, 1-500 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 500
},
"offset": {
"description": "Records to skip (default 0). Next page: offset + limit.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"format": {
"description": "Only PDF or only image (JPEG) templates.",
"type": "string",
"enum": [
"PDF",
"JPEG"
]
},
"group_name": {
"description": "Only templates of this group.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"template_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{4,64}$",
"description": "The template id (apitemplate_list_templates, or the web console, Manage Templates)."
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢apitemplate_get_template(template_id)
One PDF template's HTML body, CSS and print settings (the vendor marks this endpoint experimental, so it can answer with an error for some accounts or image templates). Read-only. GET /v2/get-template.
Eingabe-Schema
{
"type": "object",
"properties": {
"template_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{4,64}$",
"description": "The template id (apitemplate_list_templates, or the web console, Manage Templates)."
}
},
"required": [
"template_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢apitemplate_list_objects(limit, offset, template_id, transaction_type)
List the PDFs and images generated so far, newest first: transaction_ref, template_id, type (PDF, JPEG or MERGE), your meta reference, the hosted file URLs (primary_url, secondary_url for the PNG) and dates. Files already deleted or expired have deletion_status set. Read-only. GET /v2/list-objects.
Eingabe-Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Number of records, 1-500 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 500
},
"offset": {
"description": "Records to skip (default 0). Next page: offset + limit.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"template_id": {
"description": "Only files generated from this template.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]{4,64}$"
},
"transaction_type": {
"description": "Only this kind of file.",
"type": "string",
"enum": [
"PDF",
"JPEG",
"MERGE"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡apitemplate_create_pdf(template_id, data, filename, expiration, meta, ...)
WRITE: renders one PDF from a saved PDF template and your JSON data (the keys the template uses, e.g. invoice_number, items), and returns the hosted download_url (never the file bytes). Synchronous. COST: uses 1 generation of your APITemplate.io plan quota per call (see apitemplate_get_account). Do not retry or repeat it unless needed; every call is counted. POST /v2/create-pdf (export_type=json).
Eingabe-Schema
{
"type": "object",
"properties": {
"template_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{4,64}$",
"description": "The template id (apitemplate_list_templates, or the web console, Manage Templates)."
},
"data": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {},
"description": "JSON data merged into the template, e.g. {\"invoice_number\":\"INV-1\",\"total\":42}. Keys depend on the template."
},
"filename": {
"description": "Custom file name ending in .pdf (default: a random UUID).",
"type": "string",
"minLength": 1,
"maxLength": 150,
"pattern": "^[\\w .()-]+\\.pdf$"
},
"expiration": {
"description": "Minutes until the hosted file expires: 0 = keep permanently (default), or 1-10080.",
"type": "integer",
"minimum": 0,
"maximum": 10080
},
"meta": {
"description": "Your own reference id for this file; it shows up in apitemplate_list_objects.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"output_html": {
"description": "Also return html_url, the rendered HTML.",
"type": "boolean"
},
"generation_delay": {
"description": "Milliseconds to wait before rendering (0-30000), for pages that load content late.",
"type": "integer",
"minimum": 0,
"maximum": 30000
}
},
"required": [
"template_id",
"data"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡apitemplate_create_image(template_id, overrides, output_image_type, expiration, meta, ...)
WRITE: renders one image (JPEG and PNG) from a saved image template, changing the named layers with overrides (e.g. [{"name":"text_1","text":"Hello"},{"name":"image_1","src":"https://..."}]), and returns the hosted download URLs (never the file bytes). COST: uses 1 generation of your APITemplate.io plan quota per call (see apitemplate_get_account). Do not retry or repeat it unless needed; every call is counted. POST /v2/create-image.
Eingabe-Schema
{
"type": "object",
"properties": {
"template_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{4,64}$",
"description": "The template id (apitemplate_list_templates, or the web console, Manage Templates)."
},
"overrides": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Layer name in the template, e.g. text_1."
}
},
"required": [
"name"
],
"additionalProperties": {}
},
"description": "Layer changes: each item has the layer 'name' and the properties to set (text, src, color, textBackgroundColor ...)."
},
"output_image_type": {
"description": "Which formats to render (default all).",
"type": "string",
"enum": [
"all",
"jpegOnly",
"pngOnly"
]
},
"expiration": {
"description": "Minutes until the hosted file expires: 0 = keep permanently (default), or 1-10080.",
"type": "integer",
"minimum": 0,
"maximum": 10080
},
"meta": {
"description": "Your own reference id for this file; it shows up in apitemplate_list_objects.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"generation_delay": {
"description": "Milliseconds to wait before rendering (0-30000), for pages that load content late.",
"type": "integer",
"minimum": 0,
"maximum": 30000
}
},
"required": [
"template_id",
"overrides"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡apitemplate_create_pdf_from_html(body, css, data, settings, filename, ...)
WRITE: renders one PDF from HTML (Jinja2 placeholders like {{name}} are filled from data), without a saved template, and returns the hosted download_url (never the file bytes). COST: uses 1 generation of your APITemplate.io plan quota per call (see apitemplate_get_account). Do not retry or repeat it unless needed; every call is counted. POST /v2/create-pdf-from-html (export_type=json).
Eingabe-Schema
{
"type": "object",
"properties": {
"body": {
"type": "string",
"minLength": 1,
"maxLength": 1000000,
"description": "HTML body; may use Jinja2 syntax such as {{name}}."
},
"css": {
"description": "CSS including the <style> tag.",
"type": "string",
"maxLength": 200000
},
"data": {
"description": "Values for the placeholders in body, e.g. {\"name\":\"Jo\"}.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"settings": {
"description": "PDF print settings.",
"type": "object",
"properties": {
"paper_size": {
"description": "Paper size; 'custom' needs custom_width and custom_height.",
"type": "string",
"enum": [
"Letter",
"Legal",
"Tabloid",
"Ledger",
"A0",
"A1",
"A2",
"A3",
"A4",
"A5",
"A6",
"custom"
]
},
"custom_width": {
"description": "Width for paper_size custom, with a unit (mm, px or cm), e.g. 210mm.",
"type": "string",
"maxLength": 20
},
"custom_height": {
"description": "Height for paper_size custom, with a unit (mm, px or cm), e.g. 297mm.",
"type": "string",
"maxLength": 20
},
"orientation": {
"description": "1 = portrait, 2 = landscape.",
"type": "string",
"enum": [
"1",
"2"
]
},
"margin_top": {
"description": "Top margin, e.g. '40' (the vendor reference says mm).",
"type": "string",
"maxLength": 10
},
"margin_right": {
"description": "Right margin.",
"type": "string",
"maxLength": 10
},
"margin_bottom": {
"description": "Bottom margin.",
"type": "string",
"maxLength": 10
},
"margin_left": {
"description": "Left margin.",
"type": "string",
"maxLength": 10
},
"print_background": {
"description": "1 = print background colors and images.",
"type": "string",
"enum": [
"0",
"1"
]
},
"displayHeaderFooter": {
"description": "Show the header and footer.",
"type": "boolean"
},
"custom_header": {
"description": "Header HTML (with its CSS).",
"type": "string",
"maxLength": 20000
},
"custom_footer": {
"description": "Footer HTML (with its CSS).",
"type": "string",
"maxLength": 20000
},
"header_font_size": {
"description": "Header font size, e.g. '9px'.",
"type": "string",
"maxLength": 10
},
"rendering_engine_version": {
"description": "Rendering engine: 153 (default) or 97 (legacy).",
"type": "string",
"enum": [
"97",
"153"
]
},
"preferCSSPageSize": {
"description": "Let the CSS @page rule set page size and orientation (engine 153 only).",
"type": "boolean"
}
}
},
"filename": {
"description": "Custom file name ending in .pdf (default: a random UUID).",
"type": "string",
"minLength": 1,
"maxLength": 150,
"pattern": "^[\\w .()-]+\\.pdf$"
},
"expiration": {
"description": "Minutes until the hosted file expires: 0 = keep permanently (default), or 1-10080.",
"type": "integer",
"minimum": 0,
"maximum": 10080
},
"meta": {
"description": "Your own reference id for this file; it shows up in apitemplate_list_objects.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"generation_delay": {
"description": "Milliseconds to wait before rendering (0-30000), for pages that load content late.",
"type": "integer",
"minimum": 0,
"maximum": 30000
}
},
"required": [
"body"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡apitemplate_create_pdf_from_markdown(body, css, data, settings, filename, ...)
WRITE: renders one PDF from Markdown (Jinja2 placeholders like {{lang}} are filled from data) and returns the hosted download_url (never the file bytes). COST: uses 1 generation of your APITemplate.io plan quota per call (see apitemplate_get_account). Do not retry or repeat it unless needed; every call is counted. POST /v2/create-pdf-from-markdown (export_type=json).
Eingabe-Schema
{
"type": "object",
"properties": {
"body": {
"type": "string",
"minLength": 1,
"maxLength": 1000000,
"description": "Markdown text; may use Jinja2 syntax such as {{lang}}."
},
"css": {
"description": "CSS including the <style> tag.",
"type": "string",
"maxLength": 200000
},
"data": {
"description": "Values for the placeholders in body.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"settings": {
"description": "PDF print settings.",
"type": "object",
"properties": {
"paper_size": {
"description": "Paper size; 'custom' needs custom_width and custom_height.",
"type": "string",
"enum": [
"Letter",
"Legal",
"Tabloid",
"Ledger",
"A0",
"A1",
"A2",
"A3",
"A4",
"A5",
"A6",
"custom"
]
},
"custom_width": {
"description": "Width for paper_size custom, with a unit (mm, px or cm), e.g. 210mm.",
"type": "string",
"maxLength": 20
},
"custom_height": {
"description": "Height for paper_size custom, with a unit (mm, px or cm), e.g. 297mm.",
"type": "string",
"maxLength": 20
},
"orientation": {
"description": "1 = portrait, 2 = landscape.",
"type": "string",
"enum": [
"1",
"2"
]
},
"margin_top": {
"description": "Top margin, e.g. '40' (the vendor reference says mm).",
"type": "string",
"maxLength": 10
},
"margin_right": {
"description": "Right margin.",
"type": "string",
"maxLength": 10
},
"margin_bottom": {
"description": "Bottom margin.",
"type": "string",
"maxLength": 10
},
"margin_left": {
"description": "Left margin.",
"type": "string",
"maxLength": 10
},
"print_background": {
"description": "1 = print background colors and images.",
"type": "string",
"enum": [
"0",
"1"
]
},
"displayHeaderFooter": {
"description": "Show the header and footer.",
"type": "boolean"
},
"custom_header": {
"description": "Header HTML (with its CSS).",
"type": "string",
"maxLength": 20000
},
"custom_footer": {
"description": "Footer HTML (with its CSS).",
"type": "string",
"maxLength": 20000
},
"header_font_size": {
"description": "Header font size, e.g. '9px'.",
"type": "string",
"maxLength": 10
},
"rendering_engine_version": {
"description": "Rendering engine: 153 (default) or 97 (legacy).",
"type": "string",
"enum": [
"97",
"153"
]
},
"preferCSSPageSize": {
"description": "Let the CSS @page rule set page size and orientation (engine 153 only).",
"type": "boolean"
}
}
},
"filename": {
"description": "Custom file name ending in .pdf (default: a random UUID).",
"type": "string",
"minLength": 1,
"maxLength": 150,
"pattern": "^[\\w .()-]+\\.pdf$"
},
"expiration": {
"description": "Minutes until the hosted file expires: 0 = keep permanently (default), or 1-10080.",
"type": "integer",
"minimum": 0,
"maximum": 10080
},
"meta": {
"description": "Your own reference id for this file; it shows up in apitemplate_list_objects.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"generation_delay": {
"description": "Milliseconds to wait before rendering (0-30000), for pages that load content late.",
"type": "integer",
"minimum": 0,
"maximum": 30000
}
},
"required": [
"body"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡apitemplate_create_pdf_from_url(url, settings, filename, expiration, meta, ...)
WRITE: APITemplate.io opens one public web page URL and prints it to a PDF, and returns the hosted download_url (never the file bytes). The page is fetched by APITemplate.io, not by this server; pages that need a login cannot be printed. COST: uses 1 generation of your APITemplate.io plan quota per call (see apitemplate_get_account). Do not retry or repeat it unless needed; every call is counted. POST /v2/create-pdf-from-url (export_type=json).
Eingabe-Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"description": "The public http(s) URL of the page to print."
},
"settings": {
"description": "PDF print settings.",
"type": "object",
"properties": {
"paper_size": {
"description": "Paper size; 'custom' needs custom_width and custom_height.",
"type": "string",
"enum": [
"Letter",
"Legal",
"Tabloid",
"Ledger",
"A0",
"A1",
"A2",
"A3",
"A4",
"A5",
"A6",
"custom"
]
},
"custom_width": {
"description": "Width for paper_size custom, with a unit (mm, px or cm), e.g. 210mm.",
"type": "string",
"maxLength": 20
},
"custom_height": {
"description": "Height for paper_size custom, with a unit (mm, px or cm), e.g. 297mm.",
"type": "string",
"maxLength": 20
},
"orientation": {
"description": "1 = portrait, 2 = landscape.",
"type": "string",
"enum": [
"1",
"2"
]
},
"margin_top": {
"description": "Top margin, e.g. '40' (the vendor reference says mm).",
"type": "string",
"maxLength": 10
},
"margin_right": {
"description": "Right margin.",
"type": "string",
"maxLength": 10
},
"margin_bottom": {
"description": "Bottom margin.",
"type": "string",
"maxLength": 10
},
"margin_left": {
"description": "Left margin.",
"type": "string",
"maxLength": 10
},
"print_background": {
"description": "1 = print background colors and images.",
"type": "string",
"enum": [
"0",
"1"
]
},
"displayHeaderFooter": {
"description": "Show the header and footer.",
"type": "boolean"
},
"custom_header": {
"description": "Header HTML (with its CSS).",
"type": "string",
"maxLength": 20000
},
"custom_footer": {
"description": "Footer HTML (with its CSS).",
"type": "string",
"maxLength": 20000
},
"header_font_size": {
"description": "Header font size, e.g. '9px'.",
"type": "string",
"maxLength": 10
},
"rendering_engine_version": {
"description": "Rendering engine: 153 (default) or 97 (legacy).",
"type": "string",
"enum": [
"97",
"153"
]
},
"preferCSSPageSize": {
"description": "Let the CSS @page rule set page size and orientation (engine 153 only).",
"type": "boolean"
}
}
},
"filename": {
"description": "Custom file name ending in .pdf (default: a random UUID).",
"type": "string",
"minLength": 1,
"maxLength": 150,
"pattern": "^[\\w .()-]+\\.pdf$"
},
"expiration": {
"description": "Minutes until the hosted file expires: 0 = keep permanently (default), or 1-10080.",
"type": "integer",
"minimum": 0,
"maximum": 10080
},
"meta": {
"description": "Your own reference id for this file; it shows up in apitemplate_list_objects.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"generation_delay": {
"description": "Milliseconds to wait before rendering (0-30000), for pages that load content late.",
"type": "integer",
"minimum": 0,
"maximum": 30000
}
},
"required": [
"url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡apitemplate_merge_pdfs(urls, expiration, meta)
WRITE: joins 2-20 PDFs (public http(s) URLs, in the given order, e.g. earlier download_url values) into one PDF and returns the hosted primary_url (never the file bytes). The source files are not changed or deleted. COST: uses 1 generation of your APITemplate.io plan quota per call (see apitemplate_get_account). Do not retry or repeat it unless needed; every call is counted. POST /v2/merge-pdfs (export_type=json).
Eingabe-Schema
{
"type": "object",
"properties": {
"urls": {
"minItems": 2,
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"maxLength": 2048
},
"description": "The PDF URLs to join, in order."
},
"expiration": {
"description": "Minutes until the hosted file expires: 0 = keep permanently (default), or 1-43200.",
"type": "integer",
"minimum": 0,
"maximum": 43200
},
"meta": {
"description": "Your own reference id for this file; it shows up in apitemplate_list_objects.",
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"urls"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Nachweis