Skip to main content
Glama

batch_move_messages

Move multiple messages to a specified folder in a single batch operation, using a folder ID or well-known destination such as archive or inbox.

Instructions

Move a list of messages to the given folder.

destination accepts a folder id OR one of the well-known names that move_message already supports ('archive', 'inbox', 'junkemail', 'deleteditems', 'sentitems', 'drafts'). Graph resolves well-known names server-side, so we pass through without local resolution.

Spec deviation: Spec §6.3 calls for pre-resolving well-known names to folder ids. In practice Graph's /move endpoint accepts well-known names directly (this is how the existing single-message move_message already works — see src/msgraph_mcp/tools/mail_folders.py). We pass through unchanged. If a real-world test surfaces a case where Graph rejects a well-known name in $batch but accepts it in single calls, add resolution then.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
mailboxNo
destinationYes
message_idsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.2

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations present, the description carries the full burden, and it delivers: it discloses the pass-through behavior ('Graph resolves well-known names server-side, so we pass through without local resolution'), flags a spec deviation from Spec §6.3, cites the reference implementation, and even records the contingency for a future failure mode. This is unusually rich behavioral context for an agent.

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

Conciseness4/5

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

The description is front-loaded: purpose first, then destination semantics, with the spec-deviation context placed at the end. The deviation paragraph is somewhat verbose for an AI agent (the file path and contingency plan are developer-oriented), but every sentence about behavior earns its place.

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

Completeness4/5

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

Against a backdrop of no annotations and no output schema, the description covers purpose, destination semantics, pass-through behavior, and its relation to move_message. It does not, however, explain return behavior or partial-failure semantics for a $batch operation, which an agent would want to know for a list-based mutation.

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 0%, so the description must compensate. It thoroughly specifies the destination parameter — folder id OR the enumerated well-known names 'archive', 'inbox', 'junkemail', 'deleteditems', 'sentitems', 'drafts' — which is exactly the ambiguity the schema leaves open (no enums, no descriptions). The mailbox parameter, however, gets no semantic explanation beyond its string|null type and default.

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 opening sentence 'Move a list of messages to the given folder' states a specific verb (move), resource (a list of messages), and target (folder). This cleanly distinguishes the tool from its single-message sibling move_message and from batch_archive_messages, which targets only the archive folder.

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

Usage Guidelines3/5

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

The description ties the tool's destination semantics to the existing move_message ('the well-known names that move_message already supports'), signaling behavioral consistency with that sibling. However, it never explicitly states when to choose this batch tool over move_message or batch_archive_messages — the selection criteria are only implied by the name and the phrase 'a list of messages.'

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