Skip to main content
Glama

Preview unsaved email or SMS

spur_preview_message_draft
Read-onlyIdempotent

Preview email HTML or SMS text before saving it: renders it with sample or real owner data and runs the design checks. Nothing is saved; iterate here, then save with spur_create_email_template / spur_create_sms_template.

Email HTML guidance (see spur://email-design-guide): full HTML document, table-based layout 600px wide, inline styles on elements (a small block in is fine for resets/media queries), web-safe font stacks, no JavaScript, no forms, no external CSS. Images as absolute https URLs with alt text and width attributes. 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 PNG or JPG in emails, not SVG. A hidden preheader right after sets the inbox snippet. Include an opt-out line ("Reply STOP" or an unsubscribe link) and the sender's postal address in the footer. Keep it under 50,000 characters. Use merge fields like {{owner_first_name}}, {{property_address}}, {{your_name}}, {{your_phone}}, {{company_name}} (see spur://merge-variables). The plain-text version is generated from the HTML unless you pass text_body.

SMS guidance: plain text, ideally one segment (160 GSM characters, or 70 if it uses emoji or other non-GSM characters; longer messages are billed per segment). Identify yourself, keep it conversational, and include opt-out wording ("Reply STOP to opt out") on first-touch messages. Links in texts from unverified numbers can be blocked, so give link-free fallback_body text when the body has a URL. Use merge fields like {{owner_first_name}}, {{property_address}}, {{your_name}} (see spur://merge-variables).

Input Schema

NameRequiredDescriptionDefault
htmlNoEmail HTML
textNoSMS text, or the email's plain-text version
channelYesWhether the draft is an email or an SMS
subjectNoEmail subject
owner_idNoPreview with this owner's real data (spur_find_owners) instead of sample data
fallback_bodyNoSMS only: link-free text sent if links are blocked

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful behavior beyond annotations: nothing is saved, design checks run, sample versus real owner data can be used, SMS segments are billed, and links from unverified numbers may be blocked. It does not describe the preview or design-check output, so 4 rather than 5.

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?

The opening is front-loaded and the channel-specific paragraphs are clearly separated. However, the description is quite long for a preview tool and includes extensive design-guide material that is also available through spur://email-design-guide, so it is informative but not tightly concise.

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?

Given six parameters, closed-world read-only annotations, and no output schema, the description covers the important channel rules, image handling, merge fields, opt-out requirements, and the save workflow. It still does not describe what the preview or design checks return, and it does not explicitly route saved-template previews to spur_preview_message_template.

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 even though parameter details are already structured. The description adds meaningful HTML/SMS content guidance, but it references 'text_body' while the actual parameter is 'text', and says to keep HTML under 50,000 characters while the schema allows 200,000, introducing avoidable confusion.

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 first sentence states the specific verb (Preview), the resource (email HTML or SMS text), and the lifecycle scope (before saving). 'Nothing is saved; iterate here, then save with spur_create_email_template / spur_create_sms_template' clearly separates it from create-template siblings, so an agent can identify its role without opening other schemas.

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 a clear usage context: preview and iterate before saving, then use the create-template tools; owner_id selects real owner data instead of sample data. It does not explicitly say when to use this versus sibling preview_message_template for already-saved templates, so it falls short of full when/when-not 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