Skip to main content
Glama
A1-x-Tech

A1 Gmail MCP

Read a message

get_message
Read-onlyIdempotent

Retrieve a specific Gmail message by ID: decoded headers, plain-text and HTML bodies, and attachment metadata. Choose metadata-only, include HTML, or set body character limits.

Instructions

Fetches one message fully decoded: headers (from, to, cc, subject, date, messageId, inReplyTo, references — RFC 2047 words decoded), the plain-text body (base64/charset decoded), the HTML body when there is no text part or include_html=true, and attachment METADATA (filename, mimeType, sizeBytes, attachmentId — never the content; download bytes via raw_request users/me/messages//attachments/ if truly needed). Bodies are truncated at max_body_chars (default 50000) with textTruncated/htmlTruncated flags. metadata_only=true skips bodies entirely. To reply later, keep headers.messageId (for in_reply_to) and threadId.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
message_idYesThe message id from list_messages/get_thread output (not the RFC Message-ID header).
include_htmlNoReturn the decoded HTML body even when a text body exists (default false).
metadata_onlyNoHeaders and structure only, no body content.
max_body_charsNoTruncate each decoded body at this many characters (default 50000; a truncation flag is set when cut).
Behavior5/5

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

Despite annotations already declaring readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, the description goes far beyond them. It discloses concrete behavioral details: base64/charset decoding of bodies, truncation at max_body_chars with textTruncated/htmlTruncated flags, conditional HTML-only inclusion, and the fact that attachment content is never returned (only metadata). This transparency is essential for a tool that could otherwise surprise an agent with size limits or missing content. No contradiction 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.

Conciseness4/5

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

The description is dense but well-organized; it front-loads the primary action and then systematically details return components, truncation rules, and alternatives. Every sentence imparts critical information about behavior or edge cases. It is slightly long but justifiably so for a tool with decoding, truncation, and attachment-handling nuances. No filler or redundancy.

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?

With no output schema, the description must carry the full burden of return-value explanation, and it does: it enumerates decoded headers, plain-text and HTML bodies, attachment metadata (not content), truncation flags, and how to obtain actual bytes via raw_request. It also covers conditional behavior (include_html) and the metadata_only shortcut. An agent has all the information needed to call this tool correctly and interpret its results.

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%, but the description adds meaningful semantics beyond the schema's terse descriptions. It clarifies that message_id is not the RFC Message-ID header, explains the effect of include_html (return HTML even when a text body exists), metadata_only skips bodies entirely, and max_body_chars truncates with a flag. This enriches the parameter meanings, though the schema definitions already cover basic intent, so the value-add is high but not exhaustive.

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 opens with a specific verb-resource pair ('Fetches one message fully decoded') and enumerates exactly what is returned (headers, bodies, attachment metadata). It clearly distinguishes itself from list_messages (listing) and get_thread (thread-level) by focusing on a single message. The level of detail leaves no ambiguity about the tool's scope.

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?

Usage context is implied by the purpose ('Fetches one message') and the note 'To reply later, keep headers.messageId', but the description does not explicitly state when to use this tool versus siblings like get_thread, list_messages, or get_draft. No exclusions or alternative-routing conditions are given beyond the attachment-bytes mention for raw_request. The guidance is largely implicit rather than explicit.

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

Install Server

Other Tools

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/A1-x-Tech/mcp-google-gmail'

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