list_threads
Retrieve email threads from your Gmail mailbox with filtering options for labels, search queries, and spam/trash inclusion to organize and access your conversations.
Instructions
List threads in the user's mailbox
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| maxResults | No | Maximum number of threads to return | |
| pageToken | No | Page token to retrieve a specific page of results | |
| q | No | Only return threads matching the specified query | |
| labelIds | No | Only return threads with labels that match all of the specified label IDs | |
| includeSpamTrash | No | Include threads from SPAM and TRASH in the results | |
| includeBodyHtml | No | Whether to include the parsed HTML in the return for each body, excluded by default because they can be excessively large |
Implementation Reference
- src/index.ts:720-754 (handler)The server.tool registration for 'list_threads', which includes the Zod input schema and the inline async handler. The handler calls Gmail API's users.threads.list with provided params, processes each thread's messages by decoding payloads if includeBodyHtml is true using shared processMessagePart, and returns a formatted JSON response via handleTool and formatResponse.server.tool("list_threads", "List threads in the user's mailbox", { maxResults: z.number().optional().describe("Maximum number of threads to return"), pageToken: z.string().optional().describe("Page token to retrieve a specific page of results"), q: z.string().optional().describe("Only return threads matching the specified query"), labelIds: z.array(z.string()).optional().describe("Only return threads with labels that match all of the specified label IDs"), includeSpamTrash: z.boolean().optional().describe("Include threads from SPAM and TRASH in the results"), includeBodyHtml: z.boolean().optional().describe("Whether to include the parsed HTML in the return for each body, excluded by default because they can be excessively large"), }, async (params) => { return handleTool(config, async (gmail: gmail_v1.Gmail) => { const { data } = await gmail.users.threads.list({ userId: 'me', ...params }) if (data.threads) { data.threads = data.threads.map(thread => { if (thread.messages) { thread.messages = thread.messages.map(message => { if (message.payload) { message.payload = processMessagePart( message.payload, params.includeBodyHtml ) } return message }) } return thread }) } return formatResponse(data) }) } )