Skip to main content
Glama

Save a template

p21_save_template

Save a label design as a reusable template with {{placeholders}} for values that change; refuses to replace an existing template unless overwrite is set.

Instructions

Save a label design as a reusable template (also shown in the GUI). Put {{placeholders}} where values change. Refuses to replace an existing template unless overwrite=true.

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>",
      "label": "<label>"
    },
    "name": "p21_save_template"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameYes
labelYesNelko P21 label. Coordinates are printer dots (203 dpi, ~8 dots/mm) on the design canvas. Landscape 14x40 mm canvas = 284 x 96 dots (x across the label length, y across the 12 mm printable tape width). Canvas width = round(length_mm * 7.1) for other lengths. Output is pure black/white.
overwriteNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.7/5.0
Behavior4/5

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

Annotations only say readOnly=false and destructive=false; the description meaningfully adds that an existing template is refused unless overwrite=true, which is the key safety/behavior detail for a mutation. It does not say what is returned or where the template is stored, but the core mutating behavior is disclosed.

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, front-loaded with purpose, followed by the placeholder convention and the overwrite guard. No filler or restated schema.

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 write tool with no output schema, the description should say what the call returns (template name/path/confirmation) and how the template name relates to later lookup/rendering. Those gaps are real, though the enormous nested label schema is already documented in-schema, so the description needn't repeat it.

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 only 33%, but the nested label schema is heavily self-documented in-schema. The description explains overwrite=true semantics well and clarifies the placeholder convention that applies to label text and variables, yet it says nothing about the `name` parameter (constraints, uniqueness, lookup key for later p21_list_templates).

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 ('Save a label design as a reusable template') and adds that templates are surfaced in the GUI, which hints at persistence semantics. It does not explicitly contrast with the sibling p21_save_label, so the boundary between 'saving a label' and 'saving a template' must be inferred.

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?

'Put {{placeholders}} where values change' implies the use case (reusable parametric labels), but there is no explicit statement of when to prefer this over p21_save_label, nor any prerequisite guidance. The overwrite rule gives a conditional behavior but not usage routing.

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