Skip to main content
Glama

email_test

Test email campaigns on simulated inboxes to forecast opens, clicks, replies, unsubscribes, spam rates, subject-line performance, and projected leads and revenue by list size.

Instructions

Email campaign test on the simulated people's inboxes: pass emails [{id, from_name, subject, preheader, body, cta, send_time (morning|midday|evening|night), segments?, sequence?: [{delay_days, subject, body}]}] plus optional list_size and benchmarks {cost_per_send, lead_value, close_rate, deal_value}. Each person gets a realistic inbox for the day; an attention gate decides opens, Claude decides skim/read/click/reply/unsubscribe/spam with honest odds. Returns open, click, click-to-open, unsubscribe and spam rates per variant and audience, subject-line ranking, sequence funnel, projection from list size to leads and revenue, spam-word warnings. Needs a prepared simulation (simulation_id). Background job.

Input Schema

NameRequiredDescriptionDefault
runNo
emailsYes
list_sizeNo
benchmarksNo
simulation_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.4.0

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it explains the attention-gate simulation model, that an LLM decides skim/read/click/reply/unsubscribe/spam 'with honest odds', the async background-job nature, and exactly what metrics are returned. It omits cost/rate-limit implications but covers behavior far beyond a bare verb.

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 purpose is front-loaded, but the body is a single dense run-on packed with inline field lists, making it hard to scan. The information is useful, but structure (separating inputs from outputs) would let the same content earn its place better.

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?

For a complex tool with nested objects, no output schema, and zero schema description coverage, the description supplies both input shape and expected return metrics plus the background-job note. Remaining gaps are the undocumented `run` parameter and no pointer to job_status for retrieving results.

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 0%, so the description must compensate, and it largely does: the emails array is enumerated field-by-field including the send_time enum values and nested sequence structure, plus benchmarks keys and list_size. The exception is the `run` parameter, which is never explained anywhere.

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?

The description states a specific verb+resource: an email campaign test run against simulated people's inboxes, with a defined outcome (open/click/unsubscribe/spam rates). This clearly separates it from siblings like website_test or market_test without needing to name them, though it never explicitly names those alternatives.

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?

It states the key prerequisite ('Needs a prepared simulation (simulation_id)') and that the operation is a background job, which implies polling job_status. However, it never says when to pick this over run_test/market_test or what to do if no simulation exists, leaving usage largely implied.

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