Skip to main content
Glama

Get email

getEmail
Read-onlyIdempotent

Read one inbound email by id; read its attachments with getEmailAttachment. By default body_text leaves out quoted history and shows each link as an [n] marker; the links argument returns their targets. When body_next_offset is not null, call again with offset set to it. If parse_status is pending or processing, read it again shortly; failed means the body may be incomplete. full: true returns the stored record instead. Result: id, thread_id, received_at, from, to, subject, body_text, attachments, and parse_status when known; by default also preheader, body_source, body_chars, body_offset, body_next_offset, body_incomplete, quoted_chars_removed, image_count, link_count, and links when asked for; with full: status, from_email, to_email, body_html, parsed, auth and replies.

Input Schema

NameRequiredDescriptionDefault
idYesInbound email ID from listEmails or searchEmails.
fullNoReturn the stored record, with the HTML body, links, quoted history and authentication results, instead of the compact view for reading.
linksNoLink targets to include in `links`: all of them, or the [n] numbers you want. Leave it out for none. Not used with full.
offsetNoCharacter position in the body to start from: the body_next_offset of the previous result. Not used with full.
api_keyNoAPI key from createEmailAddress, used in place of sign-in.
max_charsNoHow much of body_text to return per call; read the rest with offset. Not used with full.

Output Schema

NameRequiredDescriptionDefault
idYesEmail id.
toYesRecipient address.
authNofull only: SPF, DKIM and DMARC results; their keys vary by message.
fromYesSender, as the From header shows it.
linksNoWith the links argument: the link targets asked for.
parsedNofull only: the parsed message as stored; its keys vary by message.
statusNofull only: processing stage.
repliesNofull only: replies you sent to it.
subjectYesSubject line.
to_emailNofull only: recipient address.
body_htmlNofull only: the HTML body.
body_textYesThe body as text. Quoted history is left out and links are [n] markers, unless full. Null when there is none or withheld.
preheaderNoInbox preview text. Not with full.
thread_idYesConversation id, for getConversation; null when it is in none.
body_charsNoLength of the whole body, in characters. Not with full.
from_emailNofull only: sender address.
link_countNoLinks in the body. Not with full.
attachmentsYesFiles on the email; read one with getEmailAttachment.
body_offsetNoWhere this part of the body starts. Not with full.
body_sourceNoWhat body_text was made from. Not with full.
image_countNoImages in the body. Not with full.
received_atYesArrival time.
parse_statusNoParse stage, when known. pending or processing: read again shortly; failed: the body may be incomplete.
body_incompleteNoTrue when the HTML was too deep to read in full. Not with full.
body_next_offsetNoPass as offset to read on; null at the end. Not with full.
quoted_chars_removedNoCharacters of quoted history left out. Not with full.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedOutput schema / properties / body_source / description
      Previous value: -"html, text or none: what body_text was made from. Not with full."New value: +"What body_text was made from. Not with full."
    • addedOutput schema / properties / body_source / enum
      Added value: +[
      +  "html",
      +  "text",
      +  "none"
      +]
    • changedOutput schema / properties / body_text / description
      Previous value: -"The body as text. Quoted history is left out and links are [n] markers, unless full. Null when there is none."New value: +"The body as text. Quoted history is left out and links are [n] markers, unless full. Null when there is none or withheld."
    • addedOutput schema / properties / parse_status / enum
      Added value: +[
      +  "pending",
      +  "processing",
      +  "complete",
      +  "failed",
      +  null
      +]
    • changedOutput schema / properties / parsed / type
      Previous value: -"object"New value: +[
      +  "object",
      +  "null"
      +]
  2. Changed5 schema fields changed
    • changedOutput schema / properties / body_source / description
      Previous value: -"What body_text was made from. Not with full."New value: +"html, text or none: what body_text was made from. Not with full."
    • removedOutput schema / properties / body_source / enum
      Removed value: -[
      -  "html",
      -  "text",
      -  "none"
      -]
    • changedOutput schema / properties / body_text / description
      Previous value: -"The body as text. Quoted history is left out and links are [n] markers, unless full. Null when there is none or withheld."New value: +"The body as text. Quoted history is left out and links are [n] markers, unless full. Null when there is none."
    • removedOutput schema / properties / parse_status / enum
      Removed value: -[
      -  "pending",
      -  "processing",
      -  "complete",
      -  "failed",
      -  null
      -]
    • changedOutput schema / properties / parsed / type
      Previous value: -[
      -  "object",
      -  "null"
      -]New value: +"object"
  3. Changed5 schema fields changed
    • changedOutput schema / properties / body_source / description
      Previous value: -"html, text or none: what body_text was made from. Not with full."New value: +"What body_text was made from. Not with full."
    • addedOutput schema / properties / body_source / enum
      Added value: +[
      +  "html",
      +  "text",
      +  "none"
      +]
    • changedOutput schema / properties / body_text / description
      Previous value: -"The body as text. Quoted history is left out and links are [n] markers, unless full. Null when there is none."New value: +"The body as text. Quoted history is left out and links are [n] markers, unless full. Null when there is none or withheld."
    • addedOutput schema / properties / parse_status / enum
      Added value: +[
      +  "pending",
      +  "processing",
      +  "complete",
      +  "failed",
      +  null
      +]
    • changedOutput schema / properties / parsed / type
      Previous value: -"object"New value: +[
      +  "object",
      +  "null"
      +]
  4. Changed32 schema fields changed
    • addedOutput schema / additionalProperties
      Added value: +false
    • changedOutput schema / description
      Previous value: -"Envelope; the result is in data.data."New value: +"One inbound email."
    • addedOutput schema / properties / attachments
      Added value: +{
      +  "description": "Files on the email; read one with getEmailAttachment.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "content_type": {
      +        "description": "Media type, such as application/pdf.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "filename": {
      +        "description": "File name; null when the email gave none.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "part_index": {
      +        "description": "Pass to getEmailAttachment to read it.",
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      },
      +      "size_bytes": {
      +        "description": "Size in bytes.",
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "filename",
      +      "content_type",
      +      "size_bytes",
      +      "part_index"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / auth
      Added value: +{
      +  "description": "full only: SPF, DKIM and DMARC results; their keys vary by message.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / body_chars
      Added value: +{
      +  "description": "Length of the whole body, in characters. Not with full.",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / body_html
      Added value: +{
      +  "description": "full only: the HTML body.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / body_incomplete
      Added value: +{
      +  "description": "True when the HTML was too deep to read in full. Not with full.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / body_next_offset
      Added value: +{
      +  "description": "Pass as offset to read on; null at the end. Not with full.",
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / body_offset
      Added value: +{
      +  "description": "Where this part of the body starts. Not with full.",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / body_source
      Added value: +{
      +  "description": "html, text or none: what body_text was made from. Not with full.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / body_text
      Added value: +{
      +  "description": "The body as text. Quoted history is left out and links are [n] markers, unless full. Null when there is none.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • removedOutput schema / properties / data
      Removed value: -{
      -  "description": "API response: the result in data, or error.",
      -  "properties": {
      -    "data": {
      -      "description": "One inbound email.",
      -      "properties": {
      -        "attachments": {
      -          "description": "Read one with getEmailAttachment.",
      -          "items": {
      -            "properties": {
      -              "content_type": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "filename": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "part_index": {
      -                "description": "Pass to getEmailAttachment.",
      -                "type": [
      -                  "number",
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "size_bytes": {
      -                "type": [
      -                  "number",
      -                  "string",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "type": "object"
      -          },
      -          "type": "array"
      -        },
      -        "auth": {
      -          "description": "Full only: SPF, DKIM, DMARC results.",
      -          "type": "object"
      -        },
      -        "body_chars": {
      -          "description": "Whole body length.",
      -          "type": [
      -            "number",
      -            "string"
      -          ]
      -        },
      -        "body_html": {
      -          "description": "HTML body, full only.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "body_incomplete": {
      -          "description": "HTML too deep to read in full.",
      -          "type": "boolean"
      -        },
      -        "body_next_offset": {
      -          "description": "Next offset; null at the end.",
      -          "type": [
      -            "number",
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "body_offset": {
      -          "description": "Where this page starts.",
      -          "type": [
      -            "number",
      -            "string"
      -          ]
      -        },
      -        "body_source": {
      -          "description": "html, text or none: what body_text came from.",
      -          "type": "string"
      -        },
      -        "body_text": {
      -          "description": "No quoted history unless full.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "from": {
      -          "description": "From header.",
      -          "type": "string"
      -        },
      -        "from_email": {
      -          "description": "Sender address.",
      -          "type": "string"
      -        },
      -        "id": {
      -          "description": "Email id.",
      -          "type": "string"
      -        },
      -        "image_count": {
      -          "description": "Images in the body.",
      -          "type": [
      -            "number",
      -            "string"
      -          ]
      -        },
      -        "link_count": {
      -          "description": "Links in the body.",
      -          "type": [
      -            "number",
      -            "string"
      -          ]
      -        },
      -        "links": {
      -          "description": "Targets the links argument asked for.",
      -          "items": {
      -            "properties": {
      -              "n": {
      -                "description": "The [n] marker in body_text.",
      -                "type": [
      -                  "number",
      -                  "string"
      -                ]
      -              },
      -              "url": {
      -                "type": "string"
      -              }
      -            },
      -            "type": "object"
      -          },
      -          "type": "array"
      -        },
      -        "parse_status": {
      -          "description": "pending or processing: read again shortly.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "parsed": {
      -          "description": "Full only: the parsed message.",
      -          "type": "object"
      -        },
      -        "preheader": {
      -          "description": "Preview text; not with full.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "quoted_chars_removed": {
      -          "description": "Quoted text left out.",
      -          "type": [
      -            "number",
      -            "string"
      -          ]
      -        },
      -        "received_at": {
      -          "description": "Arrival time.",
      -          "type": "string"
      -        },
      -        "replies": {
      -          "description": "Full only: your replies.",
      -          "items": {
      -            "properties": {
      -              "created_at": {
      -                "type": "string"
      -              },
      -              "id": {
      -                "type": "string"
      -              },
      -              "status": {
      -                "type": "string"
      -              },
      -              "subject": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "type": "object"
      -          },
      -          "type": "array"
      -        },
      -        "status": {
      -          "description": "Processing stage.",
      -          "type": "string"
      -        },
      -        "subject": {
      -          "description": "Subject line.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "thread_id": {
      -          "description": "Conversation it belongs to.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "to": {
      -          "description": "Recipient.",
      -          "type": "string"
      -        },
      -        "to_email": {
      -          "description": "Recipient address.",
      -          "type": "string"
      -        }
      -      },
      -      "type": [
      -        "object",
      -        "null"
      -      ]
      -    },
      -    "error": {
      -      "description": "Why the call was refused; absent on success.",
      -      "properties": {
      -        "code": {
      -          "description": "Error code to branch on.",
      -          "type": "string"
      -        },
      -        "message": {
      -          "description": "What went wrong, in words.",
      -          "type": "string"
      -        }
      -      },
      -      "type": [
      -        "object",
      -        "null"
      -      ]
      -    },
      -    "success": {
      -      "description": "True when data holds the result.",
      -      "type": "boolean"
      -    }
      -  },
      -  "type": "object"
      -}
    • addedOutput schema / properties / from
      Added value: +{
      +  "description": "Sender, as the From header shows it.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / from_email
      Added value: +{
      +  "description": "full only: sender address.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / id
      Added value: +{
      +  "description": "Email id.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / image_count
      Added value: +{
      +  "description": "Images in the body. Not with full.",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / link_count
      Added value: +{
      +  "description": "Links in the body. Not with full.",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / links
      Added value: +{
      +  "description": "With the links argument: the link targets asked for.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "n": {
      +        "description": "The [n] marker in body_text.",
      +        "type": "integer"
      +      },
      +      "url": {
      +        "description": "Where the link goes.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "n",
      +      "url"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / parse_status
      Added value: +{
      +  "description": "Parse stage, when known. pending or processing: read again shortly; failed: the body may be incomplete.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / parsed
      Added value: +{
      +  "description": "full only: the parsed message as stored; its keys vary by message.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / preheader
      Added value: +{
      +  "description": "Inbox preview text. Not with full.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / quoted_chars_removed
      Added value: +{
      +  "description": "Characters of quoted history left out. Not with full.",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / received_at
      Added value: +{
      +  "description": "Arrival time.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / replies
      Added value: +{
      +  "description": "full only: replies you sent to it.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "created_at": {
      +        "description": "When it was sent.",
      +        "type": "string"
      +      },
      +      "id": {
      +        "description": "Sent email id, for getSentEmail.",
      +        "type": "string"
      +      },
      +      "status": {
      +        "description": "Delivery state.",
      +        "type": "string"
      +      },
      +      "subject": {
      +        "description": "Subject line.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "to_address": {
      +        "description": "Recipient address.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "status",
      +      "to_address",
      +      "subject",
      +      "created_at"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / status / description
      Previous value: -"HTTP status; 2xx on success."New value: +"full only: processing stage."
    • changedOutput schema / properties / status / type
      Previous value: -"number"New value: +"string"
    • addedOutput schema / properties / subject
      Added value: +{
      +  "description": "Subject line.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / thread_id
      Added value: +{
      +  "description": "Conversation id, for getConversation; null when it is in none.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / to
      Added value: +{
      +  "description": "Recipient address.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / to_email
      Added value: +{
      +  "description": "full only: recipient address.",
      +  "type": "string"
      +}
    • removedOutput schema / properties / tool
      Removed value: -{
      -  "description": "Tool that answered.",
      -  "type": "string"
      -}
    • changedOutput schema / required
      Previous value: -[
      -  "tool",
      -  "status",
      -  "data"
      -]New value: +[
      +  "id",
      +  "thread_id",
      +  "received_at",
      +  "from",
      +  "to",
      +  "subject",
      +  "body_text",
      +  "attachments"
      +]
  5. Changed10 schema fields changed
    • changedInput schema / properties / api_key / description
      Previous value: -"Your API key from createEmailAddress, used in place of sign-in."New value: +"API key from createEmailAddress, used in place of sign-in."
    • changedOutput schema / properties / data / description
      Previous value: -"API response; result in data."New value: +"API response: the result in data, or error."
    • changedOutput schema / properties / data / properties / data / properties / preheader / description
      Previous value: -"Preview text."New value: +"Preview text; not with full."
    • changedOutput schema / properties / data / properties / error / description
      Previous value: -"Refusal: code, message."New value: +"Why the call was refused; absent on success."
    • addedOutput schema / properties / data / properties / error / properties
      Added value: +{
      +  "code": {
      +    "description": "Error code to branch on.",
      +    "type": "string"
      +  },
      +  "message": {
      +    "description": "What went wrong, in words.",
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / data / properties / error / type
      Added value: +[
      +  "object",
      +  "null"
      +]
    • changedOutput schema / properties / data / properties / success / description
      Previous value: -"Accepted."New value: +"True when data holds the result."
    • changedOutput schema / properties / data / type
      Previous value: -[
      -  "object",
      -  "string",
      -  "null"
      -]New value: +"object"
    • changedOutput schema / properties / status / description
      Previous value: -"HTTP status."New value: +"HTTP status; 2xx on success."
    • addedOutput schema / properties / tool / description
      Added value: +"Tool that answered."
  6. Changed4 schema fields changed
    • changedOutput schema / description
      Previous value: -"One inbound email."New value: +"Envelope; the result is in data.data."
    • changedOutput schema / properties / data / description
      Previous value: -"API body."New value: +"API response; result in data."
    • addedOutput schema / properties / data / properties / data / description
      Added value: +"One inbound email."
    • changedOutput schema / properties / data / properties / error / description
      Previous value: -"Why refused."New value: +"Refusal: code, message."
  7. Changed18 schema fields changed
    • changedInput schema / properties / api_key / description
      Previous value: -"Key createEmailAddress returned. Send it when no account is signed in."New value: +"Your API key from createEmailAddress, used in place of sign-in."
    • changedOutput schema / properties / data / properties / data / properties / attachments / description
      Previous value: -"Each has a part_index."New value: +"Read one with getEmailAttachment."
    • addedOutput schema / properties / data / properties / data / properties / attachments / items
      Added value: +{
      +  "properties": {
      +    "content_type": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "filename": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "part_index": {
      +      "description": "Pass to getEmailAttachment.",
      +      "type": [
      +        "number",
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "size_bytes": {
      +      "type": [
      +        "number",
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
    • changedOutput schema / properties / data / properties / data / properties / auth / description
      Previous value: -"SPF, DKIM, DMARC results."New value: +"Full only: SPF, DKIM, DMARC results."
    • addedOutput schema / properties / data / properties / data / properties / body_incomplete
      Added value: +{
      +  "description": "HTML too deep to read in full.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / data / properties / data / properties / body_offset
      Added value: +{
      +  "description": "Where this page starts.",
      +  "type": [
      +    "number",
      +    "string"
      +  ]
      +}
    • addedOutput schema / properties / data / properties / data / properties / body_source
      Added value: +{
      +  "description": "html, text or none: what body_text came from.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / data / properties / data / properties / from_email / description
      Added value: +"Sender address."
    • addedOutput schema / properties / data / properties / data / properties / id / description
      Added value: +"Email id."
    • addedOutput schema / properties / data / properties / data / properties / image_count
      Added value: +{
      +  "description": "Images in the body.",
      +  "type": [
      +    "number",
      +    "string"
      +  ]
      +}
    • changedOutput schema / properties / data / properties / data / properties / links / description
      Previous value: -"Requested link targets."New value: +"Targets the links argument asked for."
    • addedOutput schema / properties / data / properties / data / properties / links / items
      Added value: +{
      +  "properties": {
      +    "n": {
      +      "description": "The [n] marker in body_text.",
      +      "type": [
      +        "number",
      +        "string"
      +      ]
      +    },
      +    "url": {
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / data / properties / data / properties / parsed
      Added value: +{
      +  "description": "Full only: the parsed message.",
      +  "type": "object"
      +}
    • changedOutput schema / properties / data / properties / data / properties / replies / description
      Previous value: -"Replies sent to it."New value: +"Full only: your replies."
    • addedOutput schema / properties / data / properties / data / properties / replies / items
      Added value: +{
      +  "properties": {
      +    "created_at": {
      +      "type": "string"
      +    },
      +    "id": {
      +      "type": "string"
      +    },
      +    "status": {
      +      "type": "string"
      +    },
      +    "subject": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / data / properties / data / properties / subject / description
      Added value: +"Subject line."
    • addedOutput schema / properties / data / properties / data / properties / thread_id / description
      Added value: +"Conversation it belongs to."
    • addedOutput schema / properties / data / properties / data / properties / to_email / description
      Added value: +"Recipient address."
  8. Changed2 schema fields changed
    • changedInput schema / properties / api_key / description
      Previous value: -"The api_key from createEmailAddress, for a connection with no signed-in account. Leave it out when signed in."New value: +"Key createEmailAddress returned. Send it when no account is signed in."
    • changedInput schema / properties / full / description
      Previous value: -"Set true for the stored record, with the HTML body, links, quoted history and authentication results; the default is a compact view for reading."New value: +"Return the stored record, with the HTML body, links, quoted history and authentication results, instead of the compact view for reading."
  9. Changed20 schema fields changed
    • changedInput schema / properties / api_key / description
      Previous value: -"Only when no account is signed in: the api_key createEmailAddress returned, passed as is on every later call. Omit it when the user is signed in."New value: +"The api_key from createEmailAddress, for a connection with no signed-in account. Leave it out when signed in."
    • changedInput schema / properties / full / description
      Previous value: -"Set true for the record as stored. By default the result is a compact view for reading, which leaves out the HTML body, link targets, quoted history, authentication results, routing and webhook delivery state."New value: +"Set true for the stored record, with the HTML body, links, quoted history and authentication results; the default is a compact view for reading."
    • changedInput schema / properties / links / description
      Previous value: -"Which link targets to return, as a links array of { n, url }: \"all\", or a comma-separated list of [n] numbers such as \"3,7\" (at most 50). Omit for none. Not used with full."New value: +"Link targets to include in `links`: all of them, or the [n] numbers you want. Leave it out for none. Not used with full."
    • addedInput schema / properties / links / pattern
      Added value: +"^(all|\\s*[1-9]\\d{0,14}\\s*(,\\s*[1-9]\\d{0,14}\\s*){0,49})(?![\\s\\S])"
    • addedOutput schema / description
      Added value: +"One inbound email."
    • addedOutput schema / properties / data / description
      Added value: +"API body."
    • addedOutput schema / properties / data / properties / data / properties / auth / description
      Added value: +"SPF, DKIM, DMARC results."
    • addedOutput schema / properties / data / properties / data / properties / body_html / description
      Added value: +"HTML body, full only."
    • addedOutput schema / properties / data / properties / data / properties / from / description
      Added value: +"From header."
    • addedOutput schema / properties / data / properties / data / properties / link_count / description
      Added value: +"Links in the body."
    • addedOutput schema / properties / data / properties / data / properties / links / description
      Added value: +"Requested link targets."
    • addedOutput schema / properties / data / properties / data / properties / preheader / description
      Added value: +"Preview text."
    • addedOutput schema / properties / data / properties / data / properties / quoted_chars_removed / description
      Added value: +"Quoted text left out."
    • addedOutput schema / properties / data / properties / data / properties / received_at / description
      Added value: +"Arrival time."
    • addedOutput schema / properties / data / properties / data / properties / replies / description
      Added value: +"Replies sent to it."
    • addedOutput schema / properties / data / properties / data / properties / status / description
      Added value: +"Processing stage."
    • addedOutput schema / properties / data / properties / data / properties / to / description
      Added value: +"Recipient."
    • addedOutput schema / properties / data / properties / error / description
      Added value: +"Why refused."
    • addedOutput schema / properties / data / properties / success / description
      Added value: +"Accepted."
    • addedOutput schema / properties / status / description
      Added value: +"HTTP status."
  10. Changed7 schema fields changed
    • changedInput schema / properties / api_key / description
      Previous value: -"Primitive API key (prim_...). Only needed when this connection has no signed-in account: pass the api_key returned by createEmailAddress, unchanged, on every call for the rest of the conversation. Omit it when the user is signed in."New value: +"Only when no account is signed in: the api_key createEmailAddress returned, passed as is on every later call. Omit it when the user is signed in."
    • changedInput schema / properties / max_chars / description
      Previous value: -"Most characters of body_text to return in this call; read the rest with offset. Not used with full."New value: +"How much of body_text to return per call; read the rest with offset. Not used with full."
    • addedOutput schema / properties / data / properties / data / properties / attachments / description
      Added value: +"Each has a part_index."
    • addedOutput schema / properties / data / properties / data / properties / body_chars / description
      Added value: +"Whole body length."
    • addedOutput schema / properties / data / properties / data / properties / body_next_offset / description
      Added value: +"Next offset; null at the end."
    • addedOutput schema / properties / data / properties / data / properties / body_text / description
      Added value: +"No quoted history unless full."
    • addedOutput schema / properties / data / properties / data / properties / parse_status / description
      Added value: +"pending or processing: read again shortly."
  11. Changed5 schema fields changed
    • changedInput schema / properties / max_chars / description
      Previous value: -"Most characters of body_text to return, 500 to 100000. Read the rest with offset. Not used with full."New value: +"Most characters of body_text to return in this call; read the rest with offset. Not used with full."
    • removedOutput schema / additionalProperties
      Removed value: -false
    • addedOutput schema / properties / data / properties
      Added value: +{
      +  "data": {
      +    "properties": {
      +      "attachments": {
      +        "type": "array"
      +      },
      +      "auth": {
      +        "type": "object"
      +      },
      +      "body_chars": {
      +        "type": [
      +          "number",
      +          "string"
      +        ]
      +      },
      +      "body_html": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "body_next_offset": {
      +        "type": [
      +          "number",
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "body_text": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "from": {
      +        "type": "string"
      +      },
      +      "from_email": {
      +        "type": "string"
      +      },
      +      "id": {
      +        "type": "string"
      +      },
      +      "link_count": {
      +        "type": [
      +          "number",
      +          "string"
      +        ]
      +      },
      +      "links": {
      +        "type": "array"
      +      },
      +      "parse_status": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "preheader": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "quoted_chars_removed": {
      +        "type": [
      +          "number",
      +          "string"
      +        ]
      +      },
      +      "received_at": {
      +        "type": "string"
      +      },
      +      "replies": {
      +        "type": "array"
      +      },
      +      "status": {
      +        "type": "string"
      +      },
      +      "subject": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "thread_id": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "to": {
      +        "type": "string"
      +      },
      +      "to_email": {
      +        "type": "string"
      +      }
      +    },
      +    "type": [
      +      "object",
      +      "null"
      +    ]
      +  },
      +  "error": {},
      +  "success": {
      +    "type": "boolean"
      +  }
      +}
    • addedOutput schema / properties / data / type
      Added value: +[
      +  "object",
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / statusText
      Removed value: -{
      -  "type": "string"
      -}
  12. Changed4 schema fields changed
    • addedInput schema / properties / full
      Added value: +{
      +  "default": false,
      +  "description": "Set true for the record as stored. By default the result is a compact view for reading, which leaves out the HTML body, link targets, quoted history, authentication results, routing and webhook delivery state.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / links
      Added value: +{
      +  "description": "Which link targets to return, as a links array of { n, url }: \"all\", or a comma-separated list of [n] numbers such as \"3,7\" (at most 50). Omit for none. Not used with full.",
      +  "type": "string"
      +}
    • addedInput schema / properties / max_chars
      Added value: +{
      +  "default": 16000,
      +  "description": "Most characters of body_text to return, 500 to 100000. Read the rest with offset. Not used with full.",
      +  "maximum": 100000,
      +  "minimum": 500,
      +  "type": "integer"
      +}
    • addedInput schema / properties / offset
      Added value: +{
      +  "default": 0,
      +  "description": "Character position in the body to start from: the body_next_offset of the previous result. Not used with full.",
      +  "minimum": 0,
      +  "type": "integer"
      +}
  13. Changed1 schema field changed
    • addedInput schema / properties / api_key
      Added value: +{
      +  "description": "Primitive API key (prim_...). Only needed when this connection has no signed-in account: pass the api_key returned by createEmailAddress, unchanged, on every call for the rest of the conversation. Omit it when the user is signed in.",
      +  "maxLength": 200,
      +  "minLength": 8,
      +  "type": "string"
      +}
  14. Changed1 schema field changed
    • addedInput schema / properties / id / description
      Added value: +"Inbound email ID from listEmails or searchEmails."
  15. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds substantial behavior the annotations cannot express: quoted history is stripped by default, links become [n] markers unless links is requested, paging is driven by body_next_offset, and parse_status values signal incompleteness. This is exactly the context an agent needs to interpret a truncated or pending body.

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?

Front-loaded with the core action and the sibling routing, then branches into default-vs-full behavior and paging. The trailing inventory of returned fields is long and partly duplicates the output schema, but no sentence is filler.

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?

Covers the default compact view, the full stored record, pagination, partial-parse states, and the attachment handoff, which is everything needed for a 6-parameter read tool. The return-field enumeration is redundant with the output schema but does not leave a gap.

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%, so the baseline is 3, but the description adds cross-parameter meaning: offset must come from the previous result's body_next_offset, links returns the targets behind [n] markers, and full supersedes the paging/link arguments. It stops short of restating max_chars behavior, so it is not fully additive.

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?

"Read one inbound email by id" gives a specific verb, resource, and scope, and the follow-up sentence routes attachments to getEmailAttachment, separating it from that sibling. Inbound vs. getSentEmail is implied by the resource name and reinforced by the mention of listEmails/searchEmails as id sources.

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?

Explicit branch-by-branch guidance: use getEmailAttachment for attachments, call again with offset when body_next_offset is non-null, re-read shortly when parse_status is pending/processing, and use full: true to get the stored record instead. It also names the sibling that owns the excluded capability.

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