todoist_update_task
Modify an existing Todoist task by updating its content, description, due date, priority, or labels using the task ID.
Instructions
Update an existing task by its ID
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The ID of the task to update | |
| content | No | New content/title for the task (optional) | |
| description | No | New description for the task (optional) | |
| dueString | No | New due date in natural language (optional) | |
| priority | No | New priority level from 1 (normal) to 4 (urgent) (optional) | |
| labels | No | New array of label names (optional) |
Implementation Reference
- src/index.ts:1228-1249 (handler)Handler logic for executing todoist_update_task: validates args with isUpdateTaskArgs, prepares updateData, calls todoistClient.updateTask(taskId, updateData), formats and returns response.if (name === "todoist_update_task") { if (!isUpdateTaskArgs(args)) { throw new Error("Invalid arguments for todoist_update_task"); } const updateData: any = {}; if (args.content) updateData.content = args.content; if (args.description) updateData.description = args.description; if (args.dueString) updateData.dueString = args.dueString; if (args.priority) updateData.priority = args.priority; if (args.labels) updateData.labels = args.labels; const updatedTask = await todoistClient.updateTask(args.taskId, updateData); return { content: [{ type: "text", text: `Task updated successfully:\nID: ${updatedTask.id}\n${formatTask(updatedTask)}` }], isError: false, }; }
- src/index.ts:146-181 (schema)Tool schema definition including name, description, and inputSchema for validating arguments to todoist_update_task.const UPDATE_TASK_TOOL: Tool = { name: "todoist_update_task", description: "Update an existing task by its ID", inputSchema: { type: "object", properties: { taskId: { type: "string", description: "The ID of the task to update" }, content: { type: "string", description: "New content/title for the task (optional)" }, description: { type: "string", description: "New description for the task (optional)" }, dueString: { type: "string", description: "New due date in natural language (optional)" }, priority: { type: "number", description: "New priority level from 1 (normal) to 4 (urgent) (optional)", enum: [1, 2, 3, 4] }, labels: { type: "array", items: { type: "string" }, description: "New array of label names (optional)" } }, required: ["taskId"] } };
- src/index.ts:1083-1121 (registration)Registration of all tools including UPDATE_TASK_TOOL in the ListToolsRequestHandler, making todoist_update_task available.server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: [ // Task tools CREATE_TASK_TOOL, QUICK_ADD_TASK_TOOL, GET_TASKS_TOOL, GET_TASK_TOOL, UPDATE_TASK_TOOL, DELETE_TASK_TOOL, COMPLETE_TASK_TOOL, REOPEN_TASK_TOOL, SEARCH_TASKS_TOOL, MOVE_TASK_TOOL, BULK_MOVE_TASKS_TOOL, // Project tools GET_PROJECTS_TOOL, GET_PROJECT_TOOL, CREATE_PROJECT_TOOL, UPDATE_PROJECT_TOOL, DELETE_PROJECT_TOOL, // Section tools GET_SECTIONS_TOOL, CREATE_SECTION_TOOL, UPDATE_SECTION_TOOL, DELETE_SECTION_TOOL, // Label tools CREATE_LABEL_TOOL, GET_LABEL_TOOL, GET_LABELS_TOOL, UPDATE_LABEL_TOOL, DELETE_LABEL_TOOL, // Comment tools CREATE_COMMENT_TOOL, GET_COMMENT_TOOL, GET_COMMENTS_TOOL, UPDATE_COMMENT_TOOL, DELETE_COMMENT_TOOL, ], }));
- src/index.ts:799-813 (helper)Type guard helper function used to validate arguments for todoist_update_task before execution.function isUpdateTaskArgs(args: unknown): args is { taskId: string; content?: string; description?: string; dueString?: string; priority?: number; labels?: string[]; } { return ( typeof args === "object" && args !== null && "taskId" in args && typeof (args as { taskId: string }).taskId === "string" ); }