Skip to main content
Glama

Send Email

send_email
Destructive

Use this when the user wants to send an email from an account configured in the Mac's Apple Mail. Composes and sends via Mail.app; supports plain text or HTML body. Mail sends an automation-composed message as a quoted block (plain text or HTML) and may decompose accented letters (NFD); the result's note says so. For sending from a Microsoft 365 account NOT added to Mail.app, use m365_send_email. Pass from to send from a specific configured Mail.app account instead of the default sender. Pass attachments as a comma-separated list of absolute file paths to attach files.

Input Schema

NameRequiredDescriptionDefault
ccNoCC address(es), comma-separated.
toYesRecipient address(es), comma-separated for multiple.
bccNoBCC address(es), comma-separated.
bodyNoPlain-text body. Use this OR html_body; if both are given, html_body wins.
fromNoSender address — on a multi-account Mac, selects which configured Mail.app account sends. Omit to use Mail's default account.
confirmNoPreview first: the call only previews (nothing is sent) unless confirm:true. Set true to actually send.false
subjectYesSubject line.
rememberNoWith confirm: true, also stop asking for this kind of action from now on. Only when the person said so ("don't ask again"). The person can revoke it in LMCP or with set_always_allowed.
html_bodyNoHTML body. Takes precedence over `body` when both are set.
attachmentsNoFiles to attach, as comma-separated absolute paths (e.g. a PDF).

Output Schema

NameRequiredDescriptionDefault
toNo
fromNo
sentNoMail accepted the message and it left Mail's Outbox. false with queued_in_outbox: accepted and still in the Outbox at the last check (it usually leaves within seconds). Where the Sent copy lives is sent_copy.
subjectNo
sent_copyNoserver: the account stores sent messages on the server; local_only: only on this Mac (not in Sent Items on the web); unknown: Mail did not say.
queued_noteNo
account_typeNoMail's type for the sending account (imap, pop, iCloud, ews…), when known.
sent_copy_noteNo
queued_in_outboxNotrue when the message is still in Mail's Outbox 8 s after the send. Mail usually sends it within seconds; do not send it again.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / remember
      Added value: +{
      +  "description": "With confirm: true, also stop asking for this kind of action from now on. Only when the person said so (\"don't ask again\"). The person can revoke it in LMCP or with set_always_allowed.",
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / queued_in_outbox / description
      Previous value: -"true when the message is still in Mail's Outbox 4 s after the send: it has not left this Mac. Do not send it again; Mail sends it when the account connects."New value: +"true when the message is still in Mail's Outbox 8 s after the send. Mail usually sends it within seconds; do not send it again."
    • changedOutput schema / properties / sent / description
      Previous value: -"Mail accepted the message and it left Mail's Outbox. false with queued_in_outbox: accepted but not sent yet. Where the Sent copy lives is sent_copy."New value: +"Mail accepted the message and it left Mail's Outbox. false with queued_in_outbox: accepted and still in the Outbox at the last check (it usually leaves within seconds). Where the Sent copy lives is sent_copy."
  2. Changed4 schema fields changed
    • changedInput schema / properties / confirm / description
      Previous value: -"Safety gate: the call only PREVIEWS (nothing is sent) unless confirm:true. Set true to actually send."New value: +"Preview first: the call only previews (nothing is sent) unless confirm:true. Set true to actually send."
    • addedOutput schema / properties / queued_in_outbox
      Added value: +{
      +  "description": "true when the message is still in Mail's Outbox 4 s after the send: it has not left this Mac. Do not send it again; Mail sends it when the account connects.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / queued_note
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / sent / description
      Previous value: -"Mail accepted the message and sent it. Where the Sent copy lives is sent_copy."New value: +"Mail accepted the message and it left Mail's Outbox. false with queued_in_outbox: accepted but not sent yet. Where the Sent copy lives is sent_copy."
  3. Changed4 schema fields changed
    • addedOutput schema / properties / account_type
      Added value: +{
      +  "description": "Mail's type for the sending account (imap, pop, iCloud, ews…), when known.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / sent / description
      Added value: +"Mail accepted the message and sent it. Where the Sent copy lives is sent_copy."
    • addedOutput schema / properties / sent_copy
      Added value: +{
      +  "description": "server: the account stores sent messages on the server; local_only: only on this Mac (not in Sent Items on the web); unknown: Mail did not say.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / sent_copy_note
      Added value: +{
      +  "type": "string"
      +}
  4. Changed9 schema fields changed
    • addedInput schema / properties / attachments / description
      Added value: +"Files to attach, as comma-separated absolute paths (e.g. a PDF)."
    • addedInput schema / properties / bcc / description
      Added value: +"BCC address(es), comma-separated."
    • addedInput schema / properties / body / description
      Added value: +"Plain-text body. Use this OR html_body; if both are given, html_body wins."
    • addedInput schema / properties / cc / description
      Added value: +"CC address(es), comma-separated."
    • addedInput schema / properties / confirm / description
      Added value: +"Safety gate: the call only PREVIEWS (nothing is sent) unless confirm:true. Set true to actually send."
    • addedInput schema / properties / from / description
      Added value: +"Sender address — on a multi-account Mac, selects which configured Mail.app account sends. Omit to use Mail's default account."
    • addedInput schema / properties / html_body / description
      Added value: +"HTML body. Takes precedence over `body` when both are set."
    • addedInput schema / properties / subject / description
      Added value: +"Subject line."
    • addedInput schema / properties / to / description
      Added value: +"Recipient address(es), comma-separated for multiple."
  5. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description discloses important behavioral quirks: Mail sends automation-composed messages as a quoted block and may decompose accented letters to NFD, with the result note indicating this. These are non-obvious side effects that materially affect whether and how an agent should invoke the tool.

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?

The description is compact and front-loaded with the primary usage condition. Each sentence adds useful information: client scope, body format support, Mail.app behavioral caveats, sibling alternative, and two parameter hints.

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 the output schema exists, the annotations cover write/open-world behavior, and the input schema is fully documented, the description supplies the remaining decision-critical context: Apple Mail scope, alternative tool, and Mail.app-specific message quirks.

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 schema already documents all ten parameters. The description adds some practical context for `from` and `attachments`, but does not cover confirm/remember or body/html precedence beyond what the schema already states.

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: send an email via Mail.app on the Mac. It clearly distinguishes the tool from m365_send_email when the Microsoft 365 account is not configured in Mail.app.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when to use this tool, including the requirement that the account be configured in Apple Mail, and names m365_send_email as the alternative for Microsoft 365 accounts not added to Mail.app. This gives the agent a clear routing rule.

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