Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Templated

NPM · MCP-SERVER-TEMPLATED · 2 COMPONENTS

Generate images, videos and PDFs from templates. Manage templates, folders, uploads and fonts.

−3 this week 82 Trust /100

Last scanned (3 hours ago)

Scores higher than 72% of npm servers

Category Design and Media

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 30 of 92 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 27 days ago).Pass
  • Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability83
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3630 tokens (~139/item across 26 items; 25 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management73
  • Stability observed for 22 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (8% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 6 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 27 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
  • Supports UI / widget rendering.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.

  • 4 Nov 26 −4
    • Security disclosure: fail → unverified ▼ functional
    • Stability: pass → 0.70 functional
  • 29 Oct 26 0
    • Stability: 0.97 → pass security
  • 28 Oct 26 0
    • Stability: pass → 0.97 functional
  • 27 Oct 26 0
    • Security disclosure: unverified → fail ▼ functional
  • 26 Oct 26 0
    • Security disclosure: fail → unverified ▼ functional
  • 24 Oct 26 0
    • Security disclosure: unverified → fail ▼ functional
  • 23 Oct 26 0
    • Security disclosure: fail → unverified ▼ functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed npm/mcp-server-templated@1.9.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 92 packages
Packages resolved 92
Stale 30
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 25 exposed · ~3,413 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
clone_template ~81

Copy a template, with all its layers and pages, into a new template in the same account. Use this to make a variation without changing the original. Returns the copy, which keeps the original's name unless 'name' is given.

NameTypeReqDescription
namestring–Name for the cloned template
template_idstringyesThe template ID to clone

No output schema declared.

No examples provided.

create_folder ~49

Create a folder to organize templates in the connected Templated account. Use this when the user wants to group templates. Returns the new folder with its ID.

NameTypeReqDescription
namestringyesFolder name

No output schema declared.

No examples provided.

create_render ~581

Render a Templated template into an image (JPG, PNG or WebP), a PDF or an MP4 video, with new text, images and colors in its layers. Use this when the user wants a finished design from one of their templates, such as a social media post, banner, OG image, certificate or invoice. Templated fills the saved template with the exact values given: this is template rendering, not AI image generation. Pass the template ID and 'layers' keyed by the layer names from get_template_layers; names the template doesn't have are rejected before anything is rendered. Multi-page templates render every page, or only the pages listed in 'pages'. Each output counts toward the account's render usage. Returns the render with its file URL (one render per page for multi-page templates).

NameTypeReqDescription
backgroundstring–Background color in hex format (e.g., #FF0000)
cmykboolean–Use CMYK color mode (PDF only)
durationnumber–Video duration in milliseconds (MP4 only, max 90000)
flattenboolean–Flatten PDF for print-ready documents
formatstring–Output format. Default: jpg
fpsnumber–Frames per second (MP4 only, 1-60)
heightnumber–Custom height in pixels (100-5000)
layersobject–Layer values keyed by layer name, e.g. { "title": { "text": "Hello" }, "photo": { "image_url": "https://..." } }. Each value can set text, image_url, color, background, hide and other layer propertie…
namestring–Custom name for the render
pagesarray–For multi-page templates: the pages to render, each with its own layer values. Each item has 'page' (a page name from get_template_pages) and 'layers' keyed by layer name, like the top-level 'layers'…
scalenumber–Scale factor (0.1-2.0)
templatestringyesThe template ID to render (from list_templates)
transparentboolean–Make background transparent (PNG only)
widthnumber–Custom width in pixels (100-5000)
NameTypeReqDescription
editorUrlstring–Link to edit the template in the Templated editor
formatstring–jpg, png, webp, pdf or mp4
heightnumber––
idstring––
namestring––
pagestring–Page name, for multi-page templates
rendersarray–Present when the call produced several renders (one per page); single renders put their fields at the top level
statusstringyescompleted, pending or failed; for several renders, pending while any of them is
templateIdstring––
templateNamestring––
urlstring–File URL
widthnumber––

No examples provided.

create_template ~367

Create a new template in the connected Templated account from layers, for example a social media post, banner, OG image, certificate or invoice. Use this when none of the existing templates fits or the account has no templates yet. Each layer has a unique name in 'layer' and a 'type': text, image, shape or rating. Shape layers draw rectangles, circles and other shapes from SVG content in 'html'. For a multi-page or multi-size template (several sizes in one template), pass 'pages' in place of 'layers'. Returns the new template; its ID can be rendered right away with create_render.

NameTypeReqDescription
backgroundstring–Template background color (e.g., '#ffffff', 'rgb(255,255,255)', 'transparent')
durationnumber–Default video duration in milliseconds for MP4 renders (e.g., 5000 for 5 seconds). Used as fallback when no duration is specified at render time.
heightnumberyesTemplate height in pixels
layersarray–Layers of a single-page template. Each layer object has 'layer' (its unique name, later used as the key in create_render) and 'type'.
namestringyesTemplate name
pagesarray–Pages for a multi-page or multi-size template (for example an Instagram square, a story and an X landscape version in one template, each with its own width and height). Used in place of top-level 'la…
widthnumberyesTemplate width in pixels

No output schema declared.

No examples provided.

create_upload ~109

Upload an image (JPG, PNG, WebP or SVG, up to 10 MB) from a public URL to the connected Templated account. Use this to keep an image in the account's assets for templates and renders. Returns the upload; its 'path' is the URL to use as image_url. API reference: https://templated.io/docs

NameTypeReqDescription
namestring–Optional name for the upload
urlstringyesPublic URL of the image to upload

No output schema declared.

No examples provided.

delete_folder ~65

Delete a folder from the connected Templated account. The templates inside it are not deleted: they move out of the folder to the top level of the account. Use this when the user asks to remove a folder.

NameTypeReqDescription
folder_idstringyesThe folder ID to delete

No output schema declared.

No examples provided.

delete_font ~77

Permanently delete a custom font from the connected Templated account by family name, including every file uploaded under that name. Templates that use it fall back to another font in later renders. Use this when the user asks to remove a font.

NameTypeReqDescription
font_namestringyesThe font family name to delete, as returned by list_fonts

No output schema declared.

No examples provided.

delete_render ~63

Permanently delete a render from the connected Templated account; it can't be restored. Use this when the user asks to remove a render. Takes the render ID from list_renders and returns a confirmation.

NameTypeReqDescription
render_idstringyesThe render ID to delete

No output schema declared.

No examples provided.

delete_template ~62

Permanently delete a template from the connected Templated account; it can't be restored or rendered afterwards. Renders already created from it are kept. Use this when the user asks to delete a template.

NameTypeReqDescription
template_idstringyesThe template ID to delete

No output schema declared.

No examples provided.

delete_upload ~60

Permanently delete an uploaded image from the connected Templated account; it can't be restored. Use this when the user asks to remove an upload. Takes the upload ID from list_uploads.

NameTypeReqDescription
upload_idstringyesThe upload ID to delete

No output schema declared.

No examples provided.

get_account ~54

Get the connected Templated account's render usage for the current period: renders used (apiUsage), renders included (apiQuota) and the percentage used. Use this to check how many renders are left before a large batch.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_render ~51

Get one render by ID with its status, format, size and file URL. Use this to check whether a render has finished or to find its URL again.

NameTypeReqDescription
render_idstringyesThe render ID
NameTypeReqDescription
editorUrlstring–Link to edit the template in the Templated editor
formatstring–jpg, png, webp, pdf or mp4
heightnumber––
idstring––
namestring––
pagestring–Page name, for multi-page templates
rendersarray–Present when the call produced several renders (one per page); single renders put their fields at the top level
statusstringyescompleted, pending or failed; for several renders, pending while any of them is
templateIdstring––
templateNamestring––
urlstring–File URL
widthnumber––

No examples provided.

get_template ~64

Get one template's details by ID: name, size, background, thumbnail, tags, folder, and layer and page counts. Use this to check a template's size or settings; get_template_layers returns its editable layers.

NameTypeReqDescription
template_idstringyesThe template ID

No output schema declared.

No examples provided.

get_template_layers ~84

List a template's layers with their names, types and current values (text, image_url, colors, fonts, position and size). Use this before create_render: the layer names are the keys create_render accepts in 'layers'. Covers every page of a multi-page template; get_template_pages groups the layers by page.

NameTypeReqDescription
template_idstringyesThe template ID

No output schema declared.

No examples provided.

get_template_pages ~73

List the pages of a multi-page or multi-size template, each with its name, width, height and layers keyed by layer name. Use this to render specific pages with create_render ('pages') or to edit pages with update_template, which accepts the same shape.

NameTypeReqDescription
template_idstringyesThe template ID

No output schema declared.

No examples provided.

list_folders ~100

List the folders in the connected Templated account with the number of templates in each, 25 per page by default (max 100). Use this to find a folder ID for update_folder or delete_folder. Returns the folders plus total and hasMore.

NameTypeReqDescription
limitnumber–Results per page (default: 25, max: 100)
pagenumber–Page number, starting at 0 (default: 0)

No output schema declared.

No examples provided.

list_fonts ~173

List the custom fonts uploaded to the connected Templated account, 25 per page by default (max 100). Templates can also use any Google Font by family name: set include_google_fonts to true to list those too, and query to search by name. Use this to choose a font_family for create_template or update_template, or to find the name for delete_font. Returns the font names plus total and hasMore.

NameTypeReqDescription
include_google_fontsboolean–Also list the Google Fonts available to every template (default: false)
limitnumber–Results per page (default: 25, max: 100)
pagenumber–Page number, starting at 0 (default: 0)
querystring–Only fonts whose name contains this text (case-insensitive)

No output schema declared.

No examples provided.

list_renders ~111

List the renders in the connected Templated account, newest first, 25 per page by default (max 100). Use this to find a render's ID or file URL, for example to merge PDFs with merge_renders. Returns each render's id, url, status, format, size and template.

NameTypeReqDescription
limitnumber–Results per page (default: 25, max: 100)
pagenumber–Page number, starting at 0 (default: 0)

No output schema declared.

No examples provided.

list_template_renders ~101

List the renders created from one template, 25 per page by default (max 100). Use this to find earlier outputs of a template. Returns each render's id, url, status and format.

NameTypeReqDescription
limitnumber–Results per page (default: 25, max: 100)
pagenumber–Page number, starting at 0 (default: 0)
template_idstringyesThe template ID

No output schema declared.

No examples provided.

list_templates ~200

List the templates in the connected Templated account, 25 per page by default (max 100), optionally filtered by name (query), size (width, height) or tags. Use this first to find the template ID for create_render, get_template_layers or update_template. Returns each template's id, name, size, thumbnail, folder, and layer and page counts.

NameTypeReqDescription
heightnumber–Filter by template height
includeLayersboolean–Include each template's layers (a much larger response; get_template_layers reads one template's layers)
limitnumber–Results per page (default: 25, max: 100)
pagenumber–Page number, starting at 0 (default: 0)
querystring–Search query to filter templates by name
tagsstring–Filter by tags (comma-separated)
widthnumber–Filter by template width

No output schema declared.

No examples provided.

list_uploads ~112

List the images uploaded to the connected Templated account, 25 per page by default (max 100). Use this to reuse an uploaded image: its 'path' is a URL that can be set as image_url on an image layer. Returns each upload's id, name, type, size and path.

NameTypeReqDescription
limitnumber–Results per page (default: 25, max: 100)
pagenumber–Page number, starting at 0 (default: 0)

No output schema declared.

No examples provided.

merge_renders ~139

Merge several renders into one PDF, in the order given, for example one certificate or invoice per recipient. Image renders become PDF pages. Use this after creating the individual renders. Each merge counts toward the account's render usage. Returns the URL of the merged PDF. With host set to false the PDF itself is returned inline instead, which only works for PDFs up to 100 KB.

NameTypeReqDescription
hostboolean–true (default): return a URL to the merged PDF. false: return the PDF inline as an embedded file, for PDFs up to 100 KB.
render_idsarrayyesRender IDs to merge, in page order

No output schema declared.

No examples provided.

update_folder ~51

Rename a folder. Use this when the user wants to change a folder's name. Returns the updated folder.

NameTypeReqDescription
folder_idstringyesThe folder ID
namestringyesNew folder name

No output schema declared.

No examples provided.

update_template ~471

Change an existing template: name, description, size, background, default video duration, layers or pages. Use this to edit a design, resize it, or add sizes to a multi-size template. Layers are matched by their 'layer' name: an existing layer is updated in place and a new name is added. Top-level 'layers' apply to the first page; 'pages' reaches the others. With replaceLayers true, layers missing from the request are deleted. To move a layer, send both x and y (a missing coordinate is set to 0). In 'pages', a page name that doesn't exist yet is added and an existing page has its layers updated. On a multi-size template, set width and height per page inside 'pages'; top-level width and height are rejected there because they would resize every page. Returns the updated template.

NameTypeReqDescription
backgroundstring–Template background color
descriptionstring–New template description
durationnumber–Default video duration in milliseconds for MP4 renders (e.g., 5000 for 5 seconds)
heightnumber–New height in pixels. Applies to every page; rejected on multi-size templates (use per-page height inside 'pages')
layersarray–Layer definitions. Each has 'layer' (its unique name) and 'type' (text, image, shape or rating).
namestring–New template name
pagesarray–Pages for a multi-page or multi-size template (for example an Instagram square, a story and an X landscape version in one template, each with its own width and height). Used in place of top-level 'la…
replaceLayersboolean–true: delete the layers (on the pages being updated) that are missing from the request. false (default): keep them.
template_idstringyesThe template ID to update
widthnumber–New width in pixels. Applies to every page; rejected on multi-size templates (use per-page width inside 'pages')

No output schema declared.

No examples provided.

upload_font ~115

Upload a custom font file (TTF, OTF, WOFF or WOFF2) from a public URL to the connected Templated account under the given family name. Use this when a design needs a font that isn't a Google Font; templates then use it as font_family. Returns the font. API reference: https://templated.io/docs

NameTypeReqDescription
namestringyesFont family name
urlstringyesURL of the font file (TTF, OTF, WOFF, WOFF2)

No output schema declared.

No examples provided.

Install

How do I install the Templated MCP server?

Templated runs locally as an npm package, launched with npx -y mcp-server-templated. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · mcp-server-templated

# add to Claude Code
claude mcp add templated-io-mcp-server-templated -- npx -y mcp-server-templated
Common questions

What is the Templated MCP server?

Templated is an MCP server listed in the public MCP registry as io.github.templated-io/mcp-server-templated. Generate images, videos and PDFs from templates. Manage templates, folders, uploads and fonts. This page covers its npm package (mcp-server-templated).

Is the Templated MCP server safe to use?

Templated scores 82 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Templated MCP server expose?

Templated exposes 25 tools: create_render, get_render, list_renders, delete_render, merge_renders, and 20 more. Their descriptions and schemas cost roughly 3,413 tokens of context every time the server is loaded.

Is the Templated MCP server still maintained?

Templated is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Templated MCP server under?

Templated declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.