update_message
Update messages: change read status, flag, and/or move in one atomic call. Specify only the fields to change for a bulk update.
Instructions
Update one or more messages: change read state, flag, and/or move, in one atomic call (#135).
Patch semantics — caller specifies only the fields to change. All
specified mutations apply in a single AppleScript pass via the
bulk-update helper. Replaces the previous mark_as_read,
move_messages, and flag_message tools.
Order of operations (matters for IMAP): read-state and flag changes apply first (in source mailbox), then the move. IMAP requires the message to exist in the source folder for STORE before MOVE.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | Account name or UUID hosting the destination mailbox. Required when `destination_mailbox` is set; also used with `source_mailbox` for narrow-path optimization. | |
| flagged | No | True to flag (default red if no `flag_color` set), False to clear the flag, None to leave unchanged. | |
| flag_color | No | Color name (orange, red, yellow, blue, green, purple, gray, none). Implies `flagged=True` unless "none". Validated against the existing flag-color schema. | |
| gmail_mode | No | **Deprecated and ignored (#364).** Previously selected a copy+delete strategy that silently routed Gmail moves through Trash and lost the message. The move strategy is now chosen automatically (IMAP relabel when configured; otherwise a verified AppleScript move). A Gmail label move that can't be confirmed returns `error_type: "imap_required"` — configure IMAP with `apple-mail-fast-mcp setup-imap --account <name>`. Slated for removal at v1.0. | |
| message_ids | Yes | List of message IDs to update. | |
| read_status | No | True to mark as read, False to mark as unread, None to leave unchanged. | |
| source_mailbox | No | Source mailbox name. With `account`, narrows the AppleScript scan to one mailbox (O(N) instead of cross-scan). Required for reliable Gmail moves (the move is verified against the source). | |
| destination_mailbox | No | Move messages here (requires `account`). |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||