APITemplate.io MCP by usefulapi

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

¿Debería usar esto?

Calidad y seguridad

B
Calidad de la descripción
96%
Integridad del esquema
91%
Calidad de los nombres
74%
Riesgo de envenenamiento
60%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (8)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool 'apitemplate_create_pdf_from_html' description contains placeholder texten apitemplate_create_pdf_from_html
  • MEDIUMTool 'apitemplate_create_pdf_from_markdown' description contains placeholder texten apitemplate_create_pdf_from_markdown
  • LOWTool 'apitemplate_create_pdf_from_html' name length outside 3-30 rangeen apitemplate_create_pdf_from_html
  • LOWTool 'apitemplate_create_pdf_from_markdown' name length outside 3-30 rangeen apitemplate_create_pdf_from_markdown
  • LOWTool 'apitemplate_create_pdf_from_url' name length outside 3-30 rangeen apitemplate_create_pdf_from_url
  • INFOTool description contains placeholder or incomplete texten apitemplate_create_pdf_from_html
  • INFOTool description contains placeholder or incomplete texten apitemplate_create_pdf_from_markdown

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~4,491Tokens (definiciones de herramientas)
~3.8 KBTamaño de respuesta típico
Impacto significativo en la atención (3.51% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

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

Puntos de conexión remotos

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

Qué puede hacer

Inventario de herramientas

Herramientas (10)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢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.

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada10 herramientas