delete_task
Permanently delete tasks in ClickUp workspaces using task ID or name with list context. This action cannot be undone.
Instructions
⚠️ PERMANENTLY DELETE a task. This action cannot be undone. Valid parameter combinations:
Use taskId alone (preferred and safest)
Use taskName + optional listName (use with caution)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | No | ID of task to delete (preferred). Use this instead of taskName for safety. | |
| taskName | No | Name of task to delete. Use with extreme caution as names may not be unique. | |
| listName | No | Name of list containing the task. Helps ensure correct task deletion when using taskName. |
Implementation Reference
- src/tools/task.ts:1502-1561 (handler)Main handler function for 'delete_task' tool. Resolves taskId from name if provided, fetches task details, calls service deleteTask, returns JSON confirmation.export async function handleDeleteTask(parameters: any) { const { taskId, taskName, listName } = parameters; let targetTaskId = taskId; // If no taskId but taskName is provided, look up the task ID if (!targetTaskId && taskName) { let listId: string | undefined; // If listName is provided, find the list ID first if (listName) { const hierarchy = await workspaceService.getWorkspaceHierarchy(); const listInfo = workspaceService.findIDByNameInHierarchy(hierarchy, listName, 'list'); if (!listInfo) { throw new Error(`List "${listName}" not found`); } listId = listInfo.id; } // Now find the task const tasks = await taskService.getTasks(listId || ''); const foundTask = tasks.find(t => t.name.toLowerCase() === taskName.toLowerCase()); if (!foundTask) { throw new Error(`Task "${taskName}" not found${listName ? ` in list "${listName}"` : ""}`); } targetTaskId = foundTask.id; } if (!targetTaskId) { throw new Error("Either taskId or taskName must be provided"); } // Get task info before deleting (for the response) let taskInfo; try { taskInfo = await taskService.getTask(targetTaskId); } catch (error) { // If we can't get the task info, we'll continue with deletion anyway console.error("Error fetching task before deletion:", error); } // Delete the task await taskService.deleteTask(targetTaskId); // Format response return { content: [{ type: "text", text: JSON.stringify({ id: targetTaskId, name: taskInfo?.name || "Unknown", deleted: true, list: taskInfo?.list?.name || "Unknown", space: taskInfo?.space?.name || "Unknown" }, null, 2) }] }; }
- src/tools/task.ts:689-709 (schema)Tool object definition with input schema for 'delete_task', specifying parameters taskId, taskName, listName.export const deleteTaskTool = { name: "delete_task", description: "\u26a0\ufe0f PERMANENTLY DELETE a task. This action cannot be undone. Valid parameter combinations:\n1. Use taskId alone (preferred and safest)\n2. Use taskName + optional listName (use with caution)", inputSchema: { type: "object", properties: { taskId: { type: "string", description: "ID of task to delete (preferred). Use this instead of taskName for safety." }, taskName: { type: "string", description: "Name of task to delete. Use with extreme caution as names may not be unique." }, listName: { type: "string", description: "Name of list containing the task. Helps ensure correct task deletion when using taskName." } } } };
- src/server.ts:114-115 (registration)Server switch statement registration: routes 'delete_task' tool calls to handleDeleteTask handler.case "delete_task": return handleDeleteTask(params);
- src/server.ts:77-77 (registration)Includes deleteTaskTool in the list of available tools returned by ListToolsRequestHandler.deleteTaskTool,
- src/services/clickup/task.ts:180-194 (helper)TaskService.deleteTask method: performs the actual ClickUp API DELETE request to /task/{taskId}.async deleteTask(taskId: string): Promise<ServiceResponse<void>> { this.logOperation('deleteTask', { taskId }); try { await this.makeRequest(async () => { await this.client.delete(`/task/${taskId}`); }); return { success: true }; } catch (error) { throw this.handleError(error, `Failed to delete task ${taskId}`); } }