Skip to main content
Glama

set_notification_template

Idempotent

Set the message a notification sends, rendered with Mustache against the data passed on each send: 'Hi {{name}}' with data {"name": "Ada"} becomes 'Hi Ada'. {{value}} is HTML-escaped; use {{{value}}} only where raw markup is intended.

Templates are per (key, channel_type), so one key can carry a full HTML email and a one-line Slack message. Calling this again updates the existing template rather than failing.

What each channel needs: email — subject and body_text (body_html optional); slack and in_app — body_text; whatsapp — provider_config with templateName, because Meta only accepts templates it has already approved for a message a business initiates, and will refuse a body we compose.

The platform ships defaults for auth.verify_email and auth.password_reset, so those work before you set anything; a template you set here overrides them.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
keyYesHow a send names this template, e.g. 'order.shipped'. Lowercase letters, digits, dots and underscores.
enabledNoSet false to fall back to the next tier without deleting this.
subjectNoEmail subject line. Mustache-rendered.
body_htmlNoOptional rich HTML body for email, sent alongside body_text.
body_textNoPlain-text body. Mustache-rendered. Required for email, slack and in_app.
project_idNoOptional if whoami returned a default_project_id.
descriptionNoWhat this template is for.
channel_typeYes
provider_configNoStructure a body cannot express. REQUIRED for whatsapp: {templateName, languageCode, parameters}. Optional for slack: {blocks}.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare idempotentHint=true and destructiveHint=false, and the description reinforces this ('updates the existing template rather than failing'). Beyond that it discloses non-obvious behavior: Mustache interpolation with HTML-escaped {{value}} vs raw {{{value}}}, per-channel required fields, and the WhatsApp/Meta pre-approval constraint that refuses arbitrary composed bodies.

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?

Four tight paragraphs, each doing distinct work (rendering semantics, keying/upsert, per-channel requirements, defaults). Dense and front-loaded, though the WhatsApp rationale could be trimmed slightly without losing meaning.

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 9-parameter setter with no output schema, the description covers what an agent needs: rendering rules, upsert semantics, per-channel field requirements, and interaction with platform defaults. Return values are not needed since annotations confirm a safe, idempotent write.

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 89% (baseline 3), but the description adds conditional meaning the schema's flat per-field docs cannot express: email needs subject+body_text with body_html optional, slack/in_app need body_text, and whatsapp requires provider_config.templateName. This goes beyond the schema's field-level descriptions.

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 ('Set the message a notification sends') and immediately scopes it to per-send Mustache rendering. An agent can distinguish this from set_notification_channel, list_notification_templates, and delete_notification_template 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context: templates are keyed per (key, channel_type), calling again updates rather than fails, and templates override shipped auth defaults. However it never explicitly names a sibling alternative or a when-not condition (e.g. when to configure the channel first), so it falls short of full routing guidance.

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