Skip to main content
Glama

reply

Destructive

Send a reply to an existing email thread using the mailbox that sent it. Handles idempotent retries and daily send limits.

Instructions

Send a reply on an existing thread, from the mailbox that sent it. Inputs: threadId, body. Returns { messageId, deduplicated }. A reply is real sending volume and is governed exactly like campaign sends: it counts against that mailbox's daily cap (sentToday +1, visible in infrastructure_status), and it is REFUSED — never silently dropped — when the recipient is suppressed, the mailbox is deliverability-paused, or the cap is used up. A refusal returns { error, code:'send_blocked', reason:'suppressed'|'mailbox_paused'|'daily_cap_reached', retryable }: retryable (cap) clears at the next daily rollover, non-retryable does not, so stop retrying and don't loop replies to manufacture volume. Idempotent: identical retries collapse to one send — pass a stable idempotencyKey (else a body hash is used) so a dropped-response retry can't double-send. deduplicated: true means NO new email was sent — messageId is from an earlier send this call matched. deduplicated: false means this platform sent the call onward as a NEW send, which is normally a new email — but it is not a guarantee one left the building: with NO idempotencyKey the body hash is only matched here for 10 minutes, while the sending provider keeps its own record of an identical body on the same thread for longer, and can collapse a much later repeat into the original send. So on a long-delayed identical repeat you may get deduplicated: false with the ORIGINAL send's messageId and no new email. PASS AN IDEMPOTENCYKEY, or vary the body, if you need a repeat to genuinely go out. 404 if no sending mailbox is on record for the thread.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bodyYes
threadIdYesThe thread id, e.g. from inbox() or campaign events.
idempotencyKeyNoOptional idempotency key: resend the SAME key when retrying this call so a dropped-response retry is not applied twice (no duplicate campaign/provision/send).

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observedv0.1.0

TDQS

A4.4/5.0
Behavior5/5

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

With only destructiveHint=true as an annotation, the description carries the disclosure burden and fully delivers: daily-cap accounting, explicit refusal semantics with three reasons, retryable vs non-retryable handling, idempotent collapse behavior, and the subtle deduplication edge case. No contradiction with the annotation — 'destructive' fits a tool that produces real sending volume.

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?

Every sentence adds distinct, decision-relevant information — refusal reasons, retry cadence, dedup semantics, 404 case — so nothing is filler. The structural issue is that all of this is one dense paragraph; having the refusal and deduplication sections as separate bullets would make it easier for an agent to scan.

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?

This is a tricky send-side tool with no output schema, yet the description covers the normal return value, the refusal error object shape, retryability advice, idempotency rules, a subtle provider dedup edge case, and the 404 condition. An agent has everything it needs to decide, invoke, and interpret the result even without structured output definitions.

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?

The description adds real nuance beyond the schema: for idempotencyKey it explains the body-hash fallback, the 10-minute local matching window, and the longer provider-side window that can cause a stale deduplicated:false. For body it adds that a stable body hash can be used as an idempotency key and that identical bodies can be collapsed by the sending provider. The basic content meaning of body is left implicit and schema coverage is 67%, so the value-added is high but not complete.

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 phrase says exactly what it does: 'Send a reply on an existing thread, from the mailbox that sent it.' This is a specific verb plus resource, plus the scope qualifier 'from the mailbox that sent it', which distinguishes it from broader send/campaign tools. The description also names the return shape ({ messageId, deduplicated }) in the same breath.

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?

There is strong operational guidance (when a send will be refused, when retrying is useless, don't loop replies to manufacture volume), but no explicit statement of when to choose this tool versus a sibling like launch_campaign. Use-cases are implied via 'on an existing thread' but alternatives are never named.

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/YS-projectcalc/agent-cold-email'

If you have feedback or need assistance with the MCP directory API, please join our Discord server