Skip to main content
Glama
codefuturist

Email MCP Server

by codefuturist

Reply email

reply_email

Reply to an email with proper threading using In-Reply-To and References headers, and quote the original message by default.

Instructions

Reply to an email with proper threading (In-Reply-To & References headers). Use get_email first to read the original. The original message is quoted below the reply by default (Thunderbird/Outlook style) — set quoteOriginal=false for the bare body only.

Input Schema

NameRequiredDescriptionDefault
bodyYesReply body content
htmlNoSend as HTML
accountYesAccount name from list_accounts
emailIdYesEmail ID to reply to (from list_emails or get_email)
mailboxNoMailbox where the original email isINBOX
replyAllNoReply to all recipients
attachmentsNoFiles to attach: plain paths, or {path, cid, contentType, filename} objects for inline images. Sizes are checked before sending; the base64-encoded total must stay under the account's effective limit (global cap 25 MB; known provider or per-account limits may be stricter).
quoteOriginalNoAppend the original message as a quoted block below the reply (Thunderbird/Outlook style: "On DATE, NAME wrote:" + > prefix for text replies, or <blockquote type="cite"> for HTML). Disable to send the bare reply body only.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv0.6.0
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / properties / attachments
      Added value: +{
      +  "description": "Files to attach: plain paths, or {path, cid, contentType, filename} objects for inline images. Sizes are checked before sending; the base64-encoded total must stay under the account's effective limit (global cap 25 MB; known provider or per-account limits may be stricter).",
      +  "items": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "cid": {
      +            "description": "Content-ID for inline embedding — reference as <img src=\"cid:....\"> in an HTML body",
      +            "type": "string"
      +          },
      +          "contentType": {
      +            "description": "Explicit MIME type when the file extension would misdetect",
      +            "type": "string"
      +          },
      +          "filename": {
      +            "description": "Filename shown to the recipient (default: the file basename)",
      +            "type": "string"
      +          },
      +          "path": {
      +            "description": "Local file path",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "path"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / quoteOriginal
      Added value: +{
      +  "default": true,
      +  "description": "Append the original message as a quoted block below the reply (Thunderbird/Outlook style: \"On DATE, NAME wrote:\" + > prefix for text replies, or <blockquote type=\"cite\"> for HTML). Disable to send the bare reply body only.",
      +  "type": "boolean"
      +}
  2. First observedv0.2.3

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only declare write/open-world/non-destructive; the description adds real behavioral context: the reply is threaded via headers, and the original is quoted below by default in Thunderbird/Outlook style with an explicit opt-out. It does not cover permission requirements, delivery/return behavior, or error cases, but adds meaningful value beyond the annotations.

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 tight sentences: purpose/threading first, then the prerequisite, then the default-vs-opt-out behavior. Every sentence earns its place with no redundancy.

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 write tool with no output schema but full annotation and 100% schema coverage, the description supplies the key behavioral nuances (threading, quoting default). Minor gaps remain regarding permissions and send-confirmation behavior, but nothing essential for correct invocation is missing.

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 100%, so all eight parameters are already documented, including quoteOriginal. The description echoes the quoteOriginal default and framing rather than adding syntax or constraints beyond the schema, which matches the baseline 3 when the schema does the heavy lifting.

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 description states a specific verb and resource ('Reply to an email') and immediately differentiates the operation by its threading semantics (In-Reply-To & References headers), which no sibling like send_email or forward_email shares. An agent can select this over send_email/forward_email without opening any 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?

It gives an explicit prerequisite ('Use get_email first to read the original') and clarifies default vs. alternative behavior (quoted reply by default, quoteOriginal=false for bare body). It stops short of naming the sibling tools it replaces or stating when-not to use it.

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