reply_email
Email · macOS
Effect: send (strongest supported action). Status: gated.
Gated means the tool requires an installed app, a connected account, permission, or runtime availability. Check those requirements on the listed platform before using it.
macOS
Purpose
Use this when the user wants to reply to an email that lives in the Mac's Apple Mail (message ID from list_emails/search_emails). Previews before sending. The reply that is sent holds your text followed by a plain-text quote of the original ("On <date>, <sender> wrote:" and the original's lines prefixed with `> `), in the same thread; `html_body` is converted to plain text. If the original has no readable text the reply is sent with your text only and the response says so (`quoted_original: false` and a warning to relay). To leave the reply in Drafts WITHOUT sending, pass `save_as_draft: true`: the draft is in the right thread with the Reply/Reply-All recipients and holds the same content (not Mail's styled quote), and `send` is never called. On either path, if Mail does not keep the text or the quote, the call fails and nothing is sent or saved. `create_draft` with `reply_to_message_id` leaves the same kind of draft. For a Microsoft 365 message ID from m365_list_emails, use m365_reply_email. Pass `account` (from list_emails/search_emails results) to skip scanning other accounts and avoid timeouts on multi-account Macs.
Required inputs
message_id— Id of the message to reply to (from list_emails/search_emails).
Permissions and confirmation
Explicit confirmation parameter: inspect the schema and tool description before any real call. The documentation example keeps confirm false. Obtain user authorization before performing the action.
- Use only the apps, accounts and resources authorized by the user on this platform. Consult this tool's platform-specific description for its connection and permission requirements; this catalog does not assert additional OAuth scopes or OS entitlements.
Full input schema — macOS
{
"properties": {
"account": {
"description": "Account (from the listing) the message is in — pass it to skip scanning other accounts and avoid multi-account timeouts.",
"type": "string"
},
"body": {
"description": "Plain-text reply body.",
"type": "string"
},
"confirm": {
"default": "false",
"description": "Consent gate: the first call previews the reply; call again with confirm=true to actually SEND it — or to save it when save_as_draft is set.",
"type": "boolean"
},
"html_body": {
"description": "HTML reply body. Takes precedence over `body` when both are given. It is converted to plain text: a reply is sent, or saved, as text with a plain-text quote of the original.",
"type": "string"
},
"message_id": {
"description": "Id of the message to reply to (from list_emails/search_emails).",
"type": "string"
},
"reply_all": {
"default": "false",
"description": "Reply to all original recipients instead of just the sender.",
"type": "boolean"
},
"save_as_draft": {
"default": "false",
"description": "Save the reply in Drafts instead of sending it: your text followed by a plain-text quote of the original, in the right thread, with the Reply/Reply-All recipients. Nothing is sent on this path.",
"type": "boolean"
}
},
"required": [
"message_id"
],
"type": "object"
}Documentation example
Do not execute this example. These concrete inputs refer to a fictional demonstration dataset. Resolve real handles and obtain user authorization before any real call.
{
"body": "Can we review the launch checklist on Tuesday?",
"confirm": false,
"message_id": "demo-message-001"
}