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 textapitemplate_create_pdf_from_html에서
  • MEDIUMTool 'apitemplate_create_pdf_from_markdown' description contains placeholder textapitemplate_create_pdf_from_markdown에서
  • LOWTool 'apitemplate_create_pdf_from_html' name length outside 3-30 rangeapitemplate_create_pdf_from_html에서
  • LOWTool 'apitemplate_create_pdf_from_markdown' name length outside 3-30 rangeapitemplate_create_pdf_from_markdown에서
  • LOWTool 'apitemplate_create_pdf_from_url' name length outside 3-30 rangeapitemplate_create_pdf_from_url에서
  • INFOTool description contains placeholder or incomplete textapitemplate_create_pdf_from_html에서
  • INFOTool description contains placeholder or incomplete textapitemplate_create_pdf_from_markdown에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~4,491토큰 (도구 정의)
~3.8 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 3.51%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`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개