clickup_update_task
Modify ClickUp task details including name, description, priority, due dates, tags, time estimates, assignees, and parent relationships by providing the task ID.
Instructions
Update a task by its ID
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ClickUp task ID | |
| name | No | Task name | |
| markdown_description | No | Task description in markdown format | |
| priority | No | Task priority (1-4): 1=Urgent, 2=High, 3=Normal, 4=Low | |
| due_date | No | Due date as Unix timestamp in milliseconds | |
| tags | No | Array of tag names to add to the task | |
| time_estimate | No | Time estimate in milliseconds | |
| assignees | No | User IDs to add or remove from the task | |
| parent | No | Parent task ID to move this task as a subtask |
Implementation Reference
- Full definition of the 'clickup_update_task' tool, including name, input schema, description, and handler function that maps inputs to UpdateTaskParams and calls taskService.updateTaskconst updateTaskTool = defineTool((z) => ({ name: "clickup_update_task", description: "Update a task by its ID", inputSchema: { task_id: z.string().describe("ClickUp task ID"), name: z.string().optional().describe("Task name"), markdown_description: z .string() .optional() .describe("Task description in markdown format"), priority: z .number() .optional() .describe("Task priority (1-4): 1=Urgent, 2=High, 3=Normal, 4=Low"), due_date: z .number() .optional() .describe("Due date as Unix timestamp in milliseconds"), tags: z .array(z.string()) .optional() .describe("Array of tag names to add to the task"), time_estimate: z .number() .optional() .describe("Time estimate in milliseconds"), assignees: z .object({ add: z .array(z.number()) .optional() .describe("Array of user IDs to add to the task"), rem: z .array(z.number()) .optional() .describe("Array of user IDs to remove from the task"), }) .optional() .describe("User IDs to add or remove from the task"), parent: z .string() .optional() .describe("Parent task ID to move this task as a subtask"), }, handler: async (input): Promise<any> => { const { task_id, ...updateData } = input; const taskParams: UpdateTaskParams = { name: updateData.name, markdown_description: updateData.markdown_description, priority: updateData.priority, due_date: updateData.due_date, tags: updateData.tags, time_estimate: updateData.time_estimate, assignees: updateData.assignees, parent: updateData.parent, }; const response = await taskService.updateTask(task_id, taskParams); return { content: [{ type: "text", text: JSON.stringify(response) }], }; }, }));
- src/services/task.service.ts:55-63 (helper)The TaskService.updateTask helper method that sends a PUT request to the ClickUp API to update the specified task.async updateTask( taskId: string, params: UpdateTaskParams ): Promise<ClickUpTask> { return this.request<ClickUpTask>(`/task/${taskId}`, { method: "PUT", body: JSON.stringify(params), }); }
- src/index.ts:89-91 (registration)Registration loop where all imported tools, including 'clickup_update_task', are registered on the MCP server using server.tool()tools.forEach((tool) => { server.tool(tool.name, tool.description, tool.inputSchema, tool.handler); });
- src/services/task.service.ts:23-32 (helper)Private request helper method in TaskService used by updateTask to make HTTP requests to ClickUp API.private async request<T>( endpoint: string, options: RequestInit = {} ): Promise<T> { const response = await fetch(`${BASE_URL}${endpoint}`, { ...options, headers: this.headers, }); return response.json(); }
- Zod-based input schema for validating parameters to the clickup_update_task tool.inputSchema: { task_id: z.string().describe("ClickUp task ID"), name: z.string().optional().describe("Task name"), markdown_description: z .string() .optional() .describe("Task description in markdown format"), priority: z .number() .optional() .describe("Task priority (1-4): 1=Urgent, 2=High, 3=Normal, 4=Low"), due_date: z .number() .optional() .describe("Due date as Unix timestamp in milliseconds"), tags: z .array(z.string()) .optional() .describe("Array of tag names to add to the task"), time_estimate: z .number() .optional() .describe("Time estimate in milliseconds"), assignees: z .object({ add: z .array(z.number()) .optional() .describe("Array of user IDs to add to the task"), rem: z .array(z.number()) .optional() .describe("Array of user IDs to remove from the task"), }) .optional() .describe("User IDs to add or remove from the task"), parent: z .string() .optional() .describe("Parent task ID to move this task as a subtask"), },