email_get_attachment
Fetches one attachment from one message. Small, safe attachments come back inline as base64 in content_base64; anything larger comes back as a short-lived signed download_url with an expires_at. Exactly one of the two is present — branch on which. Get message_id and attachment_id from email_get_message; the ids are not guessable. An attachment over the server's size limit returns ATTACHMENT_TOO_LARGE rather than a truncated file.
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."
},
"attachment_id": {
"type": "string",
"minLength": 1,
"description": "An attachment id from the message's attachments array (att_...)."
}
},
"required": [
"account_id",
"message_id",
"attachment_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.