Skip to main content
Glama

Send reply

send_reply
Destructive

SEND a reply that threads under an existing message, now. Same permission rules as send_email, checked against the recipients Mail actually puts on the reply (which honour Reply-To). Identify the parent by mail_id or Message-ID; reply_all=true copies everyone except the user. If the send is refused, cancelled or fails after the reply was made, it is left in Drafts and the result says so. attachments takes files already in the user's mail as {mail_id, attachment_id} (from get_email or find_attachments; Mail downloads one it has not stored yet), and absolute paths of files in the user's home folder (not hidden ones or ~/Library; from web and phone apps only as the user's Attach files from this Mac permission allows). Up to 18 MB in total. The user sees every file's name and size in the confirmation. Requires Keeploop Pro.

Input Schema

NameRequiredDescriptionDefault
bodyYes
mail_idNo
categoryNo
reply_allNo
message_idNo
attachmentsNo

Output Schema

NameRequiredDescriptionDefault
ccYes
toYes
bccYes
noteNo
sentYes
senderNo
accountYes
send_idYes
subjectYes
decisionYes
cancelledYes
attachmentsNo
in_reply_toNo
threads_underNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / $defs
      Added value: +{
      +  "AttachmentRef": {
      +    "description": "An attachment already in the user's mail: get_email / find_attachments ids.",
      +    "properties": {
      +      "attachment_id": {
      +        "title": "Attachment Id",
      +        "type": "string"
      +      },
      +      "mail_id": {
      +        "title": "Mail Id",
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "mail_id",
      +      "attachment_id"
      +    ],
      +    "title": "AttachmentRef",
      +    "type": "object"
      +  }
      +}
    • addedInput schema / properties / attachments
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "$ref": "#/$defs/AttachmentRef"
      +          }
      +        ]
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Attachments"
      +}
  2. Added

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations: permission checks applied to the recipients Mail actually puts on the reply (honouring Reply-To), failure behavior (refused/cancelled/failed replies land in Drafts and the result reports it), attachment size cap of 18 MB, a user-visible confirmation of file names and sizes, and a Keeploop Pro requirement. This is exactly the extra context annotations cannot carry.

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?

Front-loaded with the core action in the first sentence, then layers constraints. Dense with parentheticals and clauses, but each sentence carries distinct operational information rather than padding.

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?

Given an output schema exists, the description need not explain return values, and it covers the remaining gaps: threading, permission semantics, failure fallback, attachment sourcing and limits, and the subscription prerequisite. An agent has everything needed to invoke it correctly.

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 description coverage is 0%, so the description must compensate, and it does for most params: mail_id/message_id as parent identifiers, reply_all semantics, and the attachments format (mail {mail_id, attachment_id} refs or absolute home-folder paths, with exclusions and the 18 MB cap). It never explains category, and body is only implicitly covered.

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+resource (SEND a reply) plus its defining scope: it threads under an existing message and sends it now, distinguishing it from save_reply_draft. An agent can tell it apart from send_email and the draft siblings 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?

Explains how to identify the parent (mail_id or Message-ID), what reply_all does, and that permission rules match send_email. The 'now' framing implies the draft alternative, and 'left in Drafts' reinforces the distinction, but it never names save_reply_draft as the explicit alternative for deferring a send.

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.