List messages in the synced window
list_messagesLists messages already synced for an inbox (does not hit the provider). Call sync_inbox first if stale. Demo messages carry isDemo:true. Paged: returns at most limit messages (default 50, max 200) starting at offset, plus total/hasMore/nextOffset. An iCloud, IMAP, or Microsoft window can hold ~300 messages, so page with offset (pass nextOffset back in) rather than assuming one call returns everything. Defaults to the Inbox; pass folder to read Sent or Drafts. query and unreadOnly search the Inbox unless folder is set. Narrow with query/unreadOnly/folder first to cut down how many pages you need. Each row has a preview only; call get_message for the full text (works for every provider, including iCloud and IMAP). A row with a junkHint ({ kind, reason }) only looks like junk or a scam; nothing was moved, so decide with the person.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"inboxId": "<inboxId>"
},
"name": "list_messages"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max messages to return, clamped 1..200. Default 50. | |
| query | No | Simple substring filter over subject/from/snippet, within the synced window only. | |
| folder | No | Restrict to one canonical folder id/name (see list_folders / message.folder). | |
| offset | No | Number of matching messages to skip, for paging. Default 0. Use the previous response's nextOffset. | |
| inboxId | Yes | ||
| unreadOnly | No |