You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: add support for custom task IDs (e.g., CHIEF-5804)
All task-related tools now accept custom task IDs in addition to internal
IDs. When a custom task ID is detected (format: PREFIX-NUMBER), the API
calls automatically include custom_task_ids=true and team_id parameters
as required by the ClickUp API.
Changes:
- Add isCustomTaskId() helper function to detect custom ID format
- Update isTaskId() to validate both internal and custom ID formats
- Relax task_id validation across all tools (getTaskById, updateTask,
addComment, searchTasks, getTimeEntries, createTimeEntry)
- Inject custom_task_ids=true and team_id params for API calls with custom IDs
- Update tool descriptions to document custom ID support
Co-Authored-By: Claude <[email protected]>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+11Lines changed: 11 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,6 +5,17 @@ All notable changes to this project will be documented in this file.
5
5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
8
+
## [Unreleased]
9
+
10
+
### Added
11
+
-**Custom task ID support** - All task-related tools now accept custom task IDs (e.g., "CHIEF-5804") in addition to internal IDs (e.g., "86b852ppx")
12
+
- New `isCustomTaskId()` helper function to detect custom task ID format
13
+
- Automatic `custom_task_ids=true` and `team_id` parameter injection for API calls when custom IDs are used
14
+
15
+
### Changed
16
+
- Relaxed task ID validation across all tools (`getTaskById`, `updateTask`, `addComment`, `searchTasks`, `getTimeEntries`, `createTimeEntry`) to accept both internal and custom ID formats
17
+
- Updated tool descriptions to document custom ID support
message: "Task ID must be either 6-9 alphanumeric characters or a custom ID like 'CHIEF-5804'"
130
+
}).describe("The task ID to update (internal like '86b852ppx' or custom like 'CHIEF-5804')"),
126
131
name: taskNameSchema.optional(),
127
132
append_description: z.string().optional().describe("Optional markdown content to APPEND to existing task description (preserves existing content for safety)"),
128
133
status: z.string().optional().describe("Optional new status name - use getListInfo to see valid options"),
* Converts ISO date string to Unix timestamp in milliseconds
@@ -60,7 +60,9 @@ export function registerTimeToolsRead(server: McpServer) {
60
60
"getTimeEntries",
61
61
"Gets time entries for a specific task or all user's time entries. Returns last 30 days by default if no dates specified.",
62
62
{
63
-
task_id: z.string().min(6).max(9).optional().describe("Optional 6-9 character task ID to filter entries. If not provided, returns all user's time entries."),
message: "Task ID must be either 6-9 alphanumeric characters or a custom ID like 'CHIEF-5804'"
65
+
}).optional().describe("Optional task ID to filter entries (internal like '86b852ppx' or custom like 'CHIEF-5804'). If not provided, returns all user's time entries."),
64
66
start_date: z.string().optional().describe("Optional start date filter as ISO date string (e.g., '2024-10-06T00:00:00+02:00'). Defaults to 30 days ago."),
65
67
end_date: z.string().optional().describe("Optional end date filter as ISO date string (e.g., '2024-10-06T23:59:59+02:00'). Defaults to current date."),
66
68
list_id: z.string().optional().describe("Optional single list ID to filter time entries by a specific list"),
@@ -329,7 +331,9 @@ export function registerTimeToolsWrite(server: McpServer) {
329
331
"Suggest moving the task to an active status like 'in progress' first."
330
332
].join("\n"),
331
333
{
332
-
task_id: z.string().min(6).max(9).describe("The 6-9 character task ID to book time against"),
0 commit comments