delete_folder
Permanently remove a ClickUp folder and all its contents including lists and tasks. This irreversible action requires either the folder ID or folder name with space identifier.
Instructions
⚠️ PERMANENTLY DELETE a folder and all its contents. This action cannot be undone. Valid parameter combinations:
Use folderId alone (preferred and safest)
Use folderName + (spaceId or spaceName)
WARNING: This will also delete all lists and tasks within the folder.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| folderId | No | ID of folder to delete (preferred). Use this instead of folderName for safety. | |
| folderName | No | Name of folder to delete. When using this, you MUST also provide spaceId or spaceName. | |
| spaceId | No | ID of space containing the folder (required with folderName). Use this instead of spaceName if you have it. | |
| spaceName | No | Name of space containing the folder (required with folderName). Only use if you don't have spaceId. |
Implementation Reference
- src/tools/folder.ts:359-415 (handler)Main handler function for delete_folder tool. Resolves target folder ID from parameters (supporting folderId or folderName+space), fetches folder details for confirmation, calls folderService.deleteFolder, and returns JSON success message.export async function handleDeleteFolder(parameters: any) { const { folderId, folderName, spaceId, spaceName } = parameters; let targetFolderId = folderId; // If no folderId provided but folderName is, look up the folder ID if (!targetFolderId && folderName) { let targetSpaceId = spaceId; // If no spaceId provided but spaceName is, look up the space ID first if (!targetSpaceId && spaceName) { const spaceIdResult = await workspaceService.findSpaceByName(spaceName); if (!spaceIdResult) { throw new Error(`Space "${spaceName}" not found`); } targetSpaceId = spaceIdResult.id; } if (!targetSpaceId) { throw new Error("Either spaceId or spaceName must be provided when using folderName"); } const folderResult = await folderService.findFolderByName(targetSpaceId, folderName); if (!folderResult) { throw new Error(`Folder "${folderName}" not found in space`); } targetFolderId = folderResult.id; } if (!targetFolderId) { throw new Error("Either folderId or folderName must be provided"); } try { // Get folder details before deletion for confirmation message const folder = await folderService.getFolder(targetFolderId); const folderName = folder.name; // Delete the folder await folderService.deleteFolder(targetFolderId); return { content: [{ type: "text", text: JSON.stringify( { message: `Folder "${folderName}" deleted successfully` }, null, 2 ) }] }; } catch (error: any) { throw new Error(`Failed to delete folder: ${error.message}`); } }
- src/tools/folder.ts:128-149 (schema)Input schema defining parameters for delete_folder tool: folderId (preferred), or folderName with spaceId/spaceName.inputSchema: { type: "object", properties: { folderId: { type: "string", description: "ID of folder to delete (preferred). Use this instead of folderName for safety." }, folderName: { type: "string", description: "Name of folder to delete. When using this, you MUST also provide spaceId or spaceName." }, spaceId: { type: "string", description: "ID of space containing the folder (required with folderName). Use this instead of spaceName if you have it." }, spaceName: { type: "string", description: "Name of space containing the folder (required with folderName). Only use if you don't have spaceId." } }, required: [] }
- src/tools/folder.ts:125-150 (registration)Tool registration object for 'delete_folder' including name, description, and reference to inputSchema.export const deleteFolderTool = { name: "delete_folder", description: "⚠️ PERMANENTLY DELETE a folder and all its contents. This action cannot be undone. Valid parameter combinations:\n1. Use folderId alone (preferred and safest)\n2. Use folderName + (spaceId or spaceName)\n\nWARNING: This will also delete all lists and tasks within the folder.", inputSchema: { type: "object", properties: { folderId: { type: "string", description: "ID of folder to delete (preferred). Use this instead of folderName for safety." }, folderName: { type: "string", description: "Name of folder to delete. When using this, you MUST also provide spaceId or spaceName." }, spaceId: { type: "string", description: "ID of space containing the folder (required with folderName). Use this instead of spaceName if you have it." }, spaceName: { type: "string", description: "Name of space containing the folder (required with folderName). Only use if you don't have spaceId." } }, required: [] } };
- src/server.ts:67-92 (registration)MCP server registration: includes deleteFolderTool in the list of available tools returned by ListTools.server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: [ workspaceHierarchyTool, createTaskTool, getTaskTool, getTasksTool, updateTaskTool, moveTaskTool, duplicateTaskTool, deleteTaskTool, createBulkTasksTool, updateBulkTasksTool, moveBulkTasksTool, deleteBulkTasksTool, createListTool, createListInFolderTool, getListTool, updateListTool, deleteListTool, createFolderTool, getFolderTool, updateFolderTool, deleteFolderTool ] };
- FolderService.deleteFolder helper: Performs the actual ClickUp API DELETE request to /folder/{folderId}.async deleteFolder(folderId: string): Promise<ServiceResponse<void>> { try { this.logOperation('deleteFolder', { folderId }); await this.client.delete(`/folder/${folderId}`); return { success: true }; } catch (error) { throw this.handleError(error, `Failed to delete folder ${folderId}`); } }