Skip to main content
Glama

volanea_create_template

DestructiveIdempotent

Create a reusable email template with {{variable}} placeholders. Idempotent by name: an existing template with the same name is updated instead (content changes snapshot a new version, old versions are retained). The reply is a summary — id, version, and the detectedVariables a send must supply — not the body you just sent; read the stored HTML back with volanea_get_template if you need it. API docs: volanea_get_api_reference { resource: 'Templates' } or https://volanea.com/docs.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "name": "<name>",
      "subject": "<subject>",
      "body": "<body>",
      "fromEmail": "<fromEmail>"
    },
    "name": "volanea_create_template"
  }
}

Input Schema

NameRequiredDescriptionDefault
bodyYesHTML body. Supports {{variable}} placeholders.
nameYesTemplate name, e.g. 'Welcome email'. Acts as the idempotency key.
typeNoDecides who can receive it, so getting this wrong is a compliance problem rather than a cosmetic one. `transactional` reaches a recipient even when their contact is unsubscribed (password resets, receipts, verification codes). `marketing` is skipped for unsubscribed contacts and must carry an unsubscribe link. Default to `marketing` for anything promotional; use `transactional` only when the message is a direct response to something the user did.
subjectYesSubject line. Supports {{variable}} placeholders.
fromNameNoHuman-readable sender name.
fromEmailYesSender address — must be on a verified domain to deliver in live mode.
previewTextNoInbox preview line (~100 chars visible).

Output Schema

NameRequiredDescriptionDefault
codeNoMachine-readable failure code to branch on. Present only when success is false.
dataNoPresent when success is true.
errorNoHuman-readable failure reason. Present only when success is false.
successYesFalse when the call failed; read `error` and `code` in that case.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and idempotentHint=true, and the description earns credit by explaining exactly what that means: content changes snapshot a new version and old versions are retained. It also discloses that the reply is a summary (id, version, detectedVariables) rather than the submitted body — a non-obvious behavior an agent would otherwise guess wrong.

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?

Front-loaded with the core action and idempotency rule, then the response-shape caveat, then docs. Dense parentheticals and the docs URL cost some tightness, but no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with an output schema, this covers the gaps that matter: idempotency key, version retention, response summary vs body, and a pointer to the Templates API reference. Nothing an agent needs to invoke it correctly 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 schema already documents every parameter, including the type enum's compliance implications and the idempotency-key role of name. The description reinforces the placeholder convention and the detectedVariables/send relationship but adds little parameter-level 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a reusable email template with {{variable}} placeholders') and immediately qualifies the semantics with idempotency-by-name. It also names the sibling volanea_get_template for reading the stored body, so an agent can distinguish create from read without opening either schema.

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?

Gives clear operating context: same-name calls update rather than duplicate, and reading the stored HTML back requires volanea_get_template instead of this tool. It does not explicitly exclude adjacent tools like volanea_render_template or volanea_create_campaign_draft, so it stops short of full when/when-not routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources