APITemplate.io MCP by usefulapi

Generate PDFs and images with APITemplate.io from templates, HTML, Markdown or a URL.

我該用這個嗎

品質與安全性

B
說明品質
96%
結構描述完整度
91%
命名品質
74%
汙染風險
60%
權限相符程度
100%
協定合規性
100%

發現項目(8)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool 'apitemplate_create_pdf_from_html' description contains placeholder text在 apitemplate_create_pdf_from_html 中
  • MEDIUMTool 'apitemplate_create_pdf_from_markdown' description contains placeholder text在 apitemplate_create_pdf_from_markdown 中
  • LOWTool 'apitemplate_create_pdf_from_html' name length outside 3-30 range在 apitemplate_create_pdf_from_html 中
  • LOWTool 'apitemplate_create_pdf_from_markdown' name length outside 3-30 range在 apitemplate_create_pdf_from_markdown 中
  • LOWTool 'apitemplate_create_pdf_from_url' name length outside 3-30 range在 apitemplate_create_pdf_from_url 中
  • INFOTool description contains placeholder or incomplete text在 apitemplate_create_pdf_from_html 中
  • INFOTool description contains placeholder or incomplete text在 apitemplate_create_pdf_from_markdown 中

根據工具定義與協定合規性的自動化分析。

上下文成本

~4,491Token(工具定義)
~3.8 KB典型回應大小
顯著的注意力影響(128k 上下文的 3.51%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "apitemplate": {
      "url": "https://apitemplate.usefulapi.io/mcp"
    }
  }
}

遠端端點

https://apitemplate.usefulapi.io/mcpstreamable-http

它能做什麼

工具清單

工具(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.

輸入結構描述

{
  "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.

輸入結構描述

{
  "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.

輸入結構描述

{
  "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.

輸入結構描述

{
  "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).

輸入結構描述

{
  "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.

輸入結構描述

{
  "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).

輸入結構描述

{
  "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).

輸入結構描述

{
  "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).

輸入結構描述

{
  "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).

輸入結構描述

{
  "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"
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本10 個工具