CraftMyPDF MCP by usefulapi

Generate PDFs and images from CraftMyPDF templates; read templates, versions and usage.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
98%
Integridad del esquema
92%
Calidad de los nombres
75%
Riesgo de envenenamiento
80%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (6)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool 'craftmypdf_get_template' description contains placeholder texten craftmypdf_get_template
  • LOWTool 'craftmypdf_list_template_versions' name length outside 3-30 rangeen craftmypdf_list_template_versions
  • LOWTool 'craftmypdf_query_template_usage' name length outside 3-30 rangeen craftmypdf_query_template_usage
  • LOWTool 'craftmypdf_create_pdf_from_templates' name length outside 3-30 rangeen craftmypdf_create_pdf_from_templates
  • INFOTool description contains placeholder or incomplete texten craftmypdf_get_template

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

Costo de contexto

~3,111Tokens (definiciones de herramientas)
~1.8 KBTamaño de respuesta típico
Impacto significativo en la atención (2.43% 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": {
    "craftmypdf": {
      "url": "https://craftmypdf.usefulapi.io/mcp"
    }
  }
}

Puntos de conexión remotos

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

Qué puede hacer

Inventario de herramientas

Herramientas (11)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢craftmypdf_get_account_info

The CraftMyPDF account behind the API key: username, quota used (quota_counter) and quota total (quota_max), template count and limit, creation date. Check the quota before generating many documents. GET /get-account-info.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢craftmypdf_list_transactions(limit, offset)

Recent generation transactions of the account, newest first: transaction_ref, type (PDFGEN, PDFPREVIEW, ...), execution time, credits used, time, file size and result status. Use it to see what was billed. GET /list-transactions.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Records to return, 1-300 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 300
    },
    "offset": {
      "description": "Records to skip (default 0). Use next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢craftmypdf_list_templates(limit, offset, group_name)

List the PDF/image templates of the account: template_id, name, status, group, created and updated time. The template_id is what the generation tools need. Read only; templates cannot be edited here. GET /list-templates.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Records to return, 1-300 (default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 300
    },
    "offset": {
      "description": "Records to skip (default 0). Use next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "group_name": {
      "description": "Only templates of this group.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢craftmypdf_get_template(template_id, version, include_body)

One template: its name and the sample JSON data it expects (the placeholders to fill when generating). The full layout body is only returned with include_body (it can be very large and is cut). GET /get-template.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "template_id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{4,64}$",
      "description": "CraftMyPDF template id, e.g. 05f77b2b18ad809a (from craftmypdf_list_templates)."
    },
    "version": {
      "type": "string",
      "pattern": "^\\d{1,6}$",
      "description": "Template version number (from craftmypdf_list_template_versions). Latest version when omitted."
    },
    "include_body": {
      "description": "Also return the template layout JSON (default false; cut at 40000 characters).",
      "type": "boolean"
    }
  },
  "required": [
    "template_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢craftmypdf_list_template_versions(template_id)

The saved versions of a template (version number, description, time, whether it is retained). Use a version number when generating to pin the layout. GET /list-template-versions.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "template_id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{4,64}$",
      "description": "CraftMyPDF template id, e.g. 05f77b2b18ad809a (from craftmypdf_list_templates)."
    }
  },
  "required": [
    "template_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢craftmypdf_query_template_usage(template_ids, start_date, end_date)

Usage statistics (how many generations) of up to 20 templates within an optional date range. Dates are ISO 8601 UTC date-times such as 2026-10-01T00:00:00Z. GET /query-template-usage.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "template_ids": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[A-Za-z0-9_-]{4,64}$",
        "description": "CraftMyPDF template id, e.g. 05f77b2b18ad809a (from craftmypdf_list_templates)."
      },
      "description": "1-20 template ids."
    },
    "start_date": {
      "description": "Start, ISO 8601 UTC, e.g. 2026-10-01T00:00:00Z.",
      "type": "string",
      "maxLength": 40,
      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,3})?)?Z$"
    },
    "end_date": {
      "description": "End, ISO 8601 UTC.",
      "type": "string",
      "maxLength": 40,
      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,3})?)?Z$"
    }
  },
  "required": [
    "template_ids"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢craftmypdf_get_pdf_info(url)

Metadata of a PDF that CraftMyPDF downloads from a public https URL: page count, title, author, creator, producer, dates. May count against the account's rate limit. GET /get-pdf-info.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "maxLength": 2000,
      "description": "Public https URL of a PDF file."
    }
  },
  "required": [
    "url"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴craftmypdf_create_pdf(template_id, data, version, expiration, output_file, ...)

WRITE: uses the CraftMyPDF account's own quota (credits; a successful generation is a billable transaction, typically 1 credit per document, and every call counts even with identical data). Generate ONE PDF from a template and your JSON data. Returns a hosted file URL (never file bytes) that expires after `expiration` minutes, plus the transaction reference and any anchors (page numbers for a table of contents). Look the template up with craftmypdf_list_templates / craftmypdf_get_template first. POST /create with export_type=json.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "template_id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{4,64}$",
      "description": "CraftMyPDF template id, e.g. 05f77b2b18ad809a (from craftmypdf_list_templates)."
    },
    "data": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The JSON object that fills the template's {{placeholders}}, e.g. {\"invoice_number\":\"INV38379\",\"total_amount\":82542.56}. The whole request must stay under about 3.8 MB."
    },
    "version": {
      "type": "string",
      "pattern": "^\\d{1,6}$",
      "description": "Template version number (from craftmypdf_list_template_versions). Latest version when omitted."
    },
    "expiration": {
      "description": "Minutes until the hosted file is deleted from CraftMyPDF's CDN, 1-10080 (default 60; the vendor default is 5).",
      "type": "integer",
      "minimum": 1,
      "maximum": 10080
    },
    "output_file": {
      "description": "File name of the output (default output.pdf).",
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9 _.-]{0,98}$"
    },
    "image_resample_res": {
      "description": "Downsample images to this DPI to shrink the PDF: 72, 150, 300, 600 or 1200.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "template_id",
    "data"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴craftmypdf_create_image(template_id, data, version, expiration, output_type, ...)

WRITE: uses the CraftMyPDF account's own quota (credits; a successful generation is a billable transaction, typically 1 credit per document, and every call counts even with identical data). Generate ONE image (JPEG or PNG) from a template and your JSON data. Returns a hosted file URL (never file bytes) that expires after `expiration` minutes. POST /create-image with export_type=json.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "template_id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{4,64}$",
      "description": "CraftMyPDF template id, e.g. 05f77b2b18ad809a (from craftmypdf_list_templates)."
    },
    "data": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The JSON object that fills the template's {{placeholders}}, e.g. {\"invoice_number\":\"INV38379\",\"total_amount\":82542.56}. The whole request must stay under about 3.8 MB."
    },
    "version": {
      "type": "string",
      "pattern": "^\\d{1,6}$",
      "description": "Template version number (from craftmypdf_list_template_versions). Latest version when omitted."
    },
    "expiration": {
      "description": "Minutes until the hosted file is deleted from CraftMyPDF's CDN, 1-10080 (default 60; the vendor default is 5).",
      "type": "integer",
      "minimum": 1,
      "maximum": 10080
    },
    "output_type": {
      "description": "Image type (default jpeg).",
      "type": "string",
      "enum": [
        "jpeg",
        "png"
      ]
    },
    "output_file": {
      "description": "File name of the output (default output.jpg).",
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9 _.-]{0,98}$"
    }
  },
  "required": [
    "template_id",
    "data"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴craftmypdf_create_pdf_from_templates(templates, data, paging, expiration, output_file)

WRITE: uses the CraftMyPDF account's own quota (credits; a successful generation is a billable transaction, typically 1 credit per document, and every call counts even with identical data). Generate ONE combined PDF from 2-10 templates, each with its own data (or the shared `data`). Costs credits for each template rendered. Returns a hosted file URL that expires after `expiration` minutes. Uses the latest template versions. POST /create-merge with export_type=json.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "templates": {
      "minItems": 2,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "template_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_-]{4,64}$",
            "description": "CraftMyPDF template id, e.g. 05f77b2b18ad809a (from craftmypdf_list_templates)."
          },
          "data": {
            "description": "Data for this template; falls back to the shared data.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "template_id"
        ]
      },
      "description": "2-10 entries, rendered in order."
    },
    "data": {
      "description": "Shared data for entries without their own.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "paging": {
      "description": "Page numbering across the templates: reset (default) restarts at each template, continuous carries on.",
      "type": "string",
      "enum": [
        "continuous",
        "reset"
      ]
    },
    "expiration": {
      "description": "Minutes until the hosted file is deleted from CraftMyPDF's CDN, 1-10080 (default 60; the vendor default is 5).",
      "type": "integer",
      "minimum": 1,
      "maximum": 10080
    },
    "output_file": {
      "description": "File name of the output (default output.pdf).",
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9 _.-]{0,98}$"
    }
  },
  "required": [
    "templates"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴craftmypdf_merge_pdfs(urls, expiration, output_file)

WRITE: uses the CraftMyPDF account's own quota (credits; a successful generation is a billable transaction, typically 1 credit per document, and every call counts even with identical data). Merge 2-10 existing PDFs, given as public https URLs, into ONE PDF. CraftMyPDF downloads the files from your URLs. Returns a hosted file URL that expires after `expiration` minutes. POST /merge-pdfs.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "urls": {
      "minItems": 2,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 2000
      },
      "description": "2-10 public https URLs of PDF files, merged in this order."
    },
    "expiration": {
      "description": "Minutes until the hosted file is deleted from CraftMyPDF's CDN, 1-10080 (default 60; the vendor default is 5).",
      "type": "integer",
      "minimum": 1,
      "maximum": 10080
    },
    "output_file": {
      "description": "File name of the output (default output.pdf).",
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9 _.-]{0,98}$"
    }
  },
  "required": [
    "urls"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada11 herramientas