Skip to main content
Glama

Get one mail message

mail_get_message
Read-onlyIdempotent

Fetch a single email message with body, sender, recipients, timestamps, importance, conversation ID, and web link. Use preview to skip body when only identification is needed.

Instructions

Returns one message with its body plus sender, recipients, timestamps, importance, conversationId and webLink. The body defaults to plain text and is capped at 8000 characters; raise maxBodyChars for a long thread, or pass format:"preview" to skip the body when you only need to identify the message. Attachment contents are never included — use mail_list_attachments. Reading a message here does not mark it read; use mail_mark_read for that.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesThe message id, as returned by mail_list_messages.
formatNoHow to return the body. "text" (default) asks Graph for plain text and strips any HTML that comes back anyway. "html" returns the raw markup, which costs several times more tokens. "preview" skips the body entirely and returns only the 255-character bodyPreview — use it when you just need to confirm you have the right message.text
maxBodyCharsNoCharacter budget for the body. Defaults to 8000, which covers most messages. The server's own output cap still applies on top of this.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds valuable behavioral context beyond annotations: the body caps at 8000 characters (with maxBodyChars override), preview skips the body, attachment contents are never included, and reading does not change read state. No contradictions with 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?

Three sentences with zero filler: the first fronts the core return value, the second covers body format and size, and the third handles attachments and read-state side effects. Every sentence earns its place, and the most important information (what the tool returns) comes first.

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?

For a 1-required-parameter tool with no output schema, the description covers all essential aspects: return fields, body format and truncation, the preview mode, exclusion of attachments, and the lack of a read-mark side effect. It also names the relevant sibling tools for follow-up actions. Nothing an agent needs to call this tool correctly is missing.

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 coverage is 100% and the schema already documents all three parameters well. The description adds practical guidance beyond the schema by explaining when to raise maxBodyChars ('for a long thread') and when to use format:'preview' ('when you only need to identify the message'), which helps the agent choose correct values in context. This exceeds the baseline of 3 for full schema coverage.

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 ('Returns') and resource ('one message') and enumerates the returned fields (body, sender, recipients, timestamps, importance, conversationId, webLink). It clearly differentiates from siblings by noting attachments are excluded and reading does not mark as read, so an agent can distinguish it from mail_list_messages, mail_list_attachments, and mail_mark_read without opening schemas.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use and when-not-to-use guidance: it tells the agent to use mail_list_attachments when attachment contents are needed, mail_mark_read to mark as read, and format:'preview' when only identifying the message. These are direct routing instructions to sibling tools, leaving nothing to inference.

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