update_initiative
Modify initiative details including name, objective, status, priority, dates, and metadata to reflect project changes and maintain accurate tracking.
Instructions
Update initiative details
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| initiative_id | Yes | The unique identifier of the initiative to update | |
| name | No | New name for the initiative | |
| objective | No | New objective | |
| description | No | New description | |
| status | No | New status | |
| priority | No | New priority | |
| owner_id | No | New owner ID | |
| start_date | No | New start date | |
| target_date | No | New target date | |
| metadata | No | New metadata | |
| tags | No | New tags |
Implementation Reference
- src/tools/initiatives.ts:337-350 (handler)The main handler function for the 'update_initiative' tool. It validates input using Zod schema, calls the Supabase service to update the initiative, logs the action, and returns the updated initiative with a success message.export const updateInitiative = requireAuth(async (args: any) => { const { initiative_id, ...updates } = UpdateInitiativeSchema.parse(args) logger.info('Updating initiative', { initiative_id, updates }) const initiative = await supabaseService.updateInitiative(initiative_id, updates) logger.info('Initiative updated successfully', { initiative_id: initiative.id }) return { initiative, message: `Initiative "${initiative.name}" updated successfully` } })
- src/tools/initiatives.ts:40-52 (schema)Zod schema used for runtime validation of input arguments in the update_initiative handler.const UpdateInitiativeSchema = z.object({ initiative_id: z.string().uuid(), name: z.string().min(1).max(255).optional(), objective: z.string().min(1).optional(), description: z.string().optional(), status: z.enum(['planning', 'active', 'on_hold', 'completed', 'cancelled']).optional(), priority: z.enum(['critical', 'high', 'medium', 'low']).optional(), owner_id: z.string().uuid().optional(), start_date: z.string().datetime().optional(), target_date: z.string().datetime().optional(), metadata: z.object({}).optional(), tags: z.array(z.string()).optional() })
- src/tools/initiatives.ts:270-335 (registration)MCPTool registration object defining the 'update_initiative' tool name, description, and JSON input schema for the MCP protocol.export const updateInitiativeTool: MCPTool = { name: 'update_initiative', description: 'Update initiative details', inputSchema: { type: 'object', properties: { initiative_id: { type: 'string', format: 'uuid', description: 'The unique identifier of the initiative to update' }, name: { type: 'string', minLength: 1, maxLength: 255, description: 'New name for the initiative' }, objective: { type: 'string', minLength: 1, description: 'New objective' }, description: { type: 'string', description: 'New description' }, status: { type: 'string', enum: ['planning', 'active', 'on_hold', 'completed', 'cancelled'], description: 'New status' }, priority: { type: 'string', enum: ['critical', 'high', 'medium', 'low'], description: 'New priority' }, owner_id: { type: 'string', format: 'uuid', description: 'New owner ID' }, start_date: { type: 'string', format: 'date-time', description: 'New start date' }, target_date: { type: 'string', format: 'date-time', description: 'New target date' }, metadata: { type: 'object', description: 'New metadata' }, tags: { type: 'array', items: { type: 'string' }, description: 'New tags' } }, required: ['initiative_id'] } }
- src/tools/initiatives.ts:630-642 (registration)Maps the tool name 'update_initiative' to its handler function within the initiativeHandlers object, which is imported and spread into the main MCP server handlers.export const initiativeHandlers = { list_initiatives: listInitiatives, get_initiative: getInitiative, create_initiative: createInitiative, update_initiative: updateInitiative, get_initiative_context: getInitiativeContext, get_initiative_insights: getInitiativeInsights, search_workspace: searchWorkspace, get_enhanced_project_context: getEnhancedProjectContext, get_workspace_context: getWorkspaceContext, associate_document_with_initiative: associateDocumentWithInitiative, disassociate_document_from_initiative: disassociateDocumentFromInitiative }
- src/index.ts:143-155 (registration)Top-level MCP server registration where initiativeHandlers (including update_initiative) are spread into the allHandlers object used for tool dispatching.this.allHandlers = { ...projectHandlers, ...taskHandlers, ...documentHandlers, ...conversationHandlers, ...contextAggregationHandlers, ...workflowAutomationHandlers, ...intelligentSearchHandlers, ...analyticsInsightsHandlers, ...initiativeHandlers, ...promptToProjectTools.reduce((acc, tool) => ({ ...acc, [tool.name]: tool.handler }), {}), ...debugHandlers, }