mail_bodies
Read plaintext bodies for up to 20 Mail message IDs in one call to catch up on threads without launching Mail; unreadable IDs return as missing, not empty.
Instructions
Plaintext bodies for up to 20 message ids in ONE call — the bulk read behind
"catch me up on this thread". Opt-in and bounded: reading a thread stays
mail_search -> mail_thread -> mail_bodies, three calls total, and with
mail_thread(snippets=True) often only two.
Returns {"results": [{"id", "body"}], "missing": [ids]}. An id whose message can't
be read off disk is listed in missing — it is NEVER returned with an empty body,
so "unreadable" is never mistaken for "the sender wrote nothing". Each body is
truncated at the usual per-body budget with an explicit marker; if the batch total
is too large the call REFUSES (output_overflow) rather than dumping — ask for fewer
ids.
Reads Mail's message files at rest: fast, no Mail launch, and it sees messages that arrived seconds ago (unlike the mail_search(body=) FTS index, which only knows what mail_index_bodies last swept). Read-only. Needs Full Disk Access.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||