list_tickets
Retrieve user support tickets with optional status filtering to track and manage support requests within the FitSlot system.
Instructions
List all tickets for a user, optionally filtered by status
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | ||
| status | No |
Implementation Reference
- src/tools/ticket.tools.ts:93-152 (handler)The execute handler function for the list_tickets tool. Validates userId and optional status, fetches tickets via apiService.getTickets, formats response as JSON or error.execute: async (args: { userId: string; status?: string; }) => { try { logger.info('Listing tickets', args); validateNotEmpty(args.userId, 'User ID'); if (args.status) { validateEnum(args.status, TicketStatus, 'Status'); } const tickets = await apiService.getTickets( args.userId, args.status as TicketStatus | undefined ); return { content: [ { type: 'text', text: JSON.stringify( { success: true, count: tickets.length, tickets: tickets.map(t => ({ id: t.id, title: t.title, status: t.status, priority: t.priority, createdAt: t.createdAt, updatedAt: t.updatedAt })) }, null, 2 ) } ] }; } catch (error) { logger.error('Failed to list tickets', error); return { content: [ { type: 'text', text: JSON.stringify( { success: false, error: error instanceof Error ? error.message : 'Unknown error' }, null, 2 ) } ], isError: true }; } }
- src/tools/ticket.tools.ts:89-92 (schema)Zod schema defining input parameters for list_tickets: required userId (string), optional status (enum of ticket statuses).parameters: z.object({ userId: z.string().describe('ID of the user'), status: z.enum(['open', 'in_progress', 'resolved', 'closed']).optional().describe('Filter by ticket status') }),
- src/index.ts:60-68 (registration)Creates the ticketTools object (containing list_tickets) via createTicketTools and spreads it into allTools, which is used by MCP server's ListTools and CallTool request handlers for tool registration and execution.const ticketTools = createTicketTools(apiService); const chatbotTools = createChatbotTools(chatbotService); const pdfTools = createPDFTools(pdfService); const allTools = { ...ticketTools, ...chatbotTools, ...pdfTools };