proton_delete_email
Delete Proton Mail emails by moving them to the Trash folder using folder names and email UIDs.
Instructions
Delete an email by moving it to the Trash folder. Use the folder name and email UID.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | INBOX | |
| uid | Yes |
Implementation Reference
- src/tools/delete.ts:25-47 (handler)The handler for the proton_delete_email tool which calls the deleteMessage service.
async (params: z.infer<typeof DeleteEmailSchema>) => { try { await deleteMessage(params.folder, params.uid); return { content: [ { type: 'text', text: `Email UID ${params.uid} deleted successfully (moved to Trash)`, }, ], }; } catch (error) { return { content: [ { type: 'text', text: `Error deleting email: ${error instanceof Error ? error.message : String(error)}`, }, ], }; } } - src/services/imap.ts:337-353 (handler)The underlying service implementation that performs the actual email deletion by moving it to the 'Trash' folder via IMAP.
export async function deleteMessage(folder: string, uid: number): Promise<void> { const client = await getImapClient(); try { const lock = await client.getMailboxLock(folder); try { await client.mailboxOpen(folder); const result = await client.messageMove(String(uid), 'Trash', { uid: true }); if (!result) { throw new Error(`Message UID ${uid} not found in "${folder}"`); } } finally { lock.release(); } } finally { await client.logout(); } } - src/tools/delete.ts:11-49 (registration)Registration of the proton_delete_email tool in the MCP server.
export function registerDeleteEmailTool(server: McpServer) { server.registerTool( 'proton_delete_email', { title: 'Delete Email', description: 'Delete an email by moving it to the Trash folder. Use the folder name and email UID.', inputSchema: DeleteEmailSchema, annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false, }, }, async (params: z.infer<typeof DeleteEmailSchema>) => { try { await deleteMessage(params.folder, params.uid); return { content: [ { type: 'text', text: `Email UID ${params.uid} deleted successfully (moved to Trash)`, }, ], }; } catch (error) { return { content: [ { type: 'text', text: `Error deleting email: ${error instanceof Error ? error.message : String(error)}`, }, ], }; } } ); }