delete_messages
Remove specific emails from your iCloud mailbox by providing message IDs to clean up your inbox and manage email storage.
Instructions
Delete messages from a mailbox
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mailbox | No | Mailbox name (default: INBOX) | INBOX |
| messageIds | Yes | Array of message IDs to delete |
Implementation Reference
- src/index.ts:621-642 (handler)MCP tool handler for 'delete_messages' that extracts arguments, calls the iCloudMailClient.deleteMessages method, and returns the result as text content.case 'delete_messages': { if (!mailClient) { throw new McpError( ErrorCode.InvalidRequest, 'iCloud Mail not configured. Please set ICLOUD_EMAIL and ICLOUD_APP_PASSWORD environment variables.' ); } const messageIds = args?.messageIds as string[]; const mailbox = (args?.mailbox as string) || 'INBOX'; const result = await mailClient.deleteMessages(messageIds, mailbox); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], }; }
- src/index.ts:238-257 (schema)Input schema definition for the 'delete_messages' tool, specifying required messageIds array and optional mailbox.{ name: 'delete_messages', description: 'Delete messages from a mailbox', inputSchema: { type: 'object', properties: { messageIds: { type: 'array', items: { type: 'string' }, description: 'Array of message IDs to delete', }, mailbox: { type: 'string', description: 'Mailbox name (default: INBOX)', default: 'INBOX', }, }, required: ['messageIds'], }, },
- Helper method in iCloudMailClient that deletes all messages in the specified mailbox by adding the \\Deleted flag and expunging (ignores provided messageIds).async deleteMessages( _messageIds: string[], mailbox: string = 'INBOX' ): Promise<{ status: string; message: string }> { return new Promise((resolve) => { this.imap.openBox(mailbox, false, (err: Error) => { if (err) { resolve({ status: 'error', message: `Failed to open mailbox '${mailbox}': ${err.message}`, }); return; } this.imap.search(['ALL'], (err: Error, results: number[]) => { if (err) { resolve({ status: 'error', message: `Failed to search messages: ${err.message}`, }); return; } if (!results || results.length === 0) { resolve({ status: 'error', message: 'No messages found in mailbox', }); return; } this.imap.addFlags(results, ['\\Deleted'], (err: Error) => { if (err) { resolve({ status: 'error', message: `Failed to mark messages for deletion: ${err.message}`, }); return; } this.imap.expunge((err: Error) => { if (err) { resolve({ status: 'error', message: `Failed to expunge deleted messages: ${err.message}`, }); return; } resolve({ status: 'success', message: `Successfully deleted ${results.length} messages from '${mailbox}'`, }); }); }); }); }); }); }