list_emails
Retrieve recent emails from Gmail inbox using a search query and specify the maximum number of results to filter and organize your inbox efficiently.
Instructions
List recent emails from Gmail inbox
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| maxResults | No | Maximum number of emails to return (default: 10) | |
| query | No | Search query to filter emails |
Implementation Reference
- src/index.ts:253-305 (handler)Implements the core logic for listing recent emails from the Gmail inbox. Fetches message list, retrieves details for each, extracts subject, from, and date headers, and returns as JSON-formatted text content.private async handleListEmails(args: any) { try { const maxResults = args?.maxResults || 10; const query = args?.query || ''; const response = await this.gmail.users.messages.list({ userId: 'me', maxResults, q: query, }); const messages = response.data.messages || []; const emailDetails = await Promise.all( messages.map(async (msg) => { const detail = await this.gmail.users.messages.get({ userId: 'me', id: msg.id!, }); const headers = detail.data.payload?.headers; const subject = headers?.find((h) => h.name === 'Subject')?.value || ''; const from = headers?.find((h) => h.name === 'From')?.value || ''; const date = headers?.find((h) => h.name === 'Date')?.value || ''; return { id: msg.id, subject, from, date, }; }) ); return { content: [ { type: 'text', text: JSON.stringify(emailDetails, null, 2), }, ], }; } catch (error: any) { return { content: [ { type: 'text', text: `Error fetching emails: ${error.message}`, }, ], isError: true, }; } }
- src/index.ts:65-77 (schema)Defines the input schema for the list_emails tool, specifying optional maxResults (number) and query (string) parameters.inputSchema: { type: 'object', properties: { maxResults: { type: 'number', description: 'Maximum number of emails to return (default: 10)', }, query: { type: 'string', description: 'Search query to filter emails', }, }, },
- src/index.ts:62-78 (registration)Registers the list_emails tool in the ListTools response, providing name, description, and input schema.{ name: 'list_emails', description: 'List recent emails from Gmail inbox', inputSchema: { type: 'object', properties: { maxResults: { type: 'number', description: 'Maximum number of emails to return (default: 10)', }, query: { type: 'string', description: 'Search query to filter emails', }, }, }, },
- src/index.ts:230-231 (registration)Registers the dispatch case for list_emails in the CallToolRequestSchema handler switch statement.case 'list_emails': return await this.handleListEmails(request.params.arguments);