Mark Message
cascade_mark_messageChange a Cascade inbox message's status to read, unread, archive, or unarchive using its identifier.
Instructions
Mark a Cascade inbox message as read, unread, archive, or unarchive.
Toggles the status of a single message. markType controls the action: "read"/"unread" swap the read flag; "archive"/"unarchive" move the message between the inbox and the archive. This is idempotent — marking an already-read message as "read" is a no-op.
Args:
identifier (object, required): The message to mark
id (string, required): Message ID (from cascade_list_messages)
type (string, required): Must be "message"
markType (string, required): One of "read" | "unread" | "archive" | "unarchive"
Returns: Cascade OperationResult: { success: true } On failure: { success: false, message: "" }
Examples:
Use when: "Mark a workflow notice as read" -> { identifier: { type: "message", id: "..." }, markType: "read" }
Use when: "Archive an old notification" -> { identifier: { type: "message", id: "..." }, markType: "archive" }
Don't use when: You want to delete — use cascade_delete_message.
Don't use when: You want to list — use cascade_list_messages.
Error Handling:
"Message not found" when the identifier doesn't resolve
"Invalid markType" when markType is outside the allowed set
"Permission denied" when the message belongs to another user. Responses are JSON text; structuredContent is authoritative when the response fits. Oversized responses return bounded _cache metadata for cascade_read_response. For cascade_read, read_mode controls preview versus raw Cascade payload shape.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | No | The message to mark. | |
| markType | No | REQUIRED: Action to apply to the message: 'read' | 'unread' | 'archive' | 'unarchive'. |