Templated MCP Server
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Templated MCP ServerCreate an image from my Instagram Post template with the headline 'Big Sale'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Templated MCP Server
MCP (Model Context Protocol) server for Templated - the API for automated image, video, and PDF generation.
This server enables AI assistants like Claude, Cursor, and ChatGPT to interact with your Templated account - generate renders, manage templates, upload assets, and access all API features using natural language.
Features
Render Generation: Create images (JPG, PNG, WebP), videos (MP4), and PDFs from templates
Template Management: List, create, update, clone, and delete templates
Layer Inspection: Get template layers to understand what can be customized
Asset Management: Upload and manage images, videos, and custom fonts
Folder Organization: Create and manage folders for templates
Related MCP server: HeyGen MCP Server
Quick Start
Get Your API Key
Sign up at app.templated.io
Go to your API Key page
Copy your API key
Connection Options
Option 1: Remote Server (Recommended)
Use our hosted MCP server - no installation required, always up-to-date.
Endpoint: https://mcp.templated.io/mcp (OAuth login) — or https://mcp.templated.io/mcp?apiKey=YOUR_API_KEY for automation
Claude (web, desktop, mobile)
Templated is listed in the Claude connectors directory: open claude.ai/directory/templatedio (or Customize → Connectors and search for Templated), click Connect and sign in to your Templated account. To add it as a custom connector instead, use Settings → Connectors → Add custom connector with https://mcp.templated.io/mcp.
Claude Code
claude mcp add --transport http templated https://mcp.templated.io/mcpThen run /mcp inside Claude Code and sign in when prompted.
Cursor IDE
Or add it manually to ~/.cursor/mcp.json. Either way, click Login when Cursor asks and sign in to Templated:
{
"mcpServers": {
"templated": {
"url": "https://mcp.templated.io/mcp"
}
}
}For automations, use https://mcp.templated.io/mcp?apiKey=your-api-key-here as the URL instead.
ChatGPT
Go to Settings → Connected Apps → Add MCP Server
Enter URL:
https://mcp.templated.io/mcpSet Authentication to OAuth and sign in to Templated when prompted
Click Create
Alternative (automations): enter https://mcp.templated.io/mcp?apiKey=your-api-key-here and set Authentication to No Auth instead.
Option 2: Local Server
Run the MCP server locally on your machine. Requires Node.js 18+.
Claude Desktop
To run the server locally instead of using the remote connector, add to your config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"templated": {
"command": "npx",
"args": ["mcp-server-templated"],
"env": {
"TEMPLATED_API_KEY": "your-api-key-here"
}
}
}
}Cursor IDE (Local)
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"templated": {
"command": "npx",
"args": ["mcp-server-templated"],
"env": {
"TEMPLATED_API_KEY": "your-api-key-here"
}
}
}
}Manual Installation
# Using npx (no install needed)
npx mcp-server-templated
# Or install globally
npm install -g mcp-server-templatedAuthentication
The remote server supports two ways to authenticate:
OAuth 2.1 via the Templated authorization server — used automatically by interactive clients (Claude, ChatGPT, Cursor, Claude Code) when you connect to
https://mcp.templated.io/mcpwithout an API key.API key via
?apiKey=YOUR_API_KEYon the URL or anAuthorization: Bearer YOUR_API_KEYheader — used for automations and multi-tenant scoping (folderId/externalId).
Available Tools
Render Operations
Tool | Description |
| Create an image, video, or PDF from a template |
| Get details of a specific render |
| List all renders in your account |
| Delete a render |
| Merge multiple PDF renders into one |
Template Operations
Tool | Description |
| List all templates (with search/filter) |
| Get template details |
| Get all layers of a template |
| Get pages of a multi-page template |
| Create a new template (single-page via |
| Update an existing template (add or edit pages via |
| Clone a template (optional new |
| Delete a template |
| List renders from a template |
Folder Operations
Tool | Description |
| List all folders |
| Create a new folder |
| Rename a folder |
| Delete a folder |
Asset Operations
Tool | Description |
| List uploaded assets |
| Upload a file from URL |
| Delete an upload |
| List custom fonts |
| Upload a custom font |
| Delete a custom font by name |
Account
Tool | Description |
| Get render usage for the current period |
Example Usage
Once configured, you can ask your AI assistant to:
"List my templates"
"Create a render from template [ID] with the title set to 'Hello World'"
"Generate a PDF certificate with the name 'John Doe'"
"What layers does template [ID] have?"
"Create a new template called 'Social Post' with a title and image layer"
"Clone my Instagram template and rename it"
"Upload this image to my account"
"Show my API usage and account info"
Creating a Render
"Create a render using template abc-123 with these changes:
- Set the 'title' layer text to 'Welcome!'
- Set the 'photo' layer image to https://example.com/photo.jpg
- Output as PNG with transparent background"Claude will use the create_render tool with:
{
"template": "abc-123",
"format": "png",
"transparent": true,
"layers": {
"title": { "text": "Welcome!" },
"photo": { "image_url": "https://example.com/photo.jpg" }
}
}Development
# Clone the repository
git clone https://github.com/templated-io/mcp-server-templated.git
cd mcp-server-templated
# Install dependencies
npm install
# Build
npm run build
# Run in stdio mode (for local MCP clients)
TEMPLATED_API_KEY=your-key node dist/index.js
# Run in HTTP mode (for remote access)
PORT=3456 node dist/index.js
# Then access: http://localhost:3456/mcp?apiKey=your-keyTesting with MCP Inspector
npx @modelcontextprotocol/inspector npx mcp-server-templatedResources
License
MIT
Available Tools
25 toolsclone_templateCInspect
Create a copy of an existing template
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name for the cloned template | |
| template_id | Yes | The template ID to clone |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds nothing beyond the annotations: it does not say whether layers, pages, or renders are duplicated, whether the clone is independent of the source, or what happens if name is omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short, front-loaded sentence with no filler. It is efficient, though arguably too terse for a mutation tool with inheritance semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering safety, a full schema, and no output schema, the essentials are present. However, for a clone operation the key unknown — what exactly is copied and whether the copy is linked to the original — is never addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both template_id and name are documented in the schema. The description adds no extra meaning, such as whether name defaults to the source template's name. Baseline 3 applies when the schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: creating a copy of an existing template. This implicitly distinguishes it from create_template (which makes a new template rather than duplicating one), but the differentiation is left to inference rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to clone vs. use create_template, no prerequisites, and no mention of what the clone inherits. The agent must guess from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_folderBInspect
Create a new folder to organize templates
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Folder name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-destructive, non-open-world write, so the safety profile is covered. The description adds only that folders organize templates and omits behavior an agent might care about, such as what happens on duplicate names or whether the new folder is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no waste. It is efficient, though minimal enough that it earns no extra credit for structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter create tool with annotations covering the safety profile and full schema coverage, the description is minimally adequate. It leaves duplicate-handling and post-create behavior unspecified, but there is no output schema requiring explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single 'name' parameter with 100% schema description coverage, so the schema already documents it. The description adds no naming constraints, uniqueness rules, or format guidance beyond the schema, which is the baseline 3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource ('Create a new folder') plus a stated purpose ('to organize templates'). It distinguishes itself from list_folders/update_folder/delete_folder by the create verb, though it does not name any sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives like update_folder or the fact that folders are the organizing unit for templates. The agent must infer all of this from the verb alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_renderAInspect
Create a render (image, video, or PDF) from a template. This is the main tool for generating content. Supports formats: jpg, png, webp, pdf, mp4.
| Name | Required | Description | Default |
|---|---|---|---|
| fps | No | Frames per second (MP4 only, 1-60) | |
| cmyk | No | Use CMYK color mode (PDF only) | |
| name | No | Custom name for the render | |
| scale | No | Scale factor (0.1-2.0) | |
| width | No | Custom width in pixels (100-5000) | |
| format | No | Output format. Default: jpg | |
| height | No | Custom height in pixels (100-5000) | |
| layers | No | Layer modifications. Keys are layer names, values are objects with properties like: text, image_url, color, background, hide, animation, etc. The 'animation' property (MP4 only) is an object with: 'in' (entrance: type=slide|fade|zoom|rotate, direction, duration, writingStyle), 'loop' (type=spin|pulse, duration), 'out' (exit: type=slide|fade|zoom, direction, duration), 'start' (ms when layer appears), 'end' (ms when layer disappears). All animation durations are in milliseconds. | |
| flatten | No | Flatten PDF for print-ready documents | |
| duration | No | Video duration in milliseconds (MP4 only, max 90000) | |
| template | Yes | The template ID to render | |
| background | No | Background color in hex format (e.g., #FF0000) | |
| transparent | No | Make background transparent (PNG only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds format coverage but omits rendering behavior that matters here — whether the render is produced asynchronously, that a render ID/status is returned, or any rate/cost implications for video (duration max 90000ms).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero waste, with the core action and supported formats front-loaded. Nothing redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter mutation tool with nested objects and no output schema, the description never says what the call returns or that the result may need to be polled via get_render/list_renders. Given the rich schema, the parameter side is covered, but the post-call workflow gap leaves it only adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema documents all 13 parameters in detail, including the nested layers/animation object. The description's format list duplicates the format enum rather than adding meaning, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a render') and enumerates the output media types (image, video, PDF) with concrete formats. This is clearly separable from siblings like merge_renders, get_render, and create_upload without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'This is the main tool for generating content' implies when to use it, but gives no exclusions or alternatives — e.g. when to prefer merge_renders for combining renders or get_template_layers for inspecting a template first. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_templateAInspect
Create a new template programmatically with layers. IMPORTANT: Each layer must have a 'layer' field (unique identifier/name), not 'name'. Valid layer types are: 'text', 'image', 'shape', 'rating'. Use 'shape' for rectangles, circles, and other shapes - shapes require an 'html' field with SVG content. For a multi-page or multi-size template (several sizes in one template), pass 'pages' instead of 'layers': each page carries its own width/height and its layers as an object keyed by layer name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Template name | |
| pages | No | Pages for multi-page or multi-size templates (e.g. Instagram square, story and X landscape in ONE template, each with its own width/height). Use this INSTEAD of top-level 'layers'. Each page: 'page' (unique name), optional 'width'/'height' (fall back to the template size), and 'layers' as an OBJECT keyed by layer name (NOT an array). Same shape as get_template_pages returns. | |
| width | Yes | Template width in pixels | |
| height | Yes | Template height in pixels | |
| layers | No | Array of layer objects. Each layer MUST have 'layer' (unique name) and 'type' fields. | |
| duration | No | 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. | |
| background | No | Template background color (e.g., '#ffffff', 'rgb(255,255,255)', 'transparent') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the write/no-destroy safety profile is covered. The description adds pitfall warnings about field naming and layer typing, but says nothing about side effects (e.g. whether renders are triggered), permissions, quotas, or what the call returns, so it adds only moderate context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence and the remaining sentences are conditional caveats, each earning its place. It is somewhat dense in the back half but contains no filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex nested write tool with no output schema, the description covers input construction well but omits return values entirely — an agent cannot tell whether it gets back a template ID needed for follow-on renders. It also does not address the relationship between top-level width/height and per-page sizes beyond a brief note.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces the most error-prone semantics ('layer' not 'name', valid types, shape requires 'html', pages vs layers), but these points largely restate what the schema already documents, so it adds little beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource ('Create a new template programmatically with layers'), which cleanly separates it from siblings like clone_template, update_template, and get_template. It also scopes the operation to layer-bearing templates, so an agent knows exactly what this call produces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives conditional structural guidance ('For a multi-page or multi-size template, pass pages instead of layers'), which helps the agent shape the call. However, it never states when to choose this tool over clone_template or update_template, nor any prerequisites, so tool-selection guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_uploadCInspect
Upload a file from a URL
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL of the file to upload | |
| name | No | Optional name for the upload |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the mutation and network profile is covered. The description adds nothing further—it doesn't explain what the upload produces, where it lands, or any auth/rate constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short, front-loaded sentence with no waste. It is efficient, though the brevity borders on under-specification for a write operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so return values needn't be explained, but the description still omits what the operation does with the uploaded file and how it relates to the render/upload ecosystem. For a 2-param open-world write tool, more behavioral context is warranted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both url and name are already documented in the schema. The description adds no syntax, format, or constraint detail beyond the structured fields, making baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Upload a file from a URL") that an agent can act on. However, it does not distinguish itself from siblings like upload_font, and it conflicts slightly with the annotation title "Upload Image from URL" (file vs. image), leaving the accepted resource type ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as upload_font or list_uploads, nor any prerequisites or exclusions. The agent must infer usage entirely from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_folderCDestructiveInspect
Delete a folder
| Name | Required | Description | Default |
|---|---|---|---|
| folder_id | Yes | The folder ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=false, so the safety profile is covered by structured data. The description adds nothing on top: it does not say whether deletion is permanent, whether contained renders/uploads/templates are cascaded or orphaned, or what permissions are required — all material unknowns for a destructive folder operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three words long and front-loaded, but this is under-specification rather than conciseness. As in the calibration case of a bare 'Process' description, extreme brevity here reflects missing content, not efficient editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive operation with no output schema, the description should at minimum address permanence, cascade behavior on folder contents, and any permission prerequisites. Annotations cover the destructive flag, but the behavioral and routing gaps leave an agent without enough to invoke this safely or prefer it over siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter at 100% schema description coverage ('The folder ID to delete'), the schema fully documents the input, so the baseline of 3 applies. The description adds no format, source, or lookup guidance for obtaining folder_id, but nothing is missing that the schema does not already supply.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete a folder' is a verbatim restatement of the tool name and title, conveying no information beyond them. It does not distinguish this tool from the several other delete_* siblings (delete_upload, delete_font, delete_render, delete_template), which is the only thing an agent actually needs to differentiate here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus delete_template, delete_upload, or the other deletion siblings, nor any stated preconditions (e.g. that a folder must be empty or that contents are removed with it). The agent is left to infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_fontBDestructiveInspect
Delete a custom font
| Name | Required | Description | Default |
|---|---|---|---|
| font_name | Yes | The font family name to delete, as returned by list_fonts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered structurally. The description adds only the 'custom' scope constraint; it says nothing about irreversibility, whether renders using the font are affected, or any confirmation requirement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four words, front-loaded verb+object, zero filler. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter operation with full schema coverage and annotations declaring the destructive profile, the minimum needed to invoke correctly is present. It falls short only on consequences and downstream effects, which a destructive tool would ideally mention.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents font_name with a pointer to list_fonts as the source of valid values. The description adds no parameter meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Delete) and resource (custom font), and the 'custom' qualifier usefully narrows scope to user-uploaded fonts rather than built-ins. It does not explicitly contrast with sibling delete_* tools, but the resource name is distinct enough to disambiguate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to use this versus alternatives, no prerequisites, and no warning about consequences despite it being an irreversible destructive operation. The only guidance is implicit from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_renderCDestructiveInspect
Delete a specific render
| Name | Required | Description | Default |
|---|---|---|---|
| render_id | Yes | The render ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds nothing beyond that: it does not say whether the delete is permanent, what happens to associated uploads/templates, or what errors occur on a missing render_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with no filler and the verb-resource pair front-loaded. It is efficient, though its brevity is partly a symptom of under-specification rather than disciplined conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, single-parameter tool with no output schema, the annotations carry the safety hint, but the description omits irreversibility and post-deletion behavior that an agent should know before invoking a delete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter (render_id) is documented in the schema as 'The render ID to delete'. The description adds no format or source hints for obtaining the ID, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete) and resource (render), which cleanly separates it from sibling delete_folder, delete_upload, delete_font, and delete_template. However, it offers no further scope detail (e.g., what a render is, whether deletion is scoped to a workspace) to differentiate it beyond the resource noun.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, no mention of alternatives or the consequences of deleting. The agent gets no signal about whether this is reversible, whether dependent artifacts are affected, or when a different tool should be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_templateCDestructiveInspect
Delete a template
| Name | Required | Description | Default |
|---|---|---|---|
| template_id | Yes | The template ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds nothing beyond that: it does not state whether deletion is permanent, whether it cascades to associated renders/layers, or whether any auth/permission is needed for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with zero waste, but it is under-specified rather than well-structured—there is no front-loaded risk warning or scope detail that a destructive tool would benefit from.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no output schema, the description is too thin: it omits cascade effects, irreversibility, confirmation requirements, and permission needs. Annotations cover the read/write nature but not the operational consequences an agent needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single template_id parameter, so the schema already documents it fully. The description adds no format, source, or lookup guidance beyond what the schema provides, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Delete') and resource ('a template'), clearly distinct from siblings like get_template, update_template, and clone_template. However, it offers no explicit differentiation text and does not clarify scope (e.g., whether deleting a template also removes its renders or layers).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no mention of prerequisites (e.g., whether the template must be empty or unused), and no warning about consequences. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_uploadCDestructiveInspect
Delete an uploaded asset
| Name | Required | Description | Default |
|---|---|---|---|
| upload_id | Yes | The upload ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this mutates and destroys data. The description adds nothing on top of that: it does not say whether deletion is permanent, whether associated renders are also removed, or whether special permissions are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero waste. It is well-structured and appropriately terse, though its brevity borders on under-specification for a destructive operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete tool whose annotations already flag destructiveness, the description is minimally sufficient. Still missing is any statement of consequences (irreversibility, cascading deletion of related assets), which matters for a destructive call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter (upload_id) is fully documented in the schema itself. The description mentions no parameter details, so it adds nothing beyond the structured field; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete an uploaded asset'), so an agent knows exactly what operation it performs. However, it offers no differentiation from similarly-named siblings like delete_render, delete_font, delete_folder, or delete_template, which follow the same pattern.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the other delete tools or the upload lifecycle tools (list_uploads, create_upload). No preconditions, no mention of what must exist first, and no exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_accountARead-onlyInspect
Get the connected account's render usage for the current period (renders used and renders included)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds the period scope ('current period') and names the returned metrics (renders used, renders included), which is the kind of context the annotations do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the core action and the scope up front, followed by the two returned values in parentheses. No filler and nothing that could be trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read with no output schema, the description supplies the key return fields, so an agent can act without further context. It stops short of stating units, reset timing, or whether 'included' is a plan limit, which would make it fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool is 4. The parenthetical clarifies what the returned quantities mean rather than how to call it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and a precisely scoped resource: the connected account's render usage for the current period. It even narrows the fuzzy tool name 'get_account' to render usage/quota, so an agent knows exactly what it gets back without opening a schema that has no parameters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied — call this when you need to check quota or consumption against plan limits — but there is no explicit when/when-not guidance and no mention of alternatives among the render/list siblings. Adequate but not directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_renderARead-onlyInspect
Retrieve a specific render by its ID to get the status and file URL
| Name | Required | Description | Default |
|---|---|---|---|
| render_id | Yes | The render ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds that the call returns status and file URL, which is meaningful because there is no output schema, but it omits behavior around not-found errors or pending/incomplete renders.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, front-loading the verb and resource before the purpose clause. Nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with annotations covering safety, this is nearly complete, and it partially compensates for the absent output schema by naming the returned fields. It could still say what happens when the render is still processing or the ID is invalid.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with 100% schema description coverage, so the schema already documents render_id. The description repeats 'by its ID' without adding format, source, or provenance details, placing it at the baseline for fully-covered schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (retrieve) and resource (render) scoped by ID, and names what is returned (status and file URL). It implicitly contrasts with list_renders by saying 'a specific render by its ID', but never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by its ID to get the status and file URL' implies the usage context (checking one render's progress/output), which is enough to distinguish it from list_renders. No explicit when-not guidance, no mention of polling or what to do if the render is not finished.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_templateBRead-onlyInspect
Retrieve a specific template by ID
| Name | Required | Description | Default |
|---|---|---|---|
| template_id | Yes | The template ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds nothing beyond that - no error behavior for missing IDs, no note about what a template contains. It neither contradicts nor enriches the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the verb and key front-loaded, no waste. It is appropriately sized for a trivial single-parameter read, though it is arguably too terse to carry any useful extra context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with full annotation coverage and 100% schema description coverage, this is essentially complete: the agent knows what it does, what it takes, and that it is safe. No output schema exists, so return-value detail is the only real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is only one parameter ('template_id'), so the schema fully documents the input. The description's 'by ID' adds no meaning beyond what the schema provides; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (retrieve) and resource (template) with the lookup key (ID). Clear enough to distinguish from write siblings like create_template or update_template, but offers no differentiation from closely related readers such as get_template_layers, get_template_pages, or list_templates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus list_templates (to find an ID) or the layer/page readers. No prerequisites or prerequisites context. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_template_layersARead-onlyInspect
Get all layers of a template. Use this to understand what layers can be modified when creating a render.
| Name | Required | Description | Default |
|---|---|---|---|
| template_id | Yes | The template ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds useful semantics (layers are the modifiable units when rendering) but says nothing about return shape, ordering, or pagination behavior. With annotations carrying the behavioral burden, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the core action is front-loaded and the usage hint follows immediately. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read tool with full annotation coverage and no output schema, the description supplies both the action and its motivation. Nothing essential is missing, though a note on what a 'layer' contains would round it out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, template_id, and the schema documents it at 100% coverage ('The template ID'). The description adds no format, sourcing, or constraint details beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get all layers of a template') and adds the downstream purpose (understanding modifiable layers for a render). It is clearly distinguishable from siblings like get_template_pages, though it does not name an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives a concrete context for use: retrieving layers before creating a render so you know what can be modified. It stops short of stating when not to use it or naming an alternative tool, so it is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_template_pagesBRead-onlyInspect
Get all pages of a multi-page template
| Name | Required | Description | Default |
|---|---|---|---|
| template_id | Yes | The template ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds that all pages are returned for multi-page templates, but says nothing about ordering, pagination, or failure modes for single-page or missing templates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler that states exactly what is returned and under what condition (multi-page templates).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with one fully documented parameter, an accurate safety annotation, and no output schema, the description covers what an agent minimally needs. It could be more complete by noting behavior for single-page templates, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single template_id parameter is documented in the schema as 'The template ID'. The description adds no format, constraints, or accepted-value detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (pages of a template), and clarifies the scope ('all pages of a multi-page template'). It is distinguishable from get_template and get_template_layers by resource, though it does not explicitly name those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus get_template or get_template_layers, nor any prerequisites or exclusions. The agent must infer usage from the name and sibling list alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_foldersBRead-onlyInspect
List all folders in the account
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| limit | No | Results per page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds that the scope is the whole account (no folder-level filtering), which is useful, but it says nothing about pagination behavior despite exposing page/limit parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, which is appropriate for a simple list operation. It is efficient but borders on under-specified rather than maximally concise-with-value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity read tool with full annotation coverage and no output schema, the essentials are present. Still, the account-wide scope combined with paginated parameters without any return/pagination guidance leaves a small gap an agent would have to discover empirically.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (page, limit) are documented in the schema itself, so baseline 3 applies. The description adds no syntax, defaults, or ordering details beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List all folders') with account-wide scope, so the agent knows exactly what entity is returned. However, it does nothing to distinguish itself from the sibling list tools (list_renders, list_uploads, list_fonts) or from folder mutations like create_folder/delete_folder/update_folder beyond the obvious verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and no alternatives or exclusions. With three sibling folder tools present, the agent must infer on its own that this is the read-only enumeration path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_fontsBRead-onlyInspect
List all custom fonts uploaded to the account
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| limit | No | Results per page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered without the description. The description usefully narrows scope to 'custom fonts uploaded to the account', but says nothing about ordering, pagination defaults, or result size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. Every word contributes to defining the resource and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only listing tool with no output schema and annotations covering the safety profile, the description plus schema gives enough to invoke it correctly. Only pagination behavior remains unstated, a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both page and limit are already documented in the schema. The description adds no extra semantics for these parameters, which matches the baseline expectation when the schema carries the burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (List) and resource (custom fonts) scoped to the account, which is more precise than the bare name. It does not differentiate from sibling tools such as upload_font or delete_font, but the intent is unmistakable for an agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no mention of pagination expectations, and no prerequisites or exclusions. The agent must infer usage purely from the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rendersCRead-onlyInspect
List all renders in the account
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 0) | |
| limit | No | Results per page (default: 25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered elsewhere. The description restates the listing scope without adding any behavioral context such as pagination semantics, result ordering, or what a render record contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with zero filler. It is efficient, though the near-total absence of detail means there was little to structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with full parameter documentation and no output schema, this is minimally adequate. It still leaves open how it relates to list_template_renders and what the returned renders represent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with both optional parameters (page, limit) documented including defaults, so the schema does the heavy lifting. The description adds nothing about pagination behavior, which is a baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (renders) with an explicit scope (in the account), which is the key differentiator from the sibling list_template_renders, which is template-scoped. It does not, however, explicitly name or contrast against that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no mention of alternatives, even though list_template_renders and get_render exist in the sibling set and clearly overlap in the render-listing space. The agent must infer that this is the account-wide variant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_template_rendersBRead-onlyInspect
List all renders created from a specific template
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| limit | No | Results per page | |
| template_id | Yes | The template ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds nothing beyond that — it does not mention pagination behavior despite having page/limit parameters, nor ordering, defaults, or result shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the resource and scoping constraint front-loaded and no filler. It is terse rather than padded, though it errs toward under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only list tool with 100% schema coverage and annotations carrying the safety profile, the description is minimally sufficient. It still omits pagination behavior and whether results are ordered or bounded, which matters for a tool exposing page/limit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so page, limit, and template_id are all documented in the schema. The description only restates the template scoping that template_id already conveys, adding no syntax, format, or default-value detail. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List), resource (renders), and scope (created from a specific template), which is more precise than the sibling list_renders. However, it never names the sibling it contrasts with, so the agent must infer the distinction from the scope phrase alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'from a specific template' implies this is the tool to use when renders must be scoped to one template, but there is no explicit when-to-use statement, no mention of list_renders as the unscoped alternative, and no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_templatesARead-onlyInspect
List all templates in the account. Use this to find template IDs for rendering.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 0) | |
| tags | No | Filter by tags (comma-separated) | |
| limit | No | Results per page (default: 25) | |
| query | No | Search query to filter templates by name | |
| width | No | Filter by template width | |
| height | No | Filter by template height | |
| includeLayers | No | Include layer information in response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered structurally. The description adds no further behavioral detail — notably it does not acknowledge that results are paginated despite page/limit parameters, and "List all templates" slightly oversells the default 25-per-page behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler, and the core purpose is front-loaded before the usage hint. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with full schema coverage and read-only annotations, the description is adequate, and the ID-discovery hint is useful. With no output schema, however, it says nothing about the shape of the returned template records or the pagination envelope, leaving the agent to infer those.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters (page, tags, limit, query, width, height, includeLayers) are already documented in the schema. The description adds no syntax, default, or filtering semantics beyond what the schema supplies, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("List all templates in the account") with a clear scope, so an agent immediately knows what it returns. It does not, however, differentiate itself from close siblings such as get_template, list_template_renders, or the template-filtering behavior that get_template_pages implies, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use this to find template IDs for rendering" gives an explicit, actionable reason to call this tool, which is more than implied usage. It names no alternatives or when-not conditions (e.g., use get_template when you already have an ID), so it does not reach the 5 level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_uploadsBRead-onlyInspect
List all uploaded assets (images, videos)
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| limit | No | Results per page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds content types (images, videos) but omits pagination behavior, rate limits, and result shape, adding only modest context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It is appropriately sized for a simple list tool and puts the core operation first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with fully documented parameters, the description is minimally adequate. However, it does not clarify pagination behavior or the shape of returned uploads, and no output schema exists to cover that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both page and limit fully documented in the input schema. The description adds no parameter meaning beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb 'List' and resource 'uploaded assets', scoping to images and videos. It does not explicitly differentiate itself from sibling list_* tools such as list_renders, list_fonts, or list_templates, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, prerequisites, or alternatives are provided. The agent can infer this is an unfiltered upload listing, but nothing in the text routes it versus sibling list tools or explains when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_rendersBInspect
Merge multiple PDF renders into a single PDF document
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | If true, returns a hosted URL. If false, returns the file directly | |
| render_ids | Yes | Array of render IDs to merge |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already tell the agent this is a non-read-only, non-destructive, closed-world operation. The description adds nothing beyond that: it doesn't say whether the source renders are preserved, how the merged output is ordered, or whether this is synchronous for large sets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. Every word earns its place and the action is stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with full schema coverage and a safety-carrying annotation set, the description is minimally adequate. However, merge semantics that an agent would want — ordering of the source documents and the fate of the originals — are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both render_ids and the host flag are already documented in the schema. The description adds no additional meaning (e.g., that render_ids order determines page order), so the baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (merge) and resource (PDF renders) with a clear outcome (single PDF document). It is distinguishable from sibling read/create tools, though it never explicitly names or contrasts with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when this tool should be used versus alternatives (e.g., get_render for a single render, or create_render), nor any prerequisite such as the renders needing to already exist or be complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_folderCDestructiveInspect
Update a folder's name
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | New folder name | |
| folder_id | Yes | The folder ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, covering the safety profile. The description adds nothing beyond restating the field being changed: it does not note that the previous name is overwritten, whether confirmation is required, or what happens on an invalid folder_id. For a mutation flagged destructive, this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, which is appropriately sized for a two-parameter tool. It is terse to the point of under-specification, but that is a completeness issue rather than a conciseness flaw.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (2 required params, no output schema, no nesting) and annotations carry the safety profile, so the description is minimally adequate. Still, an agent has no information on failure modes, permission needs, or whether the rename is reversible.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both folder_id and name ('New folder name'). The description only echoes 'name' and ignores folder_id entirely, adding no syntax, format, or constraint detail beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Update a folder's name') that clearly distinguishes it from the many template/render/upload update siblings. However, it offers no explicit sibling differentiation beyond the resource name, so it stays at a solid 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives (e.g. create_folder or delete_folder). The agent gets the what but not the when.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_templateADestructiveInspect
Update an existing template. IMPORTANT: Each layer must have a 'layer' field (unique identifier), not 'name'. Valid types: 'text', 'image', 'shape', 'rating'. For multi-page templates use 'pages': a page name that does not exist yet is ADDED to the template, an existing one has its layers merged (or replaced with replaceLayers). To change page sizes on a multi-size template set width/height per page inside 'pages'; top-level width/height are rejected there because they would resize every page.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New template name | |
| pages | No | Pages for multi-page or multi-size templates (e.g. Instagram square, story and X landscape in ONE template, each with its own width/height). Use this INSTEAD of top-level 'layers'. Each page: 'page' (unique name), optional 'width'/'height' (fall back to the template size), and 'layers' as an OBJECT keyed by layer name (NOT an array). Same shape as get_template_pages returns. | |
| width | No | New width in pixels. Applies to every page; rejected on multi-size templates (use per-page width inside 'pages') | |
| height | No | New height in pixels. Applies to every page; rejected on multi-size templates (use per-page height inside 'pages') | |
| layers | No | Layer definitions. Each must have 'layer' (unique name) and 'type' (text/image/shape/rating). | |
| duration | No | Default video duration in milliseconds for MP4 renders (e.g., 5000 for 5 seconds) | |
| background | No | Template background color | |
| description | No | New template description | |
| template_id | Yes | The template ID to update | |
| replaceLayers | No | If true, replaces all layers. If false, merges with existing |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the mutation profile is known. The description still adds real behavioral context beyond them: that a non-existent page name is ADDED, an existing page has layers merged or replaced via replaceLayers, and that top-level width/height are rejected on multi-size templates. This goes meaningfully past the annotation set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense paragraph, front-loaded with the core action and then escalating to the non-obvious nested-schema rules. Every sentence carries a rule an agent would otherwise get wrong; there is mild redundancy with the schema descriptions but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter nested mutation tool with no output schema and annotations already covering safety, the description covers the high-risk structural pitfalls (layer key naming, page add/merge/replace, multi-size size handling). It omits nothing critical, though it never mentions the required template_id or the effect on unspecified existing fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description contributes semantics not present in the schema: the merge-vs-add rule keyed on whether the page name already exists, and the routing rule between 'pages' and top-level 'layers'/width/height. It also reinforces the 'layer' vs 'name' key gotcha, which the schema states but which is easy to miss.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Update an existing template'), which cleanly separates it from create_template, clone_template and delete_template in the sibling set. It does not explicitly name those siblings, but the verb distinction is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit statement of when to use update_template versus alternatives like clone_template or create_template, nor any prerequisite/permission guidance. The only conditional guidance ('for multi-page templates use pages', per-page width/height on multi-size templates) concerns parameter choice rather than tool selection, so usage context is implied at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_fontBInspect
Upload a custom font from a URL
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL of the font file (TTF, OTF, WOFF, WOFF2) | |
| name | Yes | Font family name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds the meaningful constraint that the font is fetched remotely from a URL rather than uploaded as a file, but says nothing about overwrite behavior, supported size limits, or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste; the verb and source are stated immediately. It is efficient, though arguably terse for a mutation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with full schema coverage and annotations carrying the safety profile, this is minimally adequate. The main gap is that no output schema exists and the description does not indicate what the call returns or how name collisions are handled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both url and name fully documented in the schema including accepted formats. The description adds nothing beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (upload) and resource (custom font) plus the source (from a URL), which cleanly separates it from list_fonts and delete_font in the sibling set. It does not explicitly name an alternative, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no indication of what happens if a font with the same name already exists. The agent must infer everything from the verb alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
25 tool updates
v1.7.1- First observed
clone_template - First observed
create_folder - First observed
create_render - First observed
create_template - First observed
create_upload - First observed
delete_folder - First observed
delete_font - First observed
delete_render - First observed
delete_template - First observed
delete_upload - First observed
get_account - First observed
get_render - First observed
get_template - First observed
get_template_layers - First observed
get_template_pages - First observed
list_folders - First observed
list_fonts - First observed
list_renders - First observed
list_template_renders - First observed
list_templates - First observed
list_uploads - First observed
merge_renders - First observed
update_folder - First observed
update_template - First observed
upload_font
TDQS
Scored across 25 tools
Each tool targets a distinct resource+action (renders, templates, folders, uploads, fonts, account). No two tools appear to do the same thing; create_render vs merge_renders vs list_template_renders are clearly separated. Minor potential overlap between list_renders and list_template_renders, but descriptions distinguish them.
Mostly consistent verb_noun snake_case (create_render, list_templates, delete_folder). Minor deviations: create_upload vs upload_font use different verbs for upload actions, and pluralization varies (get_render vs list_renders). Still highly readable and predictable.
25 tools is heavy for a single MCP server; the surface spans six sub-domains. While each tool is distinct, the set could likely be consolidated (e.g., folder CRUD, font CRUD). At the 25-tool threshold, it is borderline rather than well-scoped.
Core lifecycle for templates (create/get/update/delete/clone) and renders (create/get/list/delete/merge) is covered. Gaps exist for uploads and fonts (no get/update, only list/create/delete) and folders lack a get tool, but agents can work around via list calls.
Maintenance
Related MCP Connectors
- MorphedOAuthapp.morphed
Create AI images and videos, manage projects and credits, and use workspace campaign context.
Image and video AI tools and your own pipelines, run from any AI assistant.
Create, search, edit, and export designs and assets from Canva.
Build and run AI image, video and on-brand ad workflows from chat, with brand kits and share links.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables programmatic design creation and manipulation on the Canvelete platform through AI assistants. Supports design management, canvas element manipulation, template application, asset management, and real-time synchronization with the design editor.17 npmMIT
- AlicenseAqualityCmaintenanceEnables AI assistants to generate AI avatar videos, manage templates, and work with assets through natural language commands via the HeyGen API.7MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to manage Cloudinary media assets, including uploading, searching, transforming, and organizing images and videos through natural language.654 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to generate PDFs from templates using dynamic data, manage async PDF jobs, list templates, and check account credits and transaction history through natural language.42 npmMIT