APITemplate.io MCP by usefulapi
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Generate PDFs and images with APITemplate.io from templates, HTML, Markdown or a URL.
| Author | io.usefulapi |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 396 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"APITemplate.io MCP by usefulapi": {
"url": "https://apitemplate.usefulapi.io/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (10)
apitemplate_get_accountread-onlyThe 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.
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
apitemplate_list_templatesread-onlyList 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.
Parameters:
limit— integer — Number of records, 1-500 (default 50).format— string — Only PDF or only image (JPEG) templates.offset— integer — Records to skip (default 0). Next page: offset + limit.group_name— string — Only templates of this group.template_id— string — The template id (apitemplate_list_templates, or the web console, Manage Templates).
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
apitemplate_get_templateread-onlyOne 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.
Parameters:
template_id(required) — string — The template id (apitemplate_list_templates, or the web console, Manage Templates).
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
apitemplate_list_objectsread-onlyList 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.
Parameters:
limit— integer — Number of records, 1-500 (default 50).offset— integer — Records to skip (default 0). Next page: offset + limit.template_id— string — Only files generated from this template.transaction_type— string — Only this kind of file.
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
apitemplate_create_pdfWRITE: 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).
Parameters:
template_id(required) — string — The template id (apitemplate_list_templates, or the web console, Manage Templates).data(required) — object — JSON data merged into the template, e.g. {"invoice_number":"INV-1","total":42}. Keys depend on the template.meta— string — Your own reference id for this file; it shows up in apitemplate_list_objects.filename— string — Custom file name ending in .pdf (default: a random UUID).expiration— integer — Minutes until the hosted file expires: 0 = keep permanently (default), or 1-10080.output_html— boolean — Also return html_url, the rendered HTML.generation_delay— integer — Milliseconds to wait before rendering (0-30000), for pages that load content late.
Hints: read-only no · destructive no · idempotent no · open-world yes
apitemplate_create_imageWRITE: 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.
Parameters:
template_id(required) — string — The template id (apitemplate_list_templates, or the web console, Manage Templates).overrides(required) — array — Layer changes: each item has the layer 'name' and the properties to set (text, src, color, textBackgroundColor ...).meta— string — Your own reference id for this file; it shows up in apitemplate_list_objects.expiration— integer — Minutes until the hosted file expires: 0 = keep permanently (default), or 1-10080.generation_delay— integer — Milliseconds to wait before rendering (0-30000), for pages that load content late.output_image_type— string — Which formats to render (default all).
Hints: read-only no · destructive no · idempotent no · open-world yes
apitemplate_create_pdf_from_htmlWRITE: 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).
Parameters:
body(required) — string — HTML body; may use Jinja2 syntax such as {{name}}.css— string — CSS including the <style> tag.data— object — Values for the placeholders in body, e.g. {"name":"Jo"}.meta— string — Your own reference id for this file; it shows up in apitemplate_list_objects.filename— string — Custom file name ending in .pdf (default: a random UUID).settings— object — PDF print settings.expiration— integer — Minutes until the hosted file expires: 0 = keep permanently (default), or 1-10080.generation_delay— integer — Milliseconds to wait before rendering (0-30000), for pages that load content late.
Hints: read-only no · destructive no · idempotent no · open-world yes
apitemplate_create_pdf_from_markdownWRITE: 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).
Parameters:
body(required) — string — Markdown text; may use Jinja2 syntax such as {{lang}}.css— string — CSS including the <style> tag.data— object — Values for the placeholders in body.meta— string — Your own reference id for this file; it shows up in apitemplate_list_objects.filename— string — Custom file name ending in .pdf (default: a random UUID).settings— object — PDF print settings.expiration— integer — Minutes until the hosted file expires: 0 = keep permanently (default), or 1-10080.generation_delay— integer — Milliseconds to wait before rendering (0-30000), for pages that load content late.
Hints: read-only no · destructive no · idempotent no · open-world yes
apitemplate_create_pdf_from_urlWRITE: 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).
Parameters:
url(required) — string — The public http(s) URL of the page to print.meta— string — Your own reference id for this file; it shows up in apitemplate_list_objects.filename— string — Custom file name ending in .pdf (default: a random UUID).settings— object — PDF print settings.expiration— integer — Minutes until the hosted file expires: 0 = keep permanently (default), or 1-10080.generation_delay— integer — Milliseconds to wait before rendering (0-30000), for pages that load content late.
Hints: read-only no · destructive no · idempotent no · open-world yes
apitemplate_merge_pdfsWRITE: 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).
Parameters:
urls(required) — array — The PDF URLs to join, in order.meta— string — Your own reference id for this file; it shows up in apitemplate_list_objects.expiration— integer — Minutes until the hosted file expires: 0 = keep permanently (default), or 1-43200.
Hints: read-only no · destructive no · idempotent no · open-world yes
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.