trash_email
Move a specific email to the Trash folder using its RFC message-id, without permanently deleting it.
Instructions
Move a message to Deleted Messages (trash) by RFC message-id. Does not permanently delete.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes | RFC message-id (with or without angle brackets) |
Implementation Reference
- src/tools/trash.ts:20-33 (handler)The handler function for trash_email. It calls findMessageAndAct with the message_id and the AppleScript delete action, returning success or not-found error.
async ({ message_id }) => { const result = await findMessageAndAct({ messageId: message_id, action: ACTION, }); if (result === MESSAGE_NOT_FOUND) { return { content: [{ type: "text", text: `No message found with id ${message_id}` }], isError: true, }; } return { content: [{ type: "text", text: result }] }; }, ); - src/tools/trash.ts:5-7 (schema)Zod schema: expects a string `message_id` (RFC message-id).
const schema = { message_id: z.string().describe("RFC message-id (with or without angle brackets)"), }; - src/tools/trash.ts:14-34 (registration)Registers 'trash_email' as an MCP tool with the server, including title, description, schema, and handler.
export function register(server: McpServer): void { server.tool( "trash_email", "Move a message to Deleted Messages (trash) by RFC message-id. Does not permanently delete.", schema, { title: "Trash Email", readOnlyHint: false, destructiveHint: true }, async ({ message_id }) => { const result = await findMessageAndAct({ messageId: message_id, action: ACTION, }); if (result === MESSAGE_NOT_FOUND) { return { content: [{ type: "text", text: `No message found with id ${message_id}` }], isError: true, }; } return { content: [{ type: "text", text: result }] }; }, ); } - src/server.ts:13-33 (registration)Top-level server registration: imports and invokes the trash tool's register function.
import { register as registerTrash } from "./tools/trash.js"; import { register as registerCreateMailbox } from "./tools/create_mailbox.js"; import { register as registerBulkMarkRead } from "./tools/bulk_mark_read.js"; import { register as registerGetUnsubscribeLink } from "./tools/get_unsubscribe_link.js"; import { register as registerListSenders } from "./tools/list_senders.js"; import { register as registerEmptyMailbox } from "./tools/empty_mailbox.js"; const server = new McpServer({ name: "mail-app-mcp", version: "1.0.0", }); registerSearch(server); registerRead(server); registerAccounts(server); registerListRecent(server); registerSend(server); registerReply(server); registerFlags(server); registerMove(server); registerTrash(server); - src/tools/trash.ts:9-12 (helper)AppleScript action snippet that deletes the found message and returns 'ok'.
const ACTION = ` delete foundMsg return "ok" `;