APITemplate.io MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.3.3 · published by io.usefulapi
Generate PDFs and images with APITemplate.io from templates, HTML, Markdown or a URL.
10 tools: 1 do something that can't be undone, 5 change things and 4 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone1Claude Code: ask: see these tools
- Changes things5Claude Code: ask: see these tools
- Only reads4Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http apitemplate https://apitemplate.usefulapi.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
10 tools
Can't be undone 1Claude Code: ask
apitemplate_merge_pdfsWRITE: joins 2-20 PDFs (public http(s) URLs, in the given order, e.g.No findings
Why it is in this group
- The name "apitemplate_merge_pdfs" says "merge": a word for a change that another call does not undo.
Description, as the server wrote it 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).
Annotations the server declares
- title: Merge PDFs
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
Changes things 5Claude Code: ask
apitemplate_create_imageWRITE: renders one image (JPEG and PNG) from a saved image template, changing the named layers with overrides (e.g.No findings
Why it is in this group
- The name "apitemplate_create_image" says "create": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Create an image from a template
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
apitemplate_create_pdfWRITE: renders one PDF from a saved PDF template and your JSON data (the keys the template uses, e.g.No findings
Why it is in this group
- The name "apitemplate_create_pdf" says "create": a word for a change.
Description, as the server wrote it 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).
Annotations the server declares
- title: Create a PDF from a template
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
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).No findings
Why it is in this group
- The name "apitemplate_create_pdf_from_html" says "create": a word for a change.
Description, as the server wrote it 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).
Annotations the server declares
- title: Create a PDF from HTML
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
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).No findings
Why it is in this group
- The name "apitemplate_create_pdf_from_markdown" says "create": a word for a change.
Description, as the server wrote it 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).
Annotations the server declares
- title: Create a PDF from Markdown
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
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).No findings
Why it is in this group
- The name "apitemplate_create_pdf_from_url" says "create": a word for a change.
Description, as the server wrote it 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).
Annotations the server declares
- title: Create a PDF from a web page URL
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
Only reads 4Claude Code: allow
apitemplate_get_accountThe 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…No findings
Why it is in this group
- The name "apitemplate_get_account" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get account and quota
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
apitemplate_get_templateOne 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).No findings
Why it is in this group
- The name "apitemplate_get_template" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get PDF template source
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
apitemplate_list_objectsList 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_…No findings
Why it is in this group
- The name "apitemplate_list_objects" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List generated files
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
apitemplate_list_templatesList the templates of the account (PDF and image): template_id, name, format (PDF or JPEG), status, group and dates.No findings
Why it is in this group
- The name "apitemplate_list_templates" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List templates
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.3.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http apitemplate https://apitemplate.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__apitemplate__apitemplate_get_account",
"mcp__apitemplate__apitemplate_list_templates",
"mcp__apitemplate__apitemplate_get_template",
"mcp__apitemplate__apitemplate_list_objects"
],
"ask": [
"mcp__apitemplate__apitemplate_create_pdf",
"mcp__apitemplate__apitemplate_create_image",
"mcp__apitemplate__apitemplate_create_pdf_from_html",
"mcp__apitemplate__apitemplate_create_pdf_from_markdown",
"mcp__apitemplate__apitemplate_create_pdf_from_url",
"mcp__apitemplate__apitemplate_merge_pdfs"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as apitemplate. Review it before you use it.