Skip to main content
Glama

Move Email

move_email
Destructive

Moves an email to another mailbox (nested target folders are found by name). Pass account= (returned by list_emails/search_emails) so the message lookup targets one account instead of scanning all of them — without it, multi-account Macs are slow and can time out on bulk moves. If you know the folder the message is in, also pass mailbox= (the mailbox field from the listing) so the lookup searches it first.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
accountNoMail.app account the message lives in (returned alongside the id). Pass it so the message is found in the right account.
confirmNoSet to true to actually move the message. Defaults to false.false
mailboxNoFolder the message is in TODAY, before the move. Passing it skips searching the other folders.
message_idYesThe message id returned by list_emails or search_emails. Accepts the bare id or the <angle-bracketed> form.
target_mailboxYesDestination folder, by name (see list_email_folders). Nested folders are found by their own name, not by a path.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
toNo
movedNo
warningNo
message_idNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • addedInput schema / properties / account / description
      Added value: +"Mail.app account the message lives in (returned alongside the id). Pass it so the message is found in the right account."
    • addedInput schema / properties / confirm / description
      Added value: +"Set to true to actually move the message. Defaults to false."
    • addedInput schema / properties / mailbox / description
      Added value: +"Folder the message is in TODAY, before the move. Passing it skips searching the other folders."
    • addedInput schema / properties / message_id / description
      Added value: +"The message id returned by list_emails or search_emails. Accepts the bare id or the <angle-bracketed> form."
    • addedInput schema / properties / target_mailbox / description
      Added value: +"Destination folder, by name (see list_email_folders). Nested folders are found by their own name, not by a path."
  2. Changed5 schema fields changed
    • removedInput schema / properties / account / description
      Removed value: -"Mail.app account the message lives in (returned alongside the id). Pass it so the message is found in the right account."
    • removedInput schema / properties / confirm / description
      Removed value: -"Set to true to actually move the message. Defaults to false."
    • removedInput schema / properties / mailbox / description
      Removed value: -"Folder the message is in TODAY, before the move. Passing it skips searching the other folders."
    • removedInput schema / properties / message_id / description
      Removed value: -"The message id returned by list_emails or search_emails. Accepts the bare id or the <angle-bracketed> form."
    • removedInput schema / properties / target_mailbox / description
      Removed value: -"Destination folder, by name (see list_email_folders). Nested folders are found by their own name, not by a path."
  3. Changed5 schema fields changed
    • addedInput schema / properties / account / description
      Added value: +"Mail.app account the message lives in (returned alongside the id). Pass it so the message is found in the right account."
    • addedInput schema / properties / confirm / description
      Added value: +"Set to true to actually move the message. Defaults to false."
    • addedInput schema / properties / mailbox / description
      Added value: +"Folder the message is in TODAY, before the move. Passing it skips searching the other folders."
    • addedInput schema / properties / message_id / description
      Added value: +"The message id returned by list_emails or search_emails. Accepts the bare id or the <angle-bracketed> form."
    • addedInput schema / properties / target_mailbox / description
      Added value: +"Destination folder, by name (see list_email_folders). Nested folders are found by their own name, not by a path."
  4. First observed

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses key behavioral nuances beyond the annotations: the requirement for confirmation (via the confirm parameter, though described in schema), the performance implications of omitting account (timeouts on multi-account Macs), the nested folder lookup by name rather than path, and the optimization of passing mailbox. These are not captured in the destructiveHint annotation, and the description adds significant context for correct and efficient usage without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, then efficiently packed with performance and optimization guidance. No word is wasted; it is concise, well-structured, and reads naturally.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, 2 required, output schema present), the description covers all critical aspects: the operation, nested folder behavior, performance considerations, and optimization strategies. Since an output schema exists and all parameters are described at 100% coverage, an agent has everything needed to invoke move_email correctly without additional resources.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already documented. The tool description adds value by explaining the underlying rationale and behavior for account and mailbox (e.g., 'targets one account instead of scanning all of them' and 'searches it first'), providing context beyond the schema's field descriptions. It does not add new meaning for message_id or target_mailbox beyond the schema, but the existing coverage plus added rationale justifies a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Moves') and resource ('an email') with a clear destination ('another mailbox'), and adds the nuance that nested target folders are found by name. This distinguishes it from sibling email tools like send_email, delete_email, or read_email, which have entirely different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear guidance on when to pass the optional account and mailbox parameters to improve performance and avoid timeouts (e.g., 'without it, multi-account Macs are slow and can time out on bulk moves'). However, it does not explicitly state when not to use this tool or name alternatives, though the tool's purpose is unique among siblings, making it obvious when to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources