todo_save
Save a snapshot of todo items with their status and context to persist task progress across development sessions.
Instructions
Save a new todo snapshot
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| todos | Yes | List of todo items | |
| project_path | No | Project path (defaults to current directory) | |
| context | No | Description of what you're working on | |
| session_context_id | No | Link to existing context ID |
Input Schema (JSON Schema)
{
"properties": {
"context": {
"description": "Description of what you're working on",
"type": "string"
},
"project_path": {
"description": "Project path (defaults to current directory)",
"type": "string"
},
"session_context_id": {
"description": "Link to existing context ID",
"type": "string"
},
"todos": {
"description": "List of todo items",
"items": {
"properties": {
"activeForm": {
"type": "string"
},
"content": {
"type": "string"
},
"status": {
"enum": [
"pending",
"in_progress",
"completed"
],
"type": "string"
}
},
"required": [
"content",
"status",
"activeForm"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"todos"
],
"type": "object"
}
Implementation Reference
- src/mcp_server/server.py:489-507 (handler)Handler logic for todo_save tool: parses input arguments, creates TodoListSnapshot using models.Todo and models.TodoListSnapshot, saves it via storage, and returns confirmation.if name == "todo_save": from models import Todo, TodoListSnapshot todos_data = arguments["todos"] todos = [Todo(**todo) for todo in todos_data] project_path = arguments.get("project_path", os.getcwd()) context = arguments.get("context") session_context_id = arguments.get("session_context_id") snapshot = TodoListSnapshot( project_path=project_path, todos=todos, context=context, session_context_id=session_context_id, is_active=True, ) self.storage.save_todo_snapshot(snapshot) return [TextContent(type="text", text=f"ā Todo snapshot saved (ID: {snapshot.id})")]
- src/mcp_server/server.py:250-284 (schema)Input schema definition for the todo_save tool, specifying required 'todos' array and optional fields.Tool( name="todo_save", description="Save a new todo snapshot", inputSchema={ "type": "object", "properties": { "todos": { "type": "array", "items": { "type": "object", "properties": { "content": {"type": "string"}, "status": {"type": "string", "enum": ["pending", "in_progress", "completed"]}, "activeForm": {"type": "string"}, }, "required": ["content", "status", "activeForm"], }, "description": "List of todo items", }, "project_path": { "type": "string", "description": "Project path (defaults to current directory)", }, "context": { "type": "string", "description": "Description of what you're working on", }, "session_context_id": { "type": "string", "description": "Link to existing context ID", }, }, "required": ["todos"], }, ),
- src/mcp_server/server.py:38-38 (registration)Registers the list_tools method which includes the todo_save Tool definition.self.server.list_tools()(self.list_tools) # type: ignore[no-untyped-call]