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
| 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" ); }