Skip to main content
Glama

Create letter template

spur_create_letter_template

Create a letter template and show a preview. Pick the letter type first (top_first_page or insert_blank_page); it decides where the address prints and how much of the page the design can use. Three ways to start:

  • From blank: start_from_blank=true gives an empty one-page letter laid out for the letter type.

  • Redesign an existing template: base_template_id (yours, a Spur default or a gallery id) copies its HTML and letter type; override html or letter_type as needed.

  • From scratch: pass html.

HTML guidance (see spur://letter-design-guide): one US Letter page (8.5"×11"), full HTML document with inline , "@page { size: 8.5in 11in; margin: 0; }", no scripts. One root 8.5in wide; px/in units only (no vh/vw); no box-shadow, transforms or manual page breaks. top_first_page: leave the first 3.15in blank (an empty ), body ≈ 3–4 short paragraphs. insert_blank_page: no address zone; letterhead up to 1.8in, body up to ~400 words. Images as absolute https URLs. The user's own images (logo, headshot, property photos): spur_list_images gives their URLs; if they want to use an image they have, call spur_upload_image (or spur_save_image for a link) and use the saved URL. Use merge fields such as {{owner_first_name}}, {{property_address}}, {{your_name}}, {{your_phone}}, {{company_name}} (see spur://merge-variables).

Input Schema

NameRequiredDescriptionDefault
htmlNoFull letter HTML
nameYesTemplate name shown in Spur
categoryNoCategory label, e.g. "Seller Outreach"
descriptionNoInternal note about the template; never printed
letter_typeNoDefaults to the base template's type, else top_first_page
base_template_idNoCopy this template's HTML and letter type as the starting point
start_from_blankNoStart from an empty page laid out for letter_type

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 only declare the mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the description carries the real burden and does: it discloses that a preview is rendered, that base_template_id copies HTML and letter type (overridable), and enumerates hard rendering constraints (no scripts, no vh/vw, no box-shadow/transforms, single page margins) that an agent cannot infer elsewhere. This is materially more than the annotations provide.

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 and the mode-selection branches are front-loaded and the HTML constraints are bulleted rather than run together, which suits their density. It is long and partially restates material it also points to (spur://letter-design-guide, spur://merge-variables), so a small amount of duplication keeps it from a 5.

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?

With no output schema, the description covers what an agent needs to construct a valid call — modes, layout rules, image URLs, merge fields. It is slightly vague about the outcome: whether the template is persisted on this call or only previewed, and whether an id or preview URL is returned, is implied rather than stated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, yet the description still adds operational meaning: letter_type is explained in terms of where the address prints and how much page the design can use, with concrete rules per enum value (3.15in blank address zone vs 1.8in letterhead, ~400 words). base_template_id scope is clarified (yours, Spur default, or gallery id) and start_from_blank is described as an empty laid-out page.

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 letter template") plus an extra behavior ("show a preview"), and the letter-specific vocabulary (address zone, letterhead, letter type) clearly separates it from spur_create_email_template and spur_create_postcard_template. An agent can distinguish it from its siblings without opening the 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 three explicit entry paths (start_from_blank, base_template_id, raw html) with the conditions selecting each, plus routing to spur_list_images / spur_upload_image / spur_save_image when the user supplies images. It stops short of naming when NOT to use this tool (e.g. spur_update_letter_template for existing templates), so it is strong but not fully exhaustive.

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