list_initiatives
Retrieve all initiatives with optional filters by project, status, priority, or search term to quickly find relevant initiatives.
Instructions
List all initiatives with optional filtering
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No | Filter by project | |
| status | No | Filter by status | |
| priority | No | Filter by priority | |
| search | No | Search initiatives by name or objective | |
| limit | No | Maximum number of initiatives to return |
Implementation Reference
- src/tools/initiatives.ts:93-110 (handler)The handler function for list_initiatives. Parses args via ListInitiativesSchema, calls supabaseService.getInitiatives() with filters (project_id, status, priority, search) and sorting (updated_at desc), then returns initiatives array, total count, and applied filters.
export const listInitiatives = requireAuth(async (args: any) => { const { project_id, status, priority, search, limit } = ListInitiativesSchema.parse(args) logger.info('Listing initiatives', { project_id, status, priority, search, limit }) const initiatives = await supabaseService.getInitiatives( { project_id, status, priority, search }, { limit }, { field: 'updated_at', order: 'desc' } ) // The API already returns enriched initiatives with counts return { initiatives: initiatives, total: initiatives.length, filters_applied: { project_id, status, priority, search } } }) - src/tools/initiatives.ts:14-20 (schema)Zod validation schema for list_initiatives input. Defines optional fields: project_id (UUID), status (enum), priority (enum), search (string), and limit (number 1-100, default 20).
const ListInitiativesSchema = z.object({ project_id: z.string().uuid().optional(), status: z.enum(['planning', 'active', 'on_hold', 'completed', 'cancelled']).optional(), priority: z.enum(['critical', 'high', 'medium', 'low']).optional(), search: z.string().optional(), limit: z.number().int().positive().max(100).default(20) }) - src/tools/initiatives.ts:57-91 (registration)The tool metadata/registration object for list_initiatives. Specifies name, description, and input JSON Schema (properties: project_id, status, priority, search, limit). This is included in the initiativeTools export and ultimately spread into this.allTools in the main server.
export const listInitiativesTool: MCPTool = { name: 'list_initiatives', description: 'List all initiatives with optional filtering', inputSchema: { type: 'object', properties: { project_id: { type: 'string', format: 'uuid', description: 'Filter by project' }, status: { type: 'string', enum: ['planning', 'active', 'on_hold', 'completed', 'cancelled'], description: 'Filter by status' }, priority: { type: 'string', enum: ['critical', 'high', 'medium', 'low'], description: 'Filter by priority' }, search: { type: 'string', description: 'Search initiatives by name or objective' }, limit: { type: 'number', minimum: 1, maximum: 100, default: 20, description: 'Maximum number of initiatives to return' } } } } - src/tools/initiatives.ts:630-631 (registration)Handler registration mapping: the key 'list_initiatives' in initiativeHandlers is mapped to the listInitiatives function. This object is spread into this.allHandlers in the main server.
export const initiativeHandlers = { list_initiatives: listInitiatives, - src/index.ts:143-152 (registration)The main server's allHandlers object spreads initiativeHandlers (which includes list_initiatives). When a tool call request comes in with name 'list_initiatives', this.allHandlers['list_initiatives'] is looked up and invoked.
this.allHandlers = { ...projectHandlers, ...taskHandlers, ...documentHandlers, ...conversationHandlers, ...contextAggregationHandlers, ...workflowAutomationHandlers, ...intelligentSearchHandlers, ...analyticsInsightsHandlers, ...initiativeHandlers,