Skip to main content
Glama

Read a message

messages_get
Read-only

Read one message in a connected mailbox, with its headers and its body. A message whose recipients one answer cannot carry names the first that fit, omittedRecipients counting the rest. The times it answers with carry their offset in the person's own time zone, which the answer names under now beside their time now in it - UTC where the person has stored no zone, as now says.

Input Schema

NameRequiredDescriptionDefault
idYesThe message's id, as a search or a thread read answered it, or a draft's own id.
viewNofull, the default, carries each message's text and attachments; summary leaves those out; headers leaves out the subject and snippet too.
mailboxYesThe mailbox's name or its email address.

Output Schema

NameRequiredDescriptionDefault
ccYes
idYes
toYes
bccYes
nowYesThe person's own time zone, in which every time this answer gives is written, and their time now in it.
bodyNo
dateYes
fromYes
linkNo
draftYes
focusNoOutlook alone, on a message in the inbox: whether it sits in Focused or Other.
folderNo
listIdNoOn a message read alone, the mailing list it came from, as its List-Id header names it.
unreadYes
draftIdYes
flaggedNo
hasFileNoWhether the message carries a file.
replyToNoOn a message read alone, where a reply goes in place of the sender, as its Reply-To names it.
snippetNo
subjectNo
answeredNo
labelIdsYes
threadIdYes
importantNoWhether it is marked important: Gmail's own importance mark, Outlook's high importance. A password mailbox other than a Gmail keeps none.
bodyFormatNo
categoriesNo
invitationNoWhether it invites to a meeting or updates one; a cancellation or an answer to one does not.
attachmentsNo
mailingListNoWhether it names a mailing list it came from, in a List-Id or List-Unsubscribe header.
unsubscribeNoOn a message read alone, where its sender takes requests to leave the list, as its List-Unsubscribe header names them - shown, never followed.
authenticationNoOn a message read alone, whether its sender passed authentication as the server that received it judged it, never as Lumman would: that server's DMARC result, on Outlook Microsoft's composite verdict - pass where the From address is proven. Absent where no server Lumman knows for the provider wrote one.
omittedCharactersNo
omittedRecipientsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedOutput schema / properties / authentication
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "On a message read alone, whether its sender passed authentication as the server that received it judged it, never as Lumman would: that server's DMARC result, on Outlook Microsoft's composite verdict - pass where the From address is proven. Absent where no server Lumman knows for the provider wrote one.",
      +  "properties": {
      +    "check": {
      +      "enum": [
      +        "dmarc",
      +        "compauth"
      +      ],
      +      "type": "string"
      +    },
      +    "result": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "check",
      +    "result"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / listId
      Added value: +{
      +  "description": "On a message read alone, the mailing list it came from, as its List-Id header names it.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / replyTo
      Added value: +{
      +  "description": "On a message read alone, where a reply goes in place of the sender, as its Reply-To names it.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / unsubscribe
      Added value: +{
      +  "description": "On a message read alone, where its sender takes requests to leave the list, as its List-Unsubscribe header names them - shown, never followed.",
      +  "type": "string"
      +}
  2. Changed5 schema fields changed
    • addedOutput schema / properties / focus
      Added value: +{
      +  "description": "Outlook alone, on a message in the inbox: whether it sits in Focused or Other.",
      +  "enum": [
      +    "focused",
      +    "other"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / hasFile
      Added value: +{
      +  "description": "Whether the message carries a file.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / important
      Added value: +{
      +  "description": "Whether it is marked important: Gmail's own importance mark, Outlook's high importance. A password mailbox other than a Gmail keeps none.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / invitation
      Added value: +{
      +  "description": "Whether it invites to a meeting or updates one; a cancellation or an answer to one does not.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / mailingList
      Added value: +{
      +  "description": "Whether it names a mailing list it came from, in a List-Id or List-Unsubscribe header.",
      +  "type": "boolean"
      +}
  3. Changed1 schema field changed
    • addedOutput schema / properties / answered
      Added value: +{
      +  "type": "boolean"
      +}
  4. Changed2 schema fields changed
    • addedOutput schema / properties / now
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "The person's own time zone, in which every time this answer gives is written, and their time now in it.",
      +  "properties": {
      +    "noneStored": {
      +      "description": "Present where the person has stored no time zone: that every time here is UTC, and how one gets stored.",
      +      "type": "string"
      +    },
      +    "time": {
      +      "type": "string"
      +    },
      +    "timeZone": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "timeZone",
      +    "time"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "id",
      -  "threadId",
      -  "from",
      -  "to",
      -  "cc",
      -  "bcc",
      -  "date",
      -  "draft",
      -  "draftId",
      -  "unread",
      -  "labelIds"
      -]New value: +[
      +  "id",
      +  "threadId",
      +  "from",
      +  "to",
      +  "cc",
      +  "bcc",
      +  "date",
      +  "draft",
      +  "draftId",
      +  "unread",
      +  "labelIds",
      +  "now"
      +]
  5. Changed1 schema field changed
    • removedOutput schema / properties / folder / enum
      Removed value: -[
      -  "inbox",
      -  "sent",
      -  "archive",
      -  "drafts",
      -  "deleted",
      -  "junk",
      -  "other"
      -]
  6. Changed1 schema field changed
    • addedOutput schema / properties / omittedRecipients
      Added value: +{
      +  "type": "number"
      +}
  7. Changed2 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  8. Changed1 schema field changed
    • changedOutput schema / required
      Previous value: -[
      -  "id",
      -  "threadId",
      -  "from",
      -  "to",
      -  "cc",
      -  "bcc",
      -  "date",
      -  "draft",
      -  "draftId",
      -  "unread",
      -  "labelIds",
      -  "link"
      -]New value: +[
      +  "id",
      +  "threadId",
      +  "from",
      +  "to",
      +  "cc",
      +  "bcc",
      +  "date",
      +  "draft",
      +  "draftId",
      +  "unread",
      +  "labelIds"
      +]
  9. Changed16 schema fields changed
    • removedOutput schema / properties / bcc / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / bcc / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / cc / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / cc / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / date / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / date / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / draftId / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / draftId / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / from / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / from / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / snippet / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / snippet / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / subject / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / subject / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / to / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / to / type
      Added value: +[
      +  "string",
      +  "null"
      +]
  10. First observed

TDQS

B3.4/5.0
Behavior4/5

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

With annotations already declaring a safe read-only, non-destructive, closed-world operation, the description adds useful behavioral context beyond those fields. It explains recipient truncation via omittedRecipients and timezone-offset formatting in the response, though it does not cover permission requirements or error cases.

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

Conciseness3/5

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

The definition is front-loaded with a clear first sentence, but the later sentences about omittedRecipients and timezone formatting are convoluted and harder to parse than necessary. The content earns its place, but the phrasing is not concise.

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?

The tool has a complete input schema, an output schema, and annotations covering safety, so the description need not explain every return field. It still adds context about recipient truncation and timezone representation, and is largely complete for an agent to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the id, view, and mailbox semantics are already documented in the schema. The description does not add parameter-specific syntax or selection guidance beyond what the schema provides, making the baseline 3 appropriate.

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

Purpose4/5

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

The first sentence clearly states a specific verb and resource: reading one message in a connected mailbox, including headers and body. It distinguishes a single-message operation from list-style siblings through the phrase 'one message,' but it does not explicitly name alternatives such as messages_list or threads_get.

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

Usage Guidelines2/5

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

The description implies usage by saying it reads one message, but it gives no explicit guidance about when to choose this over messages_list, threads_get, or messages_attachments_get. There are no exclusions, prerequisites, or alternative-selection cues.

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.