Skip to content
All tools

m365_move_email

Microsoft 365 · macOS · Windows

Effect: write (strongest supported action). Status: gated.

Gated means the tool requires an installed app, a connected account, permission, or runtime availability. Check those requirements on the listed platform before using it.

macOS

Purpose

Use this when the user wants emails of their Microsoft 365 / Outlook account moved to another folder on the Exchange server, to file, archive or organize them. Name the messages with message_id (one) or message_ids (up to 50), from m365_list_emails, m365_search_emails or m365_read_email; or a whole conversation with conversation_id (from m365_list_emails or m365_search_emails): then only its messages in source_folder (default inbox) move, never its copies in Sent Items, Drafts or other folders, unless all_folders=true. destination is a folder id, name or path from m365_list_email_folders, or inbox, archive, deleteditems, junkemail. Shows a preview first — set confirm=true to move. A message counts as moved only when a second read shows it in the destination and no longer at its old id; a moved message gets a new id (new_id). Needs the Microsoft 365 permission Mail.ReadWrite: an account connected before it was asked for answers consent_required until it is connected again. For mail in the Mac's Mail app, use move_email.

Required inputs

Permissions and confirmation

Explicit confirmation parameter: inspect the schema and tool description before any real call. The documentation example keeps confirm false. Obtain user authorization before performing the action.

Full input schema — macOS
{
  "properties": {
    "account": {
      "description": "Which connected Microsoft 365 account to use: its email (UPN), its id from list_m365_accounts, or its display name when unique. Leave it out to use the default account.",
      "type": "string"
    },
    "all_folders": {
      "description": "With conversation_id: true moves its messages from every folder, Sent Items and Drafts included (default false).",
      "type": "boolean"
    },
    "confirm": {
      "description": "Set to true to move (default: shows a preview only).",
      "type": "boolean"
    },
    "conversation_id": {
      "description": "Move the messages of this conversation that are in source_folder.",
      "type": "string"
    },
    "destination": {
      "description": "The folder to move them to: an id, name or path from m365_list_email_folders, or inbox, archive, deleteditems, junkemail.",
      "type": "string"
    },
    "message_id": {
      "description": "The ID of one message to move.",
      "type": "string"
    },
    "message_ids": {
      "description": "IDs of up to 50 messages to move.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "source_folder": {
      "description": "With conversation_id: the folder its messages are moved from (default inbox). An id, name or path.",
      "type": "string"
    }
  },
  "required": [
    "destination"
  ],
  "type": "object"
}

Documentation example

Do not execute this example. These concrete inputs refer to a fictional demonstration dataset. Resolve real handles and obtain user authorization before any real call.

{
  "confirm": false,
  "destination": "archive",
  "message_id": "demo-message-001"
}

Windows

Purpose

Use this when the user wants emails of their Microsoft 365 / Outlook account moved to another folder on the Exchange server, to file, archive or organize them. Name the messages with message_id (one) or message_ids (up to 50), from m365_list_emails, m365_search_emails or m365_read_email; or a whole conversation with conversation_id (from m365_list_emails or m365_search_emails): then only its messages in source_folder (default inbox) move, never its copies in Sent Items, Drafts or other folders, unless all_folders=true. destination is a folder id, name or path from m365_list_email_folders, or inbox, archive, deleteditems, junkemail. Shows a preview first — set confirm=true to move. A message counts as moved only when a second read shows it in the destination and no longer at its old id; a moved message gets a new id (new_id). Needs the Microsoft 365 permission Mail.ReadWrite: an account connected before it was asked for answers consent_required until it is connected again. For mail in the classic Outlook app on this PC, use outlook_move_email.

Required inputs

Permissions and confirmation

Explicit confirmation parameter: inspect the schema and tool description before any real call. The documentation example keeps confirm false. Obtain user authorization before performing the action.

Full input schema — Windows
{
  "properties": {
    "account": {
      "description": "Which connected Microsoft 365 account to use: its email (UPN), its id from list_m365_accounts, or its display name when unique. Leave it out to use the default account.",
      "type": "string"
    },
    "all_folders": {
      "description": "With conversation_id: true moves its messages from every folder, Sent Items and Drafts included (default false).",
      "type": "boolean"
    },
    "confirm": {
      "description": "Set to true to move (default: shows a preview only).",
      "type": "boolean"
    },
    "conversation_id": {
      "description": "Move the messages of this conversation that are in source_folder.",
      "type": "string"
    },
    "destination": {
      "description": "The folder to move them to: an id, name or path from m365_list_email_folders, or inbox, archive, deleteditems, junkemail.",
      "type": "string"
    },
    "message_id": {
      "description": "The ID of one message to move.",
      "type": "string"
    },
    "message_ids": {
      "description": "IDs of up to 50 messages to move.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "source_folder": {
      "description": "With conversation_id: the folder its messages are moved from (default inbox). An id, name or path.",
      "type": "string"
    }
  },
  "required": [
    "destination"
  ],
  "type": "object"
}

Documentation example

Do not execute this example. These concrete inputs refer to a fictional demonstration dataset. Resolve real handles and obtain user authorization before any real call.

{
  "confirm": false,
  "destination": "archive",
  "message_id": "demo-message-001"
}