get-comments-by-user
Retrieve all comments from a specific user on a Trello board to track contributions, review feedback, or monitor activity across cards.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| boardId | Yes | ID of the board to search for comments | |
| username | Yes | Username to filter comments by | |
| limit | No | Maximum number of comments to return per card |
Implementation Reference
- src/index.ts:825-914 (handler)The handler function for the 'get-comments-by-user' tool. It fetches all cards on a board, retrieves comments for each card filtered by username, and returns structured data with comments per card.async ({ boardId, username, limit = 10 }) => { try { if (!trelloApiKey || !trelloApiToken) { return { content: [ { type: 'text', text: 'Trello API credentials are not configured', }, ], isError: true, }; } // First get all cards on the board const cardsResponse = await fetch( `https://api.trello.com/1/boards/${boardId}/cards?key=${trelloApiKey}&token=${trelloApiToken}` ); const cards = await cardsResponse.json(); if (!Array.isArray(cards)) { return { content: [ { type: 'text', text: 'Failed to get cards from board', }, ], isError: true, }; } // Get comments for each card and filter by username const commentsPromises = cards.map(async (card) => { const commentsResponse = await fetch( `https://api.trello.com/1/cards/${card.id}/actions?filter=commentCard&key=${trelloApiKey}&token=${trelloApiToken}&limit=${limit}` ); const comments = await commentsResponse.json(); if (Array.isArray(comments)) { const userComments = comments.filter(comment => comment.memberCreator && comment.memberCreator.username === username ); if (userComments.length > 0) { return { cardId: card.id, cardName: card.name, cardUrl: card.url, comments: userComments.map(comment => ({ id: comment.id, text: comment.data.text, date: comment.date, memberCreator: comment.memberCreator })) }; } } return null; }); const results = await Promise.all(commentsPromises); const filteredResults = results.filter(result => result !== null); return { content: [ { type: 'text', text: JSON.stringify({ username, boardId, totalCardsWithComments: filteredResults.length, comments: filteredResults }), }, ], }; } catch (error) { return { content: [ { type: 'text', text: `Error getting comments by user: ${error}`, }, ], isError: true, }; } }
- src/index.ts:820-824 (schema)Input schema for the 'get-comments-by-user' tool using Zod validation: boardId (required string), username (required string), limit (optional number).{ boardId: z.string().describe('ID of the board to search for comments'), username: z.string().describe('Username to filter comments by'), limit: z.number().optional().describe('Maximum number of comments to return per card'), },
- src/index.ts:818-819 (registration)Registration of the 'get-comments-by-user' tool using server.tool method.server.tool( 'get-comments-by-user',