update_todo_status
Mark todo items as complete or incomplete to track progress in software development planning. Update status by providing the todo ID and new completion state.
Instructions
Update the completion status of a todo item
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| todoId | Yes | ID of the todo item | |
| isComplete | Yes | New completion status |
Implementation Reference
- src/index.ts:319-345 (handler)MCP tool handler for 'update_todo_status': checks for active goal, extracts todoId and isComplete from arguments, updates via storage, returns updated Todo as JSON.case 'update_todo_status': { if (!this.currentGoal) { throw new McpError( ErrorCode.InvalidRequest, 'No active goal. Start a new planning session first.' ); } const { todoId, isComplete } = request.params.arguments as { todoId: string; isComplete: boolean; }; const updatedTodo = await storage.updateTodoStatus( this.currentGoal.id, todoId, isComplete ); return { content: [ { type: 'text', text: JSON.stringify(updatedTodo, null, 2), }, ], }; }
- src/index.ts:191-208 (registration)Tool registration in ListTools handler, including name, description, and input schema for 'update_todo_status'.{ name: 'update_todo_status', description: 'Update the completion status of a todo item', inputSchema: { type: 'object', properties: { todoId: { type: 'string', description: 'ID of the todo item', }, isComplete: { type: 'boolean', description: 'New completion status', }, }, required: ['todoId', 'isComplete'], }, },
- src/storage.ts:108-124 (helper)Storage helper function that updates the completion status of a specific todo in the plan and persists the changes.async updateTodoStatus(goalId: string, todoId: string, isComplete: boolean): Promise<Todo> { const plan = await this.getPlan(goalId); if (!plan) { throw new Error(`No plan found for goal ${goalId}`); } const todo = plan.todos.find((t: Todo) => t.id === todoId); if (!todo) { throw new Error(`No todo found with id ${todoId}`); } todo.isComplete = isComplete; todo.updatedAt = new Date().toISOString(); plan.updatedAt = new Date().toISOString(); await this.save(); return todo; }