email_get_message
Returns one message in full: participants, subject, timestamps, folders and labels, flags, attachment list, and optionally the body and raw headers. Use it after email_search_messages has narrowed to the message you actually want to read, rather than searching with include_body on. The account_id must be the account that message belongs to — the one on the search result, not a different mailbox. Attachment content is not included; the attachments array carries ids to pass to email_get_attachment.
Input fields
{
"type": "object",
"properties": {
"account_id": {
"type": "string",
"minLength": 1,
"description": "The connected mailbox to act on, from email_accounts_list. Never guess this value and never reuse one across mailboxes — it selects both the credential and the permission set the call runs under."
},
"message_id": {
"type": "string",
"minLength": 1,
"description": "A message id returned by this server (msg_...), not a provider id."
},
"include_body": {
"description": "Include text_body and html_body. Default false.",
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"include_headers": {
"description": "Include raw internet headers. Default false; useful for tracing delivery.",
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
}
},
"required": [
"account_id",
"message_id"
]
}Tool behavior
Declared read-only. Actual provider grants and account access apply.
Inspect isError and per-account errors. General write tools do not all enforce exact-plan approval. This reference does not certify any current AI client version.

YOUR INBOXES.
UNDER CONTROL.
Get started Start with a free account and one read-only search. Existing accounts keep their connection.