update_message
Update one or more messages by changing read state, flag, or moving them in a single atomic call. Specify only the fields to change.
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.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"message_ids": "<message_ids>"
},
"name": "update_message"
}
}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 | |||