Skip to content

Task & list operation completion: update_list.content, milestone/markdown/archived flags, delete_task, dependencies, search_docs v3 fix#6

Open
Esteban-Rod wants to merge 4 commits into
nsxdavid:mainfrom
Esteban-Rod:feat/task-list-completion
Open

Task & list operation completion: update_list.content, milestone/markdown/archived flags, delete_task, dependencies, search_docs v3 fix#6
Esteban-Rod wants to merge 4 commits into
nsxdavid:mainfrom
Esteban-Rod:feat/task-list-completion

Conversation

@Esteban-Rod

Copy link
Copy Markdown

Summary

This PR fills four small but visible gaps in task/list coverage so callers no longer need to drop down to raw REST for common operations:

  1. update_list accepts content — needed to set/update a list's description (e.g. tagging a list with a project mode marker on its first line). The schema previously accepted only name.
  2. create_task / update_task expose custom_item_id, markdown_description, archived — needed to mark a task as a milestone (diamond on Gantt; custom_item_id: 1), to write rich-formatted descriptions that ClickUp actually renders, and to archive/unarchive tasks.
  3. New tools: delete_task, add_task_dependency, remove_task_dependencyTasksClient already had deleteTask, just no tool wrapper. The two dependency tools accept exactly one of depends_on / dependency_of and the underlying client's delete() was extended to forward query params (needed by the dependency removal endpoint).
  4. search_docs rewritten on top of v3 docs listing — the existing v2 endpoint GET /team/{ws}/docs/search returns 404 (the v2 search endpoint doesn't exist), and v3 has no dedicated search endpoint. This switches to paginated listing of GET /workspaces/{ws}/docs + client-side case-insensitive substring filter on name. The space:<spaceId> query syntax is preserved (matched against parent.id). Pagination is capped at 40 × 50 docs to avoid runaway loops on huge workspaces.

Test plan

  • npm run build clean
  • update_list content roundtrip — set + read back via get_list
  • create_task custom_item_id: 1 produces a milestone (verified diamond icon in UI)
  • markdown_description on create_task renders markdown in the UI
  • update_task archived: true archives, archived: false unarchives
  • delete_task removes a task
  • add_task_dependency + remove_task_dependency both shapes (depends_on and dependency_of)
  • search_docs returns matches by substring; space:<id> filters by parent space; empty query returns all docs in workspace

The update_list tool only exposed 'name'. ClickUp's PUT /list/{id} endpoint
supports both 'name' and 'content' (the list description). This adds the
'content' parameter to the tool schema and forwards it to the REST client.

Use case: setting the 'Mode : Standard|Agile|Produit|OPS' marker on the
first line of a list description, plus structured charter / roadmap
content. Markdown is not rendered in list descriptions (plain text only)
— this is a ClickUp-side limitation, documented but not changed here.
…ption, archived

ClickUp's task endpoints accept three additional fields that were not
exposed by the MCP tools:

- custom_item_id (number): task type. Set to 1 to mark a task as a
  milestone (diamond on Gantt views). Crucial for project/product
  workflows where milestones drive the schedule.
- markdown_description (string): rich-formatted description rendered in
  ClickUp UI. Without this, descriptions had to be plain text only.
- archived (boolean, update_task only): archive/unarchive a task without
  deleting it.

These bridge the most common gaps reported when using the MCP for
project/product list management.
Three previously missing operations are now exposed as MCP tools:

- delete_task: permanently delete a task (the existing client method
  was already there, just not registered as a tool)
- add_task_dependency: create waiting-on / blocking relationship between
  two tasks. Essential for milestone chains (e.g. release V1.1 waits on
  V1.0) that drive Gantt arrows.
- remove_task_dependency: symmetric inverse.

Both dependency tools accept either depends_on or dependency_of
(exactly one) to disambiguate direction, mirroring the REST endpoint.

Also extended ClickUpClient.delete to accept optional query params,
which the DELETE /task/{id}/dependency endpoint requires.
v2 endpoint /team/{ws}/docs/search returns 404 — it does not exist.
v3 docs API has no dedicated search endpoint either, so we page through
GET /api/v3/workspaces/{ws}/docs and filter client-side on doc.name
(case-insensitive substring). The legacy `space:<spaceId>` query syntax
is preserved and now matches by parent.id.

Suboptimal for very large workspaces (linear scan, capped at 40 pages)
but it is the only reliable path until ClickUp ships a real search.
@coderabbitai

coderabbitai Bot commented Apr 29, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@Esteban-Rod has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 58 minutes and 51 seconds before requesting another review.

To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 2a2e4594-22cf-46bd-93cd-ee0b941ccd9e

📥 Commits

Reviewing files that changed from the base of the PR and between cebf20d and f1c3522.

📒 Files selected for processing (6)
  • src/clickup-client/docs.ts
  • src/clickup-client/index.ts
  • src/clickup-client/lists.ts
  • src/clickup-client/tasks.ts
  • src/tools/doc-tools.ts
  • src/tools/task-tools.ts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
Review rate limit: 0/1 reviews remaining, refill in 58 minutes and 51 seconds.

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant