draft_create
Create an unsent email draft for new, reply, or forward messages. Set recipients, subject, body, and attachments, then send separately later.
Instructions
Create a draft (fresh, reply, or forward). DOES NOT SEND.
To actually send, call draft_send(draft_id) as a separate step
after reviewing/editing the draft. The split is intentional —
sending requires its own explicit action and is the only path where
the outbound allowlist policy is enforced.
Modes (driven by reply_to / forward_of):
Neither: fresh draft (
subjectrequired).reply_to=<message_id>: reply draft. Mail.app auto-derives recipients and subject prefix unless overridden.forward_of=<message_id>: forward draft. Recipients default to empty (user must specify); subject prefixed withFwd:.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | ||
| to | No | ||
| bcc | No | ||
| body | No | Body text. For reply/forward, replaces Mail's auto-quoted content if non-empty. | |
| subject | No | Subject line. Required for fresh drafts; optional for reply/forward (None keeps Mail's auto-derived prefix). | |
| reply_to | No | Message id to reply to. Mutually exclusive with ``forward_of``. | |
| reply_all | No | For ``reply_to`` only — use Mail's reply-all logic. | |
| forward_of | No | Message id to forward. Mutually exclusive with ``reply_to``. | |
| from_account | No | Mail.app account name or UUID. None uses Mail's default sender for the seed message. | |
| template_name | No | ||
| template_vars | No | ||
| attachment_paths | No | File paths to attach. Each must exist. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||