Skip to main content
Glama

move_messages

Transfer email messages between different mailboxes to organize your iCloud email storage effectively.

Instructions

Move messages between mailboxes

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
destinationMailboxYesDestination mailbox name
messageIdsYesArray of message IDs to move
sourceMailboxYesSource mailbox name

Implementation Reference

  • src/index.ts:174-196 (registration)
    Registration of the move_messages tool in the ListTools response, including name, description, and input schema.
    { name: 'move_messages', description: 'Move messages between mailboxes', inputSchema: { type: 'object', properties: { messageIds: { type: 'array', items: { type: 'string' }, description: 'Array of message IDs to move', }, sourceMailbox: { type: 'string', description: 'Source mailbox name', }, destinationMailbox: { type: 'string', description: 'Destination mailbox name', }, }, required: ['messageIds', 'sourceMailbox', 'destinationMailbox'], }, },
  • MCP server handler for calling the move_messages tool: checks connection, extracts parameters, invokes iCloudMailClient.moveMessages, and returns JSON response.
    case 'move_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 sourceMailbox = args?.sourceMailbox as string; const destinationMailbox = args?.destinationMailbox as string; const result = await mailClient.moveMessages( messageIds, sourceMailbox, destinationMailbox ); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], }; }
  • Core implementation of moveMessages in iCloudMailClient: opens source mailbox, searches all messages, moves them to destination using IMAP.
    async moveMessages( _messageIds: string[], sourceMailbox: string, destinationMailbox: string ): Promise<{ status: string; message: string }> { return new Promise((resolve) => { this.imap.openBox(sourceMailbox, false, (err: Error) => { if (err) { resolve({ status: 'error', message: `Failed to open source mailbox '${sourceMailbox}': ${err.message}`, }); return; } // Search for all messages to get sequence numbers 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 source mailbox', }); return; } // Use the sequence numbers for moving this.imap.move(results, destinationMailbox, (err: Error) => { if (err) { resolve({ status: 'error', message: `Failed to move messages: ${err.message}`, }); return; } resolve({ status: 'success', message: `Successfully moved ${results.length} messages from '${sourceMailbox}' to '${destinationMailbox}'`, }); }); }); }); }); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Racimy/iMail-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server