Skip to main content
Glama

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

  1. Sign up at app.templated.io

  2. Go to your API Key page

  3. Copy your API key

Connection Options

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/mcp

Then run /mcp inside Claude Code and sign in when prompted.

Cursor IDE

Add to Cursor

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

  1. Go to Settings → Connected Apps → Add MCP Server

  2. Enter URL: https://mcp.templated.io/mcp

  3. Set Authentication to OAuth and sign in to Templated when prompted

  4. 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-templated

Authentication

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/mcp without an API key.

  • API key via ?apiKey=YOUR_API_KEY on the URL or an Authorization: Bearer YOUR_API_KEY header — used for automations and multi-tenant scoping (folderId/externalId).

Available Tools

Render Operations

Tool

Description

create_render

Create an image, video, or PDF from a template

get_render

Get details of a specific render

list_renders

List all renders in your account

delete_render

Delete a render

merge_renders

Merge multiple PDF renders into one

Template Operations

Tool

Description

list_templates

List all templates (with search/filter)

get_template

Get template details

get_template_layers

Get all layers of a template

get_template_pages

Get pages of a multi-page template

create_template

Create a new template (single-page via layers, multi-page/multi-size via pages)

update_template

Update an existing template (add or edit pages via pages)

clone_template

Clone a template (optional new name)

delete_template

Delete a template

list_template_renders

List renders from a template

Folder Operations

Tool

Description

list_folders

List all folders

create_folder

Create a new folder

update_folder

Rename a folder

delete_folder

Delete a folder

Asset Operations

Tool

Description

list_uploads

List uploaded assets

create_upload

Upload a file from URL

delete_upload

Delete an upload

list_fonts

List custom fonts

upload_font

Upload a custom font

delete_font

Delete a custom font by name

Account

Tool

Description

get_account

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-key

Testing with MCP Inspector

npx @modelcontextprotocol/inspector npx mcp-server-templated

Resources

License

MIT

Available Tools

25 tools
clone_templateCInspect

Create a copy of an existing template

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName for the cloned template
template_idYesThe template ID to clone

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFolder name

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fpsNoFrames per second (MP4 only, 1-60)
cmykNoUse CMYK color mode (PDF only)
nameNoCustom name for the render
scaleNoScale factor (0.1-2.0)
widthNoCustom width in pixels (100-5000)
formatNoOutput format. Default: jpg
heightNoCustom height in pixels (100-5000)
layersNoLayer 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.
flattenNoFlatten PDF for print-ready documents
durationNoVideo duration in milliseconds (MP4 only, max 90000)
templateYesThe template ID to render
backgroundNoBackground color in hex format (e.g., #FF0000)
transparentNoMake background transparent (PNG only)

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesTemplate name
pagesNoPages 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.
widthYesTemplate width in pixels
heightYesTemplate height in pixels
layersNoArray of layer objects. Each layer MUST have 'layer' (unique name) and 'type' fields.
durationNoDefault video duration in milliseconds for MP4 renders (e.g., 5000 for 5 seconds). Used as fallback when no duration is specified at render time.
backgroundNoTemplate background color (e.g., '#ffffff', 'rgb(255,255,255)', 'transparent')

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL of the file to upload
nameNoOptional name for the upload

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_folderC
Destructive
Inspect

Delete a folder

ParametersJSON Schema
NameRequiredDescriptionDefault
folder_idYesThe folder ID to delete

TDQS

C2.2/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose2/5

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.

Usage Guidelines2/5

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_fontB
Destructive
Inspect

Delete a custom font

ParametersJSON Schema
NameRequiredDescriptionDefault
font_nameYesThe font family name to delete, as returned by list_fonts

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_renderC
Destructive
Inspect

Delete a specific render

ParametersJSON Schema
NameRequiredDescriptionDefault
render_idYesThe render ID to delete

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_templateC
Destructive
Inspect

Delete a template

ParametersJSON Schema
NameRequiredDescriptionDefault
template_idYesThe template ID to delete

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_uploadC
Destructive
Inspect

Delete an uploaded asset

ParametersJSON Schema
NameRequiredDescriptionDefault
upload_idYesThe upload ID to delete

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_accountA
Read-only
Inspect

Get the connected account's render usage for the current period (renders used and renders included)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_renderA
Read-only
Inspect

Retrieve a specific render by its ID to get the status and file URL

ParametersJSON Schema
NameRequiredDescriptionDefault
render_idYesThe render ID

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_templateB
Read-only
Inspect

Retrieve a specific template by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
template_idYesThe template ID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_layersA
Read-only
Inspect

Get all layers of a template. Use this to understand what layers can be modified when creating a render.

ParametersJSON Schema
NameRequiredDescriptionDefault
template_idYesThe template ID

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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_pagesB
Read-only
Inspect

Get all pages of a multi-page template

ParametersJSON Schema
NameRequiredDescriptionDefault
template_idYesThe template ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_foldersB
Read-only
Inspect

List all folders in the account

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
limitNoResults per page

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_fontsB
Read-only
Inspect

List all custom fonts uploaded to the account

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
limitNoResults per page

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_rendersC
Read-only
Inspect

List all renders in the account

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 0)
limitNoResults per page (default: 25)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_rendersB
Read-only
Inspect

List all renders created from a specific template

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
limitNoResults per page
template_idYesThe template ID

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_templatesA
Read-only
Inspect

List all templates in the account. Use this to find template IDs for rendering.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 0)
tagsNoFilter by tags (comma-separated)
limitNoResults per page (default: 25)
queryNoSearch query to filter templates by name
widthNoFilter by template width
heightNoFilter by template height
includeLayersNoInclude layer information in response

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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_uploadsB
Read-only
Inspect

List all uploaded assets (images, videos)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
limitNoResults per page

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoIf true, returns a hosted URL. If false, returns the file directly
render_idsYesArray of render IDs to merge

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_folderC
Destructive
Inspect

Update a folder's name

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNew folder name
folder_idYesThe folder ID

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_templateA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew template name
pagesNoPages 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.
widthNoNew width in pixels. Applies to every page; rejected on multi-size templates (use per-page width inside 'pages')
heightNoNew height in pixels. Applies to every page; rejected on multi-size templates (use per-page height inside 'pages')
layersNoLayer definitions. Each must have 'layer' (unique name) and 'type' (text/image/shape/rating).
durationNoDefault video duration in milliseconds for MP4 renders (e.g., 5000 for 5 seconds)
backgroundNoTemplate background color
descriptionNoNew template description
template_idYesThe template ID to update
replaceLayersNoIf true, replaces all layers. If false, merges with existing

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL of the font file (TTF, OTF, WOFF, WOFF2)
nameYesFont family name

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 25 tool updatesv1.7.1
    • First observedclone_template
    • First observedcreate_folder
    • First observedcreate_render
    • First observedcreate_template
    • First observedcreate_upload
    • First observeddelete_folder
    • First observeddelete_font
    • First observeddelete_render
    • First observeddelete_template
    • First observeddelete_upload
    • First observedget_account
    • First observedget_render
    • First observedget_template
    • First observedget_template_layers
    • First observedget_template_pages
    • First observedlist_folders
    • First observedlist_fonts
    • First observedlist_renders
    • First observedlist_template_renders
    • First observedlist_templates
    • First observedlist_uploads
    • First observedmerge_renders
    • First observedupdate_folder
    • First observedupdate_template
    • First observedupload_font

TDQS

B3.2/5.0

Scored across 25 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count3/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers