amazing-clickup-mcp
Provides comprehensive tools for managing ClickUp workspaces, including spaces, folders, lists, tasks, comments, docs, time tracking, goals, and more.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@amazing-clickup-mcplist tasks in the Marketing Space"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ClickUp MCP Server (amazing-clickup-mcp)
A comprehensive Model Context Protocol server for the ClickUp public API (v2 + v3), built on the official MCP Python SDK (FastMCP, stdio transport). It exposes 166 tools covering nearly the entire ClickUp surface — Spaces, Folders, Lists, Views, Docs, Tasks, Comments, Checklists, Tags, Custom Fields, Time Tracking, Goals, Members, Guests, Webhooks, Chat, and more — so an LLM can read and drive a ClickUp Workspace on your behalf.
The PyPI distribution and console script are both
amazing-clickup-mcp(the bareclickup-mcpname is taken on PyPI by an unrelated package). Always runuvx amazing-clickup-mcp— neveruvx clickup-mcp.
Features
Full API coverage (166 tools). v2 and v3 endpoints across 22 resource groups — Spaces, Folders, Lists, Views, Docs, Tasks, Comments, Checklists, Tags, Custom Fields, Time Tracking 2.0, Relationships, Attachments, Goals, Members & User Groups, Guests, Users, Webhooks, Workspace admin, Chat channels, Chat messages, and a health check.
Statuses managed via payloads. ClickUp has no dedicated statuses endpoint; create and update Space/Folder/List objects with
statuses/override_statusespayloads.Docs created in-place (v3). Create a Doc directly in its final Space/Folder/List/ Everything location — no drag-later.
Dual-format responses. Markdown for humans and LLMs (default) or JSON for programmatic use, selectable per call via
response_format.Strict input validation. One pydantic v2 model per tool (
extra="forbid", field-level constraints) so malformed calls fail fast with a clear message.Uniform error mapping. 400/401/403/404/429, timeouts, and connection errors are normalized into readable strings that surface ClickUp
err/ECODEdetails and rate-limit guidance.stdio-only transport. No HTTP/SSE and no logging to stdout — the standard input/ output channel is the MCP protocol channel.
Related MCP server: ClickUp MCP Server
Available Tools
All 166 tools, grouped by resource. Read tools return either markdown (default) or JSON; mutating tools return a human-readable confirmation.
Tool | Description |
Spaces | |
| Create a new Space inside a Workspace. |
| List the Spaces in a Workspace. |
| Fetch full detail for a single Space, including its status workflow and ClickApp toggles. |
| Rename a Space, change its color/privacy, or replace its ClickApp/status configuration. |
| Permanently delete a Space and everything inside it. |
Folders | |
| Create a Folder inside a Space. |
| List the Folders in a Space. |
| Fetch one Folder, including its Lists and status workflow. |
| Rename a Folder and/or toggle its status-override setting. |
| Permanently delete a Folder and every List/Task inside it. |
| Create a new Folder by replaying a Folder template. |
| List the Folder templates available in a Workspace. |
Lists | |
| Create a new List inside a Folder. |
| Create a new List directly inside a Space, with no parent Folder. |
| List the Lists that belong to a Folder. |
| List the Lists that live directly inside a Space (no Folder). |
| Fetch full detail for a single List by id. |
| Update a List's name, description, dates, priority, assignee, or color. |
| Permanently delete a List from the Workspace. |
| Add an existing Task's membership to an additional List. |
| Remove a Task's membership from an additional (non-home) List. |
| Create a new List inside a Folder by instantiating a List template. |
| Create a new folderless List inside a Space by instantiating a template. |
| List available List templates for a Workspace. |
Views | |
| Create a task or page view at the Everything Level of a Workspace. |
| Create a task or page view scoped to a Space. |
| Create a task or page view scoped to a Folder. |
| Create a task or page view scoped to a List. |
| List the task and page views defined at the Everything Level of a Workspace. |
| List the task and page views available for a Space. |
| List the task and page views available for a Folder. |
| List the task and page views available for a List. |
| Get the full configuration of a single task or page view. |
| List the tasks currently visible in a view, honoring its filters and sorting. |
| Rename a view and/or replace its grouping/sorting/filters/columns/settings. |
| Permanently delete a task or page view. |
Docs | |
| Search the Docs in a Workspace, optionally filtered by parent location. |
| Create a Doc, optionally placed directly in its final location. |
| Fetch a single Doc's metadata (name, parent, timestamps). |
| List a Doc's page tree (titles and ids only, nested — no content). |
| Fetch a Doc's pages with content (the full readable body of the Doc). |
| Add a page to an existing Doc (optionally nested under another page). |
| Fetch one page of a Doc, including its content. |
| Update a Doc page's title, subtitle, and/or content. |
Tasks | |
| Create a task inside a List. |
| Fetch one task by id. |
| List tasks inside ONE List, with filters and sorting. |
| Update fields on an existing task. |
| Permanently delete a task. |
| Search tasks across the ENTIRE Workspace with rich filters. |
| Move a task to a new home List. |
| Merge one or more source tasks into a target task. |
| Create a task in a List from a saved task template. |
| List the Workspace's saved task templates. |
| Report how long one task has spent in each status. |
| Report time-in-status for 2 to 100 tasks in one call. |
Comments | |
| Add a comment to a task. |
| List comments on a task, newest first. |
| Add a comment to a List's info panel. |
| List comments on a List's info panel, newest first. |
| Post a comment into a Chat view. |
| List comments in a Chat view, newest first. |
| Edit a comment's text, (re)assign it, or toggle its resolved state. |
| Permanently delete a comment. |
| Reply inside an existing comment's thread. |
| List the replies in a comment's thread. |
Checklists | |
| Add a new (empty) checklist to a task. |
| Rename a checklist and/or reposition it among a task's other checklists. |
| Permanently remove a checklist (and all of its items) from its task. |
| Add a new line item to an existing checklist. |
| Rename, (un)resolve, reassign, or nest/un-nest a checklist item. |
| Remove a single line item from a checklist (the checklist itself stays). |
Tags | |
| List every task Tag defined in a Space, with its foreground/background colors. |
| Add a new task Tag (with optional colors) to a Space's tag palette. |
| Rename and/or recolor an existing Space tag. |
| Remove a tag from a Space's palette (and from every task carrying it). |
| Apply an existing Space tag to a task. |
| Remove a tag from a task without deleting the tag from the Space. |
Custom Fields | |
| List the Custom Fields accessible from a List. |
| List the Custom Fields available at a Folder scope. |
| List the Custom Fields available at a Space scope. |
| List the Workspace-scoped Custom Fields. |
| Set a Custom Field's value on a task. |
| Clear a Custom Field's value on a task. |
| List the Workspace's custom task types (a.k.a. custom items). |
Time Tracking | |
| List time entries in a Workspace, optionally scoped by date range and location. |
| Fetch one time entry by id. |
| View the list of changes made to a time entry. |
| Get the currently running time entry for a user, if any. |
| Log a completed (already-finished) time entry. |
| Edit an existing time entry's description, tags, times, task, or billable flag. |
| Permanently delete one or more time entries. |
| Start a new, open-ended running timer for the authenticated user. |
| Stop the authenticated user's currently running timer. |
| List every tag ever applied to a time entry in this Workspace. |
| Apply one or more tags to one or more time entries. |
| Remove one or more tags from one or more time entries. |
| Rename a time-entry tag (and set its colors) across the whole Workspace. |
| Overwrite a task's entire set of per-assignee time estimates. |
| Set or adjust specific assignees' time estimates on a task, leaving others unchanged. |
Relationships | |
| Create a blocking dependency between two tasks. |
| Remove a blocking dependency edge between two tasks. |
| Link two tasks with a non-blocking "related to" association. |
| Remove a "related to" link between two tasks. |
Attachments | |
| Upload a local file to a task as an attachment (v2). |
| List the attachments of a task or File-type Custom Field (v3). |
| Upload a local file to a task or File-type Custom Field (v3). |
Goals | |
| Create a new Goal in a Workspace. |
| List the Goals in a Workspace, including any Goal Folders. |
| Get a single Goal's full detail, including its Key Results. |
| Update an existing Goal's name, due date, description, owners, or color. |
| Permanently delete a Goal and all of its Key Results. |
| Add a Key Result (Target) to a Goal. |
| Update a Key Result's progress, note, name, owners, or task/list links. |
| Permanently delete a Key Result (Target) from its Goal. |
Members & Groups | |
| List the Workspace members with direct access to a List. |
| List the Workspace members with direct access to a Task. |
| Create a User Group (ClickUp's endpoint calls this a "Team") in a Workspace. |
| List the User Groups in a Workspace (ClickUp's endpoint slug: "getteams1"). |
| Rename a User Group and/or add/remove its members. |
| Permanently delete a User Group from a Workspace. |
| List the Custom Roles configured for a Workspace. |
| List the Tasks, Lists, and Folders individually shared with the caller. |
Guests (Enterprise) | |
| Invite an external guest to a Workspace by email. |
| Update an existing guest's permission flags or custom role on a Workspace. |
| Look up a guest's permission flags and what has been shared with them. |
| Revoke a guest's access to an entire Workspace. |
| Share a single task with an existing guest at a given permission level. |
| Revoke a guest's access to a single task. |
| Share a List with an existing guest at a given permission level. |
| Revoke a guest's access to a List. |
| Share a Folder with an existing guest at a given permission level. |
| Revoke a guest's access to a Folder. |
Users (Enterprise) | |
| Invite a full member to a Workspace by email. |
| Update a Workspace member's username, admin flag, or custom role. |
| Look up a single Workspace member's profile, role, and admin status. |
| Deactivate a full member's access to a Workspace. |
Webhooks | |
| Register a webhook that pushes ClickUp events to your endpoint. |
| List the webhooks registered in a Workspace, with their delivery health. |
| Change a webhook's endpoint, event subscription, or delivery status. |
| Permanently delete a webhook, stopping all event delivery to its endpoint. |
Workspace | |
| Report the current subscription plan of a Workspace. |
| Report used, total, and available member and guest seats for a Workspace. |
| Query a Workspace's audit trail (Enterprise, Workspace owner only). |
| Set the privacy of an object and grant/revoke user or group access (Enterprise). |
Chat Channels | |
| List the Chat channels in a Workspace, with descriptor filters. |
| Create a Workspace-level Chat channel by name. |
| Create a Chat channel bound to a Space, Folder, or List. |
| Create (or return) a direct-message Chat channel with up to 15 users. |
| Fetch a single Chat channel's metadata by id. |
| Update a Chat channel's name, description, topic, visibility, or location. |
| Permanently delete a Chat channel (Channel, DM, or location-bound). |
| List the users following a Chat channel. |
| List the users who are members of a Chat channel. |
Chat Messages | |
| List the messages in a Chat channel (newest first), cursor-paginated. |
| List the replies threaded under a Chat message, cursor-paginated. |
| List the emoji reactions on a Chat message, cursor-paginated. |
| List the users @-tagged (mentioned) in a Chat message, cursor-paginated. |
| List a Workspace's post subtype IDs (Announcement, Discussion, Idea, Update). |
| Post a new message to a Chat channel. |
| Post a threaded reply under an existing Chat message. |
| Edit a Chat message's content, assignee, or resolved state. |
| Permanently delete a Chat message (and its replies). |
| Add an emoji reaction to a Chat message. |
| Remove an emoji reaction from a Chat message. |
Health | |
| Verify connectivity and authentication against the ClickUp API. |
Prerequisites
Python 3.13+ (only needed for the clone/manual path —
uvxand Docker bring their own runtime).uv — used for both the zero-install
uvxpath and local development.A ClickUp API token. A personal token (Settings → Apps → API Token, starts with
pk_) or an OAuth2 access token. See Authentication.(Optional) Your Workspace (team) id if you want tools to default
team_idwithout passing it every call.(Optional) Docker if you prefer the container path.
Quickstart
git clone https://github.com/trustxai/clickup-mcp.git
cd clickup-mcp
uv sync --group dev
cp .env.example .env # then set CLICKUP_API_TOKEN (and optionally CLICKUP_TEAM_ID)
uv run amazing-clickup-mcp # starts the stdio serverThe server speaks MCP over stdio, so it is normally launched by an MCP client (see Client Configuration) rather than run by hand — but launching it directly is a quick way to confirm it imports and starts.
Run with uvx (zero install)
No clone, no virtualenv — uvx fetches and runs the published package in one step:
CLICKUP_API_TOKEN=pk_your_token_here uvx amazing-clickup-mcpUse
amazing-clickup-mcp, notclickup-mcp. The bareclickup-mcpname on PyPI is an unrelated squatter package and will not run this server.
Client Configuration
Every client launches the server as a subprocess and passes credentials through env.
Replace pk_your_token_here with your token and, optionally, your_workspace_id with
your Workspace (team) id.
Cursor
Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (per project):
{
"mcpServers": {
"clickup": {
"command": "uvx",
"args": ["amazing-clickup-mcp"],
"env": {
"CLICKUP_API_TOKEN": "pk_your_token_here",
"CLICKUP_TEAM_ID": "your_workspace_id"
}
}
}
}Claude Desktop
Edit claude_desktop_config.json (Settings → Developer → Edit Config; on macOS it lives
at ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"clickup": {
"command": "uvx",
"args": ["amazing-clickup-mcp"],
"env": {
"CLICKUP_API_TOKEN": "pk_your_token_here",
"CLICKUP_TEAM_ID": "your_workspace_id"
}
}
}
}Restart Claude Desktop after saving.
Claude Code
Register the server with a single command:
claude mcp add clickup \
--env CLICKUP_API_TOKEN=pk_your_token_here \
--env CLICKUP_TEAM_ID=your_workspace_id \
-- uvx amazing-clickup-mcpOr add the equivalent block to ~/.claude.json under mcpServers (same shape as the
Cursor example above).
MCP Inspector
Exercise the server interactively with the official inspector:
CLICKUP_API_TOKEN=pk_your_token_here \
npx @modelcontextprotocol/inspector uvx amazing-clickup-mcpIf you cloned the repo, you can instead run uv run mcp dev src/clickup_mcp/server.py
(the mcp dev CLI ships in the dev dependency group).
Docker
Build the image from the repo Dockerfile, then point any client at docker run:
docker build -t amazing-clickup-mcp .{
"mcpServers": {
"clickup": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "CLICKUP_API_TOKEN",
"-e", "CLICKUP_TEAM_ID",
"amazing-clickup-mcp"
],
"env": {
"CLICKUP_API_TOKEN": "pk_your_token_here",
"CLICKUP_TEAM_ID": "your_workspace_id"
}
}
}
}The -i flag is required — the server communicates over stdin/stdout. The -e NAME
entries forward the client-provided env values into the container.
Authentication
The server authenticates with a single ClickUp token, sent verbatim in the
Authorization header on every request:
Personal API token — ClickUp → Settings → Apps → API Token. Starts with
pk_. Simplest option; scoped to your own account and permissions.OAuth2 access token — for a multi-user integration. Supply the access token you obtained from the OAuth flow.
The token is read from CLICKUP_API_TOKEN (via .env or the client's env block). It is
never logged. Missing or invalid credentials fail lazily at the first API call with a
clear 401 message rather than at startup.
Environment Variables
Variable | Required | Default | Description |
| yes | — | Personal API token ( |
| no | — | Default Workspace (team) id used when a call omits |
| no |
| v2 API base URL. Override only for a proxy or testing. |
| no |
| v3 API base URL (Docs, Chat, entity attachments, ACL). |
| no |
| Per-request HTTP timeout, in seconds. |
All variables are optional at import time (the server starts without them); only
CLICKUP_API_TOKEN is required to make a successful API call.
Running Manually
Once dependencies are installed (uv sync), any of these start the same stdio server:
uv run amazing-clickup-mcp # console script (recommended)
uv run python -m clickup_mcp # module entry pointWith the package installed into the active environment, amazing-clickup-mcp and
python -m clickup_mcp work without the uv run prefix.
Troubleshooting
429 Too Many Requests/ rate limiting. ClickUp caps requests at roughly 100 requests per minute per token. If you hit a429, slow down and retry after a short pause; the error message surfaces ClickUp's rate-limit details. Prefer bulk/filtered tools (e.g.clickup_get_filtered_team_tasks,clickup_get_bulk_tasks_time_in_status) over many single-item calls.403on Guests / Users / Audit logs / ACL. These endpoints are Enterprise-plan only and return403on other plans. Affected tools include theclickup_*_guest_*andclickup_*_user_*families,clickup_query_audit_logs, andclickup_update_privacy_and_access. There is no workaround short of an Enterprise plan.403when adding/removing tasks across Lists.clickup_add_task_to_listandclickup_remove_task_from_listrequire the Tasks in Multiple Lists ClickApp to be enabled for the Workspace (Settings → ClickApps). Without it the API returns403.v3 cursor pagination. Chat, Docs search, and similar v3 list tools page with an opaque cursor, not
offset. Readnext_cursorfrom a response and pass it back as thecursorargument to fetch the next page; repeat until no cursor is returned.uvx clickup-mcpruns the wrong thing. The bareclickup-mcpPyPI name is an unrelated package. This server is published asamazing-clickup-mcp— alwaysuvx amazing-clickup-mcp.401 Unauthorizedat first call. The token is missing, malformed, or lacks access. ConfirmCLICKUP_API_TOKENis set in the client'senv(or.env) and that it is a valid personal (pk_…) or OAuth2 token. Runclickup_health_checkto verify.
Contributing
Conventional Commits drive releases (release-please). Before pushing, run the full gate —
it must exit 0:
uv run pytest -m "not live" && uv run ruff check src/ && uv run ruff format --check src/ && uv run mypy src/License
Available Tools
166 toolsclickup_add_chat_reactionAIdempotent
Add an emoji reaction to a Chat message.
reaction is the lower-case emoji name (e.g. thumbsup, heart, tada);
it is lower-cased for you.
When to Use:
To react to a message with an emoji.
When NOT to Use:
To remove a reaction — use
clickup_delete_chat_reaction.To list reactions — use
clickup_get_chat_message_reactions.
Returns: A confirmation naming the emoji and message.
Examples:
params = {"message_id": "abc123", "reaction": "thumbsup"}
Error Handling:
400 → unknown emoji name; 404 → unknown message. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false, destructiveHint=false, idempotentHint=true. Description adds that reactions are lower-cased automatically and provides error codes, adding context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections, an example, and error handling. Every sentence adds value without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, annotations, and presence of an output schema, the description covers purpose, usage, parameters, and errors adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has descriptions for each parameter. The description adds useful context like lower-casing behavior and default workspace, but schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add an emoji reaction to a Chat message.' It uses a specific verb-resource pair and distinguishes from sibling tools like clickup_delete_chat_reaction and clickup_get_chat_message_reactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections with specific alternative tool names. Error handling details further guide usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_add_dependencyA
Create a blocking dependency between two tasks.
A dependency says one task must be completed before another. Pick the
direction with exactly one of depends_on (task_id waits on that task) or
dependency_of (task_id blocks that task) — the other end is task_id.
When to Use:
To enforce an execution order ("finish design before build").
To surface blockers on the ClickUp task's Relationships tab.
When NOT to Use:
For a loose "related to" association with no ordering — use
clickup_add_task_linkinstead.To remove an edge — use
clickup_delete_dependency.
Returns: A confirmation naming both tasks and the direction of the new edge.
Examples:
task_id waits on another task:
params = {"task_id": "abc", "depends_on": "xyz"}task_id blocks another task (with custom IDs):
params = {"task_id": "PROJ-1", "dependency_of": "PROJ-2", "custom_task_ids": true, "team_id": "123"}
Error Handling: A 400/403 usually means the Dependencies ClickApp is disabled for the Workspace or the plan does not include it; a 404 means a task ID is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the dependency creation behavior in detail, including direction mutual exclusivity, required parameters, and return value. It also covers error handling (400/403/404) for common issues. Annotations are non-contradictory and the description adds significant behavioral context beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with clear sections, front-loaded with the core purpose, and each sentence adds value. It is concise yet comprehensive, with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (confirmation), the description appropriately mentions the return value. It also covers error handling and provides examples, making it complete for an agent to use effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite context indicating 0% schema description coverage, the description adds essential parameter semantics: explains mutual exclusivity of depends_on/dependency_of, clarifies custom_task_ids usage, and gives concrete examples. This compensates fully for any schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Create a blocking dependency between two tasks.' It explains the concept of dependency direction and distinguishes from related tools like clickup_add_task_link and clickup_delete_dependency, ensuring the agent understands exactly what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections provide clear context: enforce execution order or surface blockers, and contrast with clickup_add_task_link for loose associations and clickup_delete_dependency for removal. Examples further guide correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_add_guest_to_folderA
Share a Folder with an existing guest at a given permission level.
The guest gains visibility into every List and task in the Folder. Note: Enterprise plan only — returns 403 on other plans.
When to Use:
Giving a guest access to an entire Folder (all its Lists and tasks) at once.
When NOT to Use:
Sharing just one List — use
clickup_add_guest_to_list. Sharing just one task — useclickup_add_guest_to_task.
Returns:
A confirmation string with the folder id, guest id, and permission level,
or an Error ... string on failure.
Examples: params = {"folder_id": "321", "guest_id": "456", "permission_level": "create"}
Error Handling: 403 means the Workspace is not on the Enterprise plan. 404 means the folder or guest id does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-readonly and non-destructive mutation. Description adds that the guest gains visibility into every list and task in the folder, that Enterprise plan is required (403 error), and that confirmation or error string is returned. This goes beyond annotations to clarify exact behavior and constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise, well-structured with clear sections (purpose, when to use/not use, returns, example, errors). Every sentence adds necessary information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters and an output schema, the description covers purpose, constraints (Enterprise plan), alternatives, error handling, and return format. It is fully adequate for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has parameter descriptions, but description adds value by clarifying permission_level meanings (e.g., read=view) and providing a usage example. The include_shared parameter is not elaborated, but overall adds nuance beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool shares a folder with an existing guest at a given permission level. It distinguishes from siblings by specifying folder-level access versus list or task, fulfilling a specific verb+resource purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (giving guest access to entire folder) and when not to use (use list or task alternatives). Also notes Enterprise plan restriction and provides error handling details, giving clear guidance on appropriate usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_add_guest_to_listA
Share a List with an existing guest at a given permission level.
The guest gains visibility into every task in the List. Note: Enterprise plan only — returns 403 on other plans.
When to Use:
Giving a guest access to a whole List of tasks at once.
When NOT to Use:
Sharing just one task — use
clickup_add_guest_to_task. Sharing an entire Folder — useclickup_add_guest_to_folder.
Returns:
A confirmation string with the list id, guest id, and permission level, or
an Error ... string on failure.
Examples: params = {"list_id": "789", "guest_id": "456", "permission_level": "comment"}
Error Handling: 403 means the Workspace is not on the Enterprise plan. 404 means the list or guest id does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses important behavioral aspects beyond annotations: the guest gains visibility into every task, Enterprise plan requirement (403 on other plans), and specific error codes (403, 404). Annotations already indicate mutability (readOnlyHint=false), but description adds significant context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear headers (When to Use, When NOT to Use, Returns, Examples, Error Handling). Front-loaded with purpose. Every sentence adds value, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers essential aspects: purpose, usage guidelines, enterprise limitation, error handling, sibling differentiation, and an example. Missing explicit mention of the include_shared parameter, but output schema exists for response details. Slight gap in not explaining that the guest must already exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain all parameters in detail. It provides an example showing list_id, guest_id, and permission_level, but omits the optional include_shared parameter entirely. Schema description coverage is 0%, so description should compensate more. However, the example clarifies usage of the required parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool shares a List with an existing guest at a given permission level, specifying that the guest gains visibility into every task. It explicitly differentiates from siblings by naming alternatives in the 'When NOT to Use' section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to Use' and 'When NOT to Use' sections, with clear references to sibling tools (clickup_add_guest_to_task, clickup_add_guest_to_folder) and a note about Enterprise plan restriction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_add_guest_to_taskA
Share a single task with an existing guest at a given permission level.
The guest must already exist on the Workspace (see
clickup_invite_guest_to_workspace). Note: Enterprise plan only — returns
403 on other plans.
When to Use:
Giving a guest visibility into exactly one task without exposing the rest of the list/folder/space.
When NOT to Use:
Sharing an entire list or folder — use
clickup_add_guest_to_list/clickup_add_guest_to_folderinstead.
Returns:
A confirmation string with the task id, guest id, and permission level, or
an Error ... string on failure.
Examples: params = {"task_id": "abc123", "guest_id": "456", "permission_level": "edit"} params = {"task_id": "CUSTOM-1", "guest_id": "456", "permission_level": "read", "custom_task_ids": True, "team_id": "123"}
Error Handling: 403 means the Workspace is not on the Enterprise plan. 404 means the task or guest id does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false, destructiveHint=false, but the description adds valuable context: returns a confirmation string or error string, explains error handling for 403 and 404, and notes that it is a mutation but not destructive. This goes beyond the bare annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with clear sections (purpose, prerequisites, when to use/not use, returns, examples, error handling). It is concise yet comprehensive, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (permission levels, guest prerequisite, plan restriction, error handling), the description covers all essential aspects: purpose, prerequisites, usage conditions, return value, error handling, and examples. It references sibling tools and includes sufficient detail for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds value through examples showing usage of custom_task_ids and team_id, and clarifies permission_level enum values ('read (view), comment, edit, or create (full access)'). This compensates for the lack of coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Share a single task with an existing guest at a given permission level.' It specifies the action (share), resource (task), and recipient (existing guest), and distinguishes itself from sibling tools like clickup_add_guest_to_list and clickup_add_guest_to_folder by emphasizing a single task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'When to Use' and 'When NOT to Use' sections, directs to alternative tools for list/folder sharing, and states prerequisites (guest must exist via clickup_invite_guest_to_workspace) and plan restrictions (Enterprise only).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_add_tag_to_taskAIdempotent
Apply an existing Space tag to a task.
The tag must already exist in the task's Space — create it first with
clickup_create_space_tag if needed.
When to Use:
Labeling a task with a tag for filtering/reporting.
When NOT to Use:
To define a brand-new tag — use
clickup_create_space_tagfirst.
Returns: A confirmation string naming the applied tag and task.
Examples: params = {"task_id": "9hz", "tag_name": "urgent"} params = {"task_id": "CUST-123", "tag_name": "urgent", "custom_task_ids": True, "team_id": "123"}
Error Handling: 404 if the task_id or tag_name does not exist (the tag must already be defined on the task's Space).
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already show it's a write operation (readOnlyHint: false), idempotent (idempotentHint: true), and non-destructive (destructiveHint: false). The description adds context about returning a confirmation string, error handling (404 if tag/task missing), and that the tag must exist. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, when to use/not, returns, examples, error handling). Every sentence is informative, no redundancy, and front-loaded with the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity (4 parameters, no output schema, good annotations), the description covers purpose, prerequisites, usage guidance, examples, and error handling comprehensively. It is self-contained and sufficient for correct tool usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes parameters with clear descriptions. The description adds value through practical examples that demonstrate usage of all parameters, including optional ones like team_id and custom_task_ids, and explains fallback behavior for team_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Apply an existing Space tag to a task,' using a specific verb and resource. It distinguishes from sibling tools like clickup_create_space_tag (for creating tags) and clickup_remove_tag_from_task (for removal).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'When to Use' and 'When NOT to Use' sections, directing users to clickup_create_space_tag for creating new tags. It also states the prerequisite that the tag must already exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_add_task_linkA
Link two tasks with a non-blocking "related to" association.
Unlike dependencies, a link implies no execution order — it just cross- references two tasks. Only task-to-task links are supported (not links to other object types or arbitrary URLs).
When to Use:
To relate tasks that reference each other without blocking either one.
When NOT to Use:
To enforce completion order — use
clickup_add_dependency.
Returns: A confirmation naming both linked tasks.
Examples:
params = {"task_id": "abc", "links_to": "xyz"}
Error Handling: A 404 means one of the task IDs is wrong; set custom_task_ids + team_id to reference tasks by custom ID.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate it's a write operation (readOnlyHint=false) and non-idempotent, but the description adds valuable behavioral context: only task-to-task links are supported, returns a confirmation naming both tasks, and explains 404 error handling. This goes beyond what annotations alone provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with clear sections (purpose, when to use/not, returns, examples, error handling). Every sentence is informative and no word is wasted, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description wisely summarizes the return type without over-explaining. It covers error handling and constraints (task-to-task only). However, it omits details like idempotency or rate limits, but these are partially covered by annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all parameters (100% coverage despite context signal), so the description adds limited extra semantic value. It covers the non-blocking nature and error conditions but does not significantly enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Link two tasks with a non-blocking "related to" association', specifying the action, resource, and linkage type. It distinguishes itself from siblings like clickup_add_dependency by emphasizing the non-blocking nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'When to Use' and 'When NOT to Use' sections, providing clear context for when this tool is appropriate and directing the user to clickup_add_dependency for completion order enforcement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_add_task_to_listAIdempotent
Add an existing Task's membership to an additional List.
Requires the Tasks in Multiple Lists ClickApp to be enabled for the Workspace; without it ClickUp returns 403. This does not move the Task — it stays in its original (home) List and additionally appears in this one.
When to Use:
A Task needs to appear in a second, cross-cutting List (e.g. a shared "This Sprint" List) without duplicating it.
When NOT to Use:
Moving a Task to a different List entirely (removing it from its current List) — use the tasks module's move-task tool instead.
The Tasks in Multiple Lists ClickApp is disabled for the Workspace — enable it first (ClickUp → Settings → ClickApps).
Returns:
A confirmation string, or an Error ... string.
Examples: params = {"list_id": "901300123456", "task_id": "abc123"}
Error Handling: 403 means the Tasks in Multiple Lists ClickApp is not enabled for this Workspace. 404 means list_id or task_id does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=true), the description adds critical behavioral context: requires specific ClickApp, does not move the task, returns confirmation or error string, and details error handling for 403 and 404.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (description, prerequisites, when to use/not use, returns, examples, error handling). Every sentence is informative and earns its place, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (requires a ClickApp, has a specific behavior distinct from move), the description covers all necessary aspects: prerequisite, use cases, alternatives, return format, and error handling. It is complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for list_id and task_id. The description adds an example and mentions that the task stays in its original list, but does not elaborate further on parameter semantics. Since schema covers the parameters, the description adds moderate value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it adds an existing task to an additional list, distinguishes from moving a task, and notes it does not duplicate but adds membership. It is specific and differentiates from sibling tools like clickup_add_guest_to_list or clickup_add_tag_to_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections with an alternative (move-task tool) and prerequisite (Tasks in Multiple Lists ClickApp). Provides clear guidance on when to invoke this tool vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_add_time_entry_tagsAIdempotent
Apply one or more tags to one or more time entries.
Calls POST /team/{team_id}/time_entries/tags. This is one of the three
dedicated tag actions on this resource — the others are
clickup_remove_time_entry_tags (remove) and clickup_rename_time_entry_tag
(rename a tag everywhere); each call performs exactly one such action.
When to Use:
Bulk-tagging several time entries at once, or adding a brand-new tag (it is created implicitly on first use).
When NOT to Use:
To change tags on a single entry inline while editing it — use
clickup_update_time_entrywithtag_action="add"instead.
Returns: A confirmation string naming the tag(s) and how many entries were tagged.
Examples: params = {"team_id": "123", "time_entry_ids": ["abc", "def"], "tags": [{"name": "billing", "tag_bg": "#BF55EC"}]}
Error Handling: 404 means one of the time_entry_ids doesn't exist or isn't accessible.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide hints (readOnlyHint=false, idempotentHint=true). The description adds value with error handling (404) and implicit tag creation behavior. However, it does not fully describe idempotency implications or other side effects, leaving minor gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, endpoint, siblings, usage, returns, examples, error handling). It is concise and front-loaded with essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and thorough error handling, the description covers all essential aspects. It is complete for effective tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema itself has detailed descriptions for each parameter, so the tool description does not need to repeat them. However, with 0% coverage from the description, it offers only an example that ties parameters together. This is adequate but not excellent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (apply tags to time entries), specifies the endpoint, and distinguishes from sibling tools (remove and rename). It also provides usage context for bulk-tagging and implicit tag creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (bulk-tagging, new tag) and when not to use (single entry editing via clickup_update_time_entry), offering a clear alternative. This meets the highest standard.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_chat_channelA
Create a Workspace-level Chat channel by name.
If a Channel with the given name already exists, ClickUp returns that existing Channel instead of creating a duplicate.
When to Use:
To open a general, non-location-bound channel (e.g. "#announcements").
When NOT to Use:
To attach a channel to a Space/Folder/List — use
clickup_create_location_chat_channel.To start a direct message — use
clickup_create_direct_message.
Returns: A confirmation with the channel's name, id, and visibility.
Examples:
params = {"name": "announcements", "visibility": "PUBLIC"}
params = {"name": "team-x", "user_ids": ["123", "456"], "topic": "Team X"}
Error Handling:
400 → bad payload; 401 → bad token. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states that if a channel with the given name already exists, the tool returns the existing channel instead of creating a duplicate, which is idempotent behavior. However, the annotation idempotentHint=false directly contradicts this, causing confusion about the tool's actual behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (main description, usage, examples, errors) and is concise without extraneous information. Every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers usage guidelines, alternatives, return format, error handling, and defaults (e.g., workspace_id). While very thorough, the contradiction with idempotent hint creates a completeness issue, though the description itself is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all parameters, so the description does not need to repeat them. However, it adds value by giving concrete examples and clarifying the 'name' parameter's duplicate-handling behavior, which goes beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a Workspace-level Chat channel by name, distinguishing it from location channels and direct messages. The verb 'create' and resource 'chat channel' are specific, and sibling differentiation is explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'When to Use' and 'When NOT to Use' sections, naming alternatives like clickup_create_location_chat_channel and clickup_create_direct_message. It also explains the idempotent behavior of returning existing channels, providing excellent guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_chat_view_commentA
Post a comment into a Chat view.
Posts to POST /view/{view_id}/comment. This is the legacy Chat-view
comment surface (views of type=conversation); the newer, richer Chat API
(channels + messages, all v3) lives in tools/chat_messages.py — prefer
that module for new Chat integrations, and this tool only when you are
already working with a Chat-type view id.
When to Use:
To post into an existing Chat view when you already have its view_id.
When NOT to Use:
To send a message in a modern Chat channel — use
clickup_send_chat_message(tools/chat_messages.py) instead.
Returns:
A confirmation string with the new comment's id, hist_id, and timestamp, or
an Error ... string on failure.
Examples: params = {"view_id": "105", "comment_text": "Standup notes for today."}
Error Handling: 404 means the view id is wrong or is not a Chat-type view.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it's a write operation (readOnlyHint=false). Description adds concrete return format (id, hist_id, timestamp) and error handling (404 meaning). Does not detail side effects beyond creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with main action, then logically organized into endpoint, when to use, returns, example, and error handling. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Provides enough context with legacy vs new API distinction, return format, error handling, and example. Could be more explicit about response structure but text description suffices.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already provides descriptions for all parameters (100% coverage). Description includes an example but adds no new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Explicitly states it posts a comment into a Chat view and distinguishes from the newer chat message tool (clickup_send_chat_message). Clear verb and resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Dedicated 'When to Use' and 'When NOT to Use' sections with explicit alternative tool name and scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_checklistA
Add a new (empty) checklist to a task.
Checklists group related to-do items on a task; add items afterwards with
clickup_create_checklist_item.
When to Use:
Breaking a task into a set of trackable sub-steps that are not full tasks.
When NOT to Use:
For work that needs its own assignee, due date, or status — create a subtask instead (
clickup_create_taskwith aparent).
Returns: A confirmation string with the new checklist's name and id.
Examples: params = {"task_id": "9hz", "name": "Pre-launch checks"} params = {"task_id": "CUST-123", "name": "QA", "custom_task_ids": True, "team_id": "123"}
Error Handling: 404 means the task_id does not exist; 403 with custom_task_ids commonly means the team_id does not match the token's Workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations: it states the checklist is empty initially, explains error codes (404, 403) and their meanings, and specifies the return format (confirmation string with name and id). This is valuable context not covered by annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly structured with sections (When to Use, When NOT to Use, Returns, Examples, Error Handling) that are concise and valuable. Every sentence adds information, and the main action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (task ID variants, team ID fallback, error handling, relation to other tools), the description covers all essential aspects: purpose, usage boundaries, return type, examples, and error conditions. It is fully adequate for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema descriptions cover parameter basics, the description enriches semantics with usage examples showing different parameter combinations (e.g., custom_task_ids fallback to CLICKUP_TEAM_ID). It also clarifies the team_id requirement when custom_task_ids is True, which is not explicit in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds an empty checklist to a task, with a specific verb ('Add') and resource ('checklist'). It distinguishes from the sibling tool clickup_create_checklist_item by noting that items are added afterwards, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly defines when to use (breaking a task into trackable sub-steps) and when NOT to use (for work requiring assignee/due date/status, with the alternative clickup_create_task with parent). This provides clear guidance for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_checklist_itemA
Add a new line item to an existing checklist.
When to Use:
Adding a to-do line to a checklist created with
clickup_create_checklist.
When NOT to Use:
To create the checklist itself first — use
clickup_create_checklist.
Returns: A confirmation string; when the API response includes the new item's id it is included, otherwise only the item name and checklist id are echoed.
Examples: params = {"checklist_id": "b8a8...", "name": "Write tests"} params = {"checklist_id": "b8a8...", "name": "Review PR", "assignee": 183}
Error Handling: 404 means the checklist_id does not exist; 400 for an invalid assignee id.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-read-only, non-destructive, non-idempotent. The description adds details on return format (confirmation string with optional id) and error handling (404, 400), supplementing annotations well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections and examples, though slightly verbose. Front-loaded with purpose, but every sentence contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers usage, alternatives, errors, and return format. With a simple schema and output schema provided, the description is sufficiently complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions already cover parameter meanings. The description's examples illustrate usage but do not add significant semantic depth beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add a new line item to an existing checklist,' which is a specific verb+resource. It distinguishes from siblings like clickup_create_checklist by focusing on adding an item to an existing checklist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections provide clear context, including naming the alternative tool clickup_create_checklist for creating the checklist itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_direct_messageA
Create (or return) a direct-message Chat channel with up to 15 users.
One recipient id makes a 1:1 DM; two or more make a Group DM. Omit user_ids
(or pass an empty list) to create a Self DM. ClickUp returns the existing DM
channel if one already exists for the same participant set.
When to Use:
To message one or a few users directly rather than in a shared channel.
When NOT to Use:
For a named or location-bound channel — use
clickup_create_chat_channelorclickup_create_location_chat_channel.
Returns: A confirmation with the DM channel's id and participant count.
Examples:
params = {"user_ids": ["123"]}
params = {"user_ids": ["123", "456", "789"]}
params = {} # Self DM
Error Handling:
400 → more than 15 users / bad id; 401 → bad token. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context about the tool being idempotent in behavior (returns existing DM if same participant set), which is at odds with the annotation 'idempotentHint: false'. This contradiction reduces reliability. Otherwise, it provides error handling details but no additional behavioral traits beyond what annotations already indicate (readOnlyHint=false, destructiveHint=false).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (When to Use, When NOT to Use, Returns, Examples, Error Handling). It is front-loaded with the main purpose. Although somewhat lengthy, every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all key aspects: different DM types, participant limits, idempotency (existing channel returned), error codes, and examples. An output schema exists, so return value explanation is unnecessary. The description is thorough for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds value for 'user_ids' by explaining 1:1, Group, and Self DM scenarios with examples. However, 'workspace_id' is not mentioned in the description; the schema already adequately describes it. Since schema description coverage is effectively high (the schema contains descriptions for both parameters), the description adds moderate value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create (or return)') and resource ('direct-message Chat channel') and specifies the limit of 15 users. It distinguishes from sibling tools 'clickup_create_chat_channel' and 'clickup_create_location_chat_channel' by mentioning they are for named or location-bound channels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections provide clear guidance, including specific alternative tools to use instead. This helps the agent select the correct tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_docA
Create a Doc, optionally placed directly in its final location.
Set parent_id + parent_type to create the Doc inside a Space, Folder,
List, the Everything level, or the Workspace root in one call — no
create-then-drag. The parent type maps to ClickUp's numeric enum:
space→4, folder→5, list→6, everything→7, workspace→12. Omit both parent
fields to create the Doc in the default (private) location.
When to Use:
To start a new Doc where it belongs (e.g. a spec Doc inside a project List).
When NOT to Use:
To add a page to an existing Doc — use
clickup_create_page.To change an existing page's text — use
clickup_edit_page.
Returns: A confirmation with the new Doc's name, id, and parent location.
Examples:
params = {"name": "Q3 Spec", "parent_id": "901300", "parent_type": "list"}
params = {"name": "Scratch", "create_page": false}
Error Handling:
400 → bad parent id/type pairing; 404 → parent not found. Errors return an
Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the placement behavior (optional parent_id/parent_type) and default location. It also describes error responses. Annotations do not contradict; the tool's behaviors are fully disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, well-structured with clear sections, and front-loads the primary action. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's parameter count and complexity, the description is complete: it covers usage, placement logic, alternatives, returns, error handling, and examples. Output schema is said to exist, so return values are covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions already provide meaning for each parameter. The description adds valuable context like the numeric enum mapping for parent_type and the default behavior for missing parent fields, enhancing understanding beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a Doc, optionally placing it in a specific location. It distinguishes from siblings like clickup_create_page and clickup_edit_page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'When to Use' and 'When NOT to Use' sections, naming specific alternative tools. Examples and error handling further guide correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_entity_attachmentA
Upload a local file to a task or File-type Custom Field (v3).
Reads the file at file_path and posts it as multipart/form-data to
POST /v3/workspaces/{workspace_id}/{entity_type}/{entity_id}/attachments.
After uploading to a Custom Field (entity_type='custom_fields'), call
clickup_set_custom_field_value to associate the uploaded file with a task.
When to Use:
The modern replacement for
clickup_create_task_attachment, and the only way to upload to a File-type Custom Field.
When NOT to Use:
To read existing attachments — use
clickup_get_entity_attachments.
Returns: A confirmation with the new attachment's id and URL (never the file bytes).
Examples:
task:
params = {"workspace_id": "123", "entity_type": "attachments", "entity_id": "abc", "file_path": "/tmp/a.png"}custom field:
params = {"workspace_id": "123", "entity_type": "custom_fields", "entity_id": "fld-1", "file_path": "./a.png"}
Error Handling:
A ValidationError before the request means the path is missing/empty/too
large; a 404 means the entity_id was not found — or the v3 attachments
surface is not available on this Workspace (verified live: some plans 404
on this endpoint entirely; use clickup_create_task_attachment for task
files in that case).
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, consistent with the write operation. The description adds context: it posts multipart/form-data, returns id and URL (never bytes), and notes that some plans may 404. It does not explicitly mention file size limits or cleanup behavior, but overall adds good transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with sections for purpose, mechanism, usage guidance, return value, examples, and error handling. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (binary entity_type, dependency on another tool, error cases), the description covers all necessary aspects: the upload process, required follow-up for custom fields, return values, and error scenarios. It is complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes each parameter, but the description adds crucial context: the distinction between entity_type 'attachments' vs 'custom_fields', that file_path must be local, and the post-upload step for custom fields using `clickup_set_custom_field_value`. Examples further clarify usage, compensating for any schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool uploads a local file to a task or File-type Custom Field (v3). It distinguishes itself from siblings like `clickup_create_task_attachment` (modern replacement) and `clickup_get_entity_attachments` (for reading), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections name alternatives and provide fallback guidance. Error handling explains when to use `clickup_create_task_attachment` if the endpoint returns 404, leaving no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_folderA
Create a Folder inside a Space.
Calls POST /space/{space_id}/folder. Folders group Lists within a
Space; a Folder created here starts empty (use the Lists tools to add
Lists to it once t3-lists lands). ClickUp's Create Folder endpoint only
accepts name in the body — to enable Folder-level statuses, call
clickup_update_folder with override_statuses=true after creating.
When to Use:
To organize related Lists under one container inside a Space.
When NOT to Use:
To create a List that doesn't need a Folder (use the folderless-list tool in
tools/lists.pyonce available).To duplicate an existing structure — use
clickup_create_folder_from_template.
Returns:
A confirmation string with the new Folder's name and id, or an
Error ... string describing the failure.
Examples: params = {"space_id": "90130912", "name": "Q3 Launches"}
Error Handling:
404 means space_id doesn't exist or isn't accessible; 400 means the
name is missing/invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only and non-destructive nature; description adds context that the folder starts empty, only accepts name initially, and returns a confirmation string or error, without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections, front-loaded purpose, and includes example and error handling. While slightly long, it remains useful and focused.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, behavioral details, parameters, return value, error handling, and related tools, making it fully contextual for a simple creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description reinforces the schema parameters with context about the API endpoint and an example. Though schema coverage is marked as 0%, the description adds value beyond the schema's minimal descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Create a Folder inside a Space' and differentiates from sibling tools like clickup_create_folder_from_template and folderless list tool, with explicit 'When NOT to Use' section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections, plus a tip about enabling folder-level statuses via clickup_update_folder, providing clear guidance on when to select this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_folder_from_templateA
Create a new Folder by replaying a Folder template.
Calls POST /space/{space_id}/folder_template/{template_id}. Fetch
available template ids (always t--prefixed) with
clickup_get_folder_templates first.
When to Use:
To stamp out a repeatable Folder structure (Lists, statuses, views) instead of rebuilding it by hand with
clickup_create_folder.
When NOT to Use:
To create a plain empty Folder — use
clickup_create_folder.
Returns:
A confirmation string with the new Folder's id, or an Error ... string.
If options.return_immediately is left at ClickUp's default, the
template content may still be populating asynchronously — re-check with
clickup_get_folder.
Examples: params = { "space_id": "90130912", "template_id": "t-7162342", "name": "Q4 Launch (from template)", "options": {"include_views": True, "old_due_date": True}, }
Error Handling:
404 means space_id or template_id doesn't exist; 400 means the name
is missing/invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses async behavior when return_immediately is default, suggests re-checking with clickup_get_folder. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized with sections, examples, and error handling. Slightly lengthy but each part adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers use cases, async behavior, error codes, return type, and provides an example. Output schema exists but description adequately explains return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Description does not elaborate on parameters beyond schema; schema has detailed descriptions so burden is shared, but description adds minimal param insight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new Folder from a template, and distinguishes it from clickup_create_folder for plain empty folders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections, with direct reference to sibling tool clickup_create_folder, and prerequisite mention of clickup_get_folder_templates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_folderless_listA
Create a new List directly inside a Space, with no parent Folder.
Use this for Spaces that are not organized into Folders. Use
clickup_create_list instead when the List belongs under an existing
Folder.
When to Use:
The Space has no Folder structure and Lists sit directly under it.
When NOT to Use:
The Space is organized into Folders — use
clickup_create_listso the new List lands in the right Folder.Copying an established List's tasks/views/custom fields — use
clickup_create_list_from_template_in_spaceinstead.
Returns:
A confirmation string with the new List's name and id, or an
Error ... string.
Examples: params = {"space_id": "67890", "name": "General"} params = {"space_id": "67890", "name": "Intake", "status": "green"}
Error Handling:
404 means space_id does not exist or is not accessible; 400 usually
means name is missing or a duplicate is not allowed under this Space.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description discloses return format (confirmation or error string), error handling (404, 400), and lack of folder parent. Annotations are sparse (no readOnlyHint, destructiveHint), so description adds meaningful behavioral context, though no mention of side effects or auth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections, front-loaded with purpose, and concise without unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all key aspects: purpose, usage conditions, alternatives, return format, examples, error cases. Output schema exists but description aligns with it. Complete for a creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Description provides examples for space_id, name, and optional status but does not explain other parameters (content, assignee, due_date, etc.). Input schema already has detailed parameter descriptions, so description adds marginal extra value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a list directly in a space without a parent folder, using specific verb and resource. It distinguishes from sibling tools like clickup_create_list and clickup_create_list_from_template_in_space.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections with named alternatives (clickup_create_list, clickup_create_list_from_template_in_space) provide clear context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_folder_viewA
Create a task or page view scoped to a Folder.
When to Use:
Building a dashboard/board/calendar for one Folder specifically.
When NOT to Use:
A Space- or Workspace-wide view — use
clickup_create_space_view/clickup_create_team_view.A List-scoped view — use
clickup_create_list_view.
Returns:
A confirmation string with the new view's id, name, and type, or an
Error ... string.
Examples: params = {"folder_id": "789", "name": "Backlog Table", "type": "table"}
Error Handling: 404 means the Folder id is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are present (readOnlyHint=false, destructiveHint=false). Description adds return type (confirmation string with id, name, type, or error string) and error handling (404 meaning wrong folder_id). Does not contradict annotations. Could mention any side effects, but creation tools typically have minimal side effects beyond creating the view.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise and well-structured with clear sections: purpose, when to use, when not to use, returns, example, error handling. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with a comprehensive schema and existing annotations, the description covers usage context, error cases, and return format. Output schema is noted as present, so return details are sufficiently covered. No gaps identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover all parameters (schema_description_coverage is high, though context says 0% it appears descriptions are present). The description provides a concrete example of required parameters (folder_id, name, type). This adds value over schema alone but does not detail optional parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Create a task or page view scoped to a Folder.' Differentiates from sibling tools by specifying when NOT to use and naming alternatives (clickup_create_space_view, clickup_create_team_view, clickup_create_list_view).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides 'When to Use' and 'When NOT to Use' sections, naming specific alternative tools for other scopes. This gives clear selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_goalA
Create a new Goal in a Workspace.
Goals group one or more Key Results (see clickup_create_key_result)
that track progress toward a target date.
When to Use:
Starting a new OKR / objective that will hold Key Results.
When NOT to Use:
To add a Key Result to an existing Goal — use
clickup_create_key_result.To change an existing Goal's fields — use
clickup_update_goal.
Returns: A confirmation string with the new Goal's id and current fields.
Examples: params = {"name": "Grow MRR", "due_date": 1735689600000, "color": "#32a852"}
Error Handling: 404 usually means the team_id is wrong; 401 means the token is missing/invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-destructive operation. The description adds context on grouping key results, return value, and error scenarios, but does not elaborate on open-world implications or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized and concise: purpose, relationship to other tools, usage guidance, return type, example, and error handling, all in a few sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and rich annotations, the description covers all necessary context: action, usage, alternatives, errors, and an example, making it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for all parameters, and the function description adds an example but no additional semantic meaning beyond what the schema offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and the resource 'Goal' in a Workspace, and distinguishes from related tools like clickup_create_key_result and clickup_update_goal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections, including specific alternative tool names and error handling codes, providing clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_key_resultA
Add a Key Result (Target) to a Goal.
type determines how progress is tracked — see the module docstring.
automatic requires task_ids and/or list_ids since progress is
derived from those tasks/lists rather than manual steps_current edits.
When to Use:
Breaking a Goal down into one or more measurable targets.
When NOT to Use:
Updating an existing Key Result's progress — use
clickup_edit_key_result.
Returns: A confirmation string with the new Key Result's id and fields.
Examples: params = { "goal_id": "e53a033c-1146-4b58-b498-7ec39b5661c2", "name": "Close 10 deals", "type": "number", "steps_start": 0, "steps_end": 10, "unit": "deals", "owners": [123], }
Error Handling: 404 means the goal_id does not exist; 400 means the type-specific fields (steps_start/steps_end/task_ids/list_ids) are inconsistent for the chosen type.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a mutable but non-destructive operation. The description adds context by explaining type-specific behaviors (e.g., 'automatic' requires task_ids/list_ids) and error codes (404, 400). It does not cover authorization or side effects, but the main behavioral traits are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: header, type explanation, usage guidance, return info, example, and error handling. Every sentence adds value, and the format is front-loaded for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of multiple key result types and parameter dependencies, the description covers essential aspects: type semantics, when to use automatic, error conditions, and return value shape. The presence of an output schema (acknowledged but not shown) does not detract from the completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the input schema already has comprehensive descriptions (despite the 0% coverage signal), the description adds value by explaining the role of 'type' in progress tracking and the dependency of 'automatic' on task_ids/list_ids. The example further clarifies parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add a Key Result (Target) to a Goal,' using a specific verb and resource. It differentiates from sibling tools by explicitly noting that updating is handled by 'clickup_edit_key_result.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit when-to-use ('Breaking a Goal down into one or more measurable targets') and when-not-to-use ('Updating an existing Key Result's progress') with an alternative tool. Error handling details further guide correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_listA
Create a new List inside a Folder.
Lists inside a Folder normally inherit the Folder's statuses unless the
Folder itself overrides Space statuses. Use
clickup_create_folderless_list instead when the target Space is not
organized into Folders.
When to Use:
Setting up a new List for a team/project that already has a Folder.
Programmatically scaffolding a Workspace structure Folder-by-Folder.
When NOT to Use:
The target Space has no Folders — use
clickup_create_folderless_list.Copying an established List's tasks/views/custom fields — use
clickup_create_list_from_template_in_folderinstead.
Returns:
A confirmation string with the new List's name and id, or an
Error ... string.
Examples: params = {"folder_id": "12345", "name": "Sprint 24", "priority": 2} params = {"folder_id": "12345", "name": "Backlog", "markdown_content": "Unscheduled work"}
Error Handling:
404 means folder_id does not exist or is not accessible; 400 usually
means name is missing or a duplicate is not allowed under this Folder.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains inheritance of Folder statuses, clarifies that the 'status' parameter is a color not a task status, details error handling, and specifies the return format. It does not contradict annotations, which are minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections for purpose, inheritance, when/not, return, examples, and errors. It is informative without being overly verbose, though some sentences could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, usage guidelines, parameter semantics, return type, and error codes. It lacks explicit mention of permissions or rate limits, but these are not critical for this simple creation tool and are implied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Given 0% schema description coverage, the description compensates by providing examples and clarifying parameter behavior (e.g., status as color, content vs. markdown_content), adding value beyond the schema's own descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new List inside a Folder, and distinguishes it from sibling tools like clickup_create_folderless_list and clickup_create_list_from_template_in_folder.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'When to Use' and 'When NOT to Use' sections, referencing concrete scenarios and alternative tools, providing excellent guidance for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_list_commentA
Add a comment to a List's info panel.
Posts to POST /list/{list_id}/comment.
When to Use:
To leave a note on the List itself (not on an individual task) — e.g. a status update visible to everyone with access to the List.
When NOT to Use:
To comment on a specific task — use
clickup_create_task_comment.
Returns:
A confirmation string with the new comment's id, hist_id, and timestamp, or
an Error ... string on failure.
Examples: params = {"list_id": "901234", "comment_text": "Sprint scope finalized.", "notify_all": False}
Error Handling: 404 means the list id is wrong; 403 can mean you lack comment access on the list.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clearly discloses the tool's behavior: it creates a comment (write operation) and returns a confirmation string or error. It details possible error responses for 404 and 403. Annotations (readOnlyHint=false, destructiveHint=false) are consistent. No contradictions. The description adds valuable context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is tightly organized with clear sections: single action line, HTTP endpoint, usage conditions, return format, example, and error handling. Every sentence serves a purpose, no redundancy. It is front-loaded and efficiently scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description adequately explains the return format (confirmation with id, hist_id, timestamp) and error strings. Usage context (list vs. task comment) is clarified, and error codes are provided. All necessary information for invocation is covered without relying on external references.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes all parameters with detailed descriptions. The free-text description provides an example but does not elaborate on parameter semantics beyond what the schema offers. Schema description coverage is 0% (description doesn't explicitly list parameters), but the schema compensates. The example adds marginal value, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with 'Add a comment to a List's info panel,' which clearly states the verb and resource. It immediately distinguishes from commenting on a task by specifying 'not on an individual task' and referencing the sibling tool clickup_create_task_comment. The purpose is unambiguous and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections are provided. 'When to Use' gives a concrete example (status update visible to all). 'When NOT to Use' identifies the alternative precisely. Error handling hints further guide correct usage. This is exemplary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_list_from_template_in_folderA
Create a new List inside a Folder by instantiating a List template.
Use clickup_get_list_templates to discover available template_id
values (they carry a t- prefix, e.g. t-15363293). With
return_immediately=True (the default) the response's List id may
represent a List that is still being populated in the background for
large templates — poll with clickup_get_list if you need to confirm
completion.
When to Use:
Scaffolding a new List that should start with a known set of statuses, views, or starter Tasks defined in a template.
When NOT to Use:
The Space has no Folders — use
clickup_create_list_from_template_in_spaceinstead.No template fits — use
clickup_create_listfor a blank List.
Returns:
A confirmation string with the new List's id, or an Error ... string.
Examples: params = {"folder_id": "12345", "template_id": "t-15363293", "name": "Sprint 24"} params = {"folder_id": "12345", "template_id": "t-15363293", "name": "Sprint 24", "return_immediately": False}
Error Handling:
400 means name is missing or already taken; 404 means the template,
folder, or space was not found.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses async behavior with return_immediately parameter, background population for large templates, and error handling for 400 and 404. No contradiction with annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized with sections, examples, and error handling. Front-loaded with main purpose. Every sentence adds value; no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all aspects: creation, async behavior, prerequisites (template discovery), error handling, and output format. Output schema exists and description explains return value. Complete for a tool with this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions exist (e.g., for template_id, return_immediately), but description adds value by explaining template_id prefix, return_immediately default behavior, and the options parameter. With 0% schema coverage (per context), description compensates well. However, could be more concise about options.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Create a new List inside a Folder by instantiating a List template.' with specific verb and resource. Distinguishes from siblings by mentioning alternative tools in 'When NOT to Use' section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes explicit 'When to Use' and 'When NOT to Use' sections with references to sibling tools like clickup_create_list_from_template_in_space and clickup_create_list. Also advises polling with clickup_get_list for large templates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_list_from_template_in_spaceA
Create a new folderless List inside a Space by instantiating a template.
Use clickup_get_list_templates to discover available template_id
values (they carry a t- prefix, e.g. t-15363293). With
return_immediately=True (the default) the response's List id may
represent a List that is still being populated in the background for
large templates — poll with clickup_get_list if you need to confirm
completion.
When to Use:
Scaffolding a new folderless List that should start with a known set of statuses, views, or starter Tasks defined in a template.
When NOT to Use:
The target Space uses Folders — use
clickup_create_list_from_template_in_folderinstead.No template fits — use
clickup_create_folderless_listfor a blank List.
Returns:
A confirmation string with the new List's id, or an Error ... string.
Examples: params = {"space_id": "67890", "template_id": "t-15363293", "name": "General"}
Error Handling:
400 means name is missing or already taken; 404 means the template or
space was not found.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a write operation (readOnlyHint false) and not destructive. The description adds key behavioral details: with return_immediately=True, the returned List id may represent a List still being populated in the background for large templates, and recommends polling with clickup_get_list to confirm completion. Also covers error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: purpose, prerequisites, usage guidelines, return value, examples, and error handling. Every sentence adds value, and it is concise without unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately explains the return value (confirmation string with id or error). It includes prerequisites, behavioral notes on background population, and error codes. The tool's complexity is well-covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all parameters with descriptions. The tool description adds context for template_id (prefix) and return_immediately (effect), but does not detail the options parameter; however, the schema covers it. Overall, the description complements the schema well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new folderless List inside a Space by instantiating a template. It distinguishes from siblings by naming alternatives like clickup_create_list_from_template_in_folder and clickup_create_folderless_list, and provides specific use cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections provide clear context. It specifies scaffolding a folderless List with a known template, and warns against using when the space uses folders or when no template fits, directing to alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_list_viewA
Create a task or page view scoped to a List.
When to Use:
Building a dashboard/board/calendar for one List specifically.
When NOT to Use:
A Folder-, Space-, or Workspace-wide view — use
clickup_create_folder_view/clickup_create_space_view/clickup_create_team_view.
Returns:
A confirmation string with the new view's id, name, and type, or an
Error ... string.
Examples: params = {"list_id": "901", "name": "Sprint Calendar", "type": "calendar"}
Error Handling: 404 means the List id is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false. The description adds that it returns a confirmation string with view id/name/type or an error, and mentions 404 error handling. No contradictions, but could further detail side effects (e.g., whether it modifies existing data).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections, examples, and bullet points. It is mostly concise, though the 'Returns' and 'Error Handling' sections could be slightly more compressed. Front-loaded with purpose and usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists and the schema describes parameters well, the description covers when to use, when not, return type, and error handling. It misses explaining all optional parameters, but the schema fills that gap. Overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides an example with 'list_id', 'name', 'type' but does not explain all parameters in detail. The schema itself has descriptions for each property, and the example adds practical context, but the description doesn't fully cover the optional parameters' semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates a view scoped to a List, with specific verb and resource. It explicitly distinguishes from sibling tools for Folder-, Space-, or Team-wide views, leaving no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'When to Use' and 'When NOT to Use' sections, naming alternative tools (clickup_create_folder_view, clickup_create_space_view, clickup_create_team_view) and clear conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_location_chat_channelA
Create a Chat channel bound to a Space, Folder, or List.
The channel's name is derived from the location, so there is no name
field — pass the location id and its type instead. The location is sent as
{"id": <location_id>, "type": <space|folder|list>}.
When to Use:
To give a specific Space/Folder/List its own conversation channel.
When NOT to Use:
For a standalone, named channel — use
clickup_create_chat_channel.For a DM — use
clickup_create_direct_message.
Returns: A confirmation with the channel's name, id, and bound location.
Examples:
params = {"location_id": "901300", "location_type": "space"}
params = {"location_id": "L9", "location_type": "list", "visibility": "PRIVATE"}
Error Handling:
400 → bad location; 404 → location not found. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate write operation (readOnlyHint=false) and non-destructive nature. Description adds useful behavioral context: name derivation, error handling (400, 404), and return confirmation structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Efficient structure with separate sections for purpose, usage guidance, returns, examples, and error handling. Every sentence contributes meaning without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers primary behavior, differentiation from siblings, parameter constraints, return value, and error scenarios. With an output schema present, the description provides sufficient context for correct tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has detailed descriptions for all parameters. Description adds value by explaining the combined location object format and the absence of a name field. Examples illustrate usage patterns.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States clearly 'Create a Chat channel bound to a Space, Folder, or List.' Distinguishes from sibling tools like clickup_create_chat_channel (standalone) and clickup_create_direct_message (DM) through explicit when-not-to-use sections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly defines when to use (give a location its own conversation) and when not to (standalone channel, DM) with alternative tool names. Provides examples for clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_pageA
Add a page to an existing Doc (optionally nested under another page).
When to Use:
To append a new section/page to a Doc you already created or found.
When NOT to Use:
To create the Doc itself — use
clickup_create_doc.To modify an existing page — use
clickup_edit_page.
Returns: A confirmation with the new page's name and id.
Examples:
params = {"doc_id": "8cbq...", "name": "Overview", "content": "# Hi"}
params = {"doc_id": "8cbq...", "name": "Detail", "parent_page_id": "abc"}
Error Handling:
404 → Doc/parent page not found. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a write operation (readOnlyHint=false) but non-destructive (destructiveHint=false). The description adds that it returns a confirmation with name and id, and explains error handling for 404. This goes beyond annotations, though it could mention any required permissions or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-organized with clear sections: main action, when to use, when not to use, returns, examples, and error handling. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists (context signals), the description appropriately covers return behavior and error scenarios. Examples cover both top-level and nested page creation. All essential decision points are addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides detailed descriptions for all 7 parameters (name, doc_id, content, etc.), so the description doesn't need to repeat them. The description adds useful examples showing typical usage patterns, which helps the agent understand how to combine parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Add a page to an existing Doc' and specifies optional nesting. It distinguishes from siblings like clickup_create_doc and clickup_edit_page in the 'When NOT to Use' section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('To append a new section/page to a Doc you already created or found') and when not to use, with references to alternative tools for creation and modification.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_spaceA
Create a new Space inside a Workspace.
A Space is the top-level container below a Workspace (Team) — Folders and
Lists live inside it. Use features to toggle ClickApps (due dates, time
tracking, tags, …). Note: custom status workflows CANNOT be set through the
public API (a statuses payload is silently ignored — verified live);
the new Space gets ClickUp's default statuses, editable only in the UI.
When to Use:
Setting up a new top-level area of work (e.g. a new team or project line).
Provisioning a Space with a specific ClickApp configuration up front.
When NOT to Use:
To create a Folder or List inside an existing Space (use the folders/lists tools).
To change features on a Space that already exists (use
clickup_update_space).To define custom statuses — the public API cannot; do it in the ClickUp UI.
Returns:
A one-line confirmation naming the new Space and its id, or an Error ...
string describing the failure.
Examples: params = { "name": "Engineering", "multiple_assignees": True, "features": {"due_dates": {"enabled": True}, "time_tracking": {"enabled": False}}, }
Error Handling: 400 means a malformed features payload; 401/403 mean the token lacks access to the Workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false (write) and destructiveHint=false. Description adds that custom statuses are silently ignored and error codes for auth/validation, which is valuable beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections and front-loaded. Could be slightly more concise, but every section adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, limitations (statuses), returns, and errors. Adequate for a creation tool with rich annotations and output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% (context signal), so description must compensate. It mentions 'features' and gives an example, but does not systematically describe each parameter. The schema itself has detailed descriptions, but the tool description adds marginal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Create a new Space inside a Workspace' with specific verb and resource. Distinguishes from siblings by explicitly naming when to use folder/list tools and update_space instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to Use' and 'When NOT to Use' sections, with specific alternatives mentioned (folders/lists tools, update_space, ClickUp UI).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_space_tagA
Add a new task Tag (with optional colors) to a Space's tag palette.
When to Use:
Defining a new tag before applying it to tasks with
clickup_add_tag_to_task.
When NOT to Use:
To rename or recolor an existing tag — use
clickup_edit_space_tag.
Returns: A confirmation string with the tag's name and colors.
Examples: params = {"space_id": "90130912", "name": "urgent"} params = {"space_id": "90130912", "name": "urgent", "tag_fg": "#FFFFFF", "tag_bg": "#FF0000"}
Error Handling: 404 means the space_id does not exist; 400 for a duplicate tag name.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by specifying the return type (confirmation string) and error handling (404 for nonexistent space, 400 for duplicate tag). Annotations do not contradict, and the description provides useful behavioral context even though openWorldHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: summary, usage guidelines, return info, examples, and error handling. It is concise with no wasted words, front-loading the key action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully covers what the tool does, when to use it, what it returns, and common errors. It is complete for a tag creation tool with good sibling differentiation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema descriptions cover parameters well, and the description reinforces with examples showing optional color usage. This adds meaning beyond the schema, particularly for the optional tag_fg and tag_bg parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Add a new task Tag (with optional colors) to a Space's tag palette.' It uses specific verbs and resources, and distinguishes itself from sibling tools like clickup_add_tag_to_task and clickup_edit_space_tag.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections provide clear context. It advises using this tool before applying tags to tasks and directs the user to clickup_edit_space_tag for renaming or recoloring, offering clear differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_space_viewA
Create a task or page view scoped to a Space.
When to Use:
Building a dashboard/board/calendar for one Space specifically.
When NOT to Use:
A Workspace-wide view — use
clickup_create_team_view.A Folder- or List-scoped view — use
clickup_create_folder_view/clickup_create_list_view.
Returns:
A confirmation string with the new view's id, name, and type, or an
Error ... string.
Examples: params = {"space_id": "456", "name": "Sprint Board", "type": "board"}
Error Handling: 404 means the Space id is wrong; 403 can mean the token lacks access to this Space.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-readOnly, non-destructive, and openWorldHint. The description adds return type (confirmation string or error) and error scenarios, but does not detail mutation behavior or side effects beyond creation. Adds value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized into clear sections (When to Use, When NOT to Use, Returns, Examples, Error Handling) with no redundancy. Every section serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has a single required parameter with nested fields, an output schema exists, and annotations are provided, the description fully covers usage context, return values, and error handling, making it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions for each parameter are already detailed (e.g., 'Display name for the new view'). The description provides a brief example but does not add substantial meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Create a task or page view scoped to a Space' which is a specific verb-resource combination. It also distinguishes from sibling tools like clickup_create_team_view, clickup_create_folder_view, and clickup_create_list_view by explicitly stating when not to use each.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear 'When to Use' and 'When NOT to Use' sections with explicit alternatives for workspace-wide or folder/list-scoped views. Also includes error handling advice for 404 and 403 errors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_taskA
Create a task inside a List.
Calls POST /list/{list_id}/task. Supports the full create surface: assignees
and group assignees, tags, status, priority, due/start dates (unix ms), time
estimate, sprint points, a markdown or plain description, custom-field values,
subtask creation via parent, and a custom task type via custom_item_id.
When to Use:
To add a new task (or a subtask, by setting
parent) to a known List.
When NOT to Use:
To change an existing task — use
clickup_update_task.To copy a predefined template — use
clickup_create_task_from_template.
Returns: A confirmation string with the new task's name, id, and URL.
Examples:
Minimal:
params = {"list_id": "901", "name": "Draft spec"}Rich:
params = {"list_id": "901", "name": "Ship v2", "markdown_content": "## Goal\n...", "assignees": [123], "priority": 2, "due_date": 1735689600000, "due_date_time": true, "tags": ["release"], "custom_fields": [{"id": "abc", "value": "done"}]}
Error Handling: 400 usually means an unknown status/tag or a malformed custom_fields entry; 404 means the List id is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a write operation (readOnlyHint=false). The description adds detail about what is created (task or subtask), the return format (confirmation string), and error conditions. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections. Slightly verbose but every sentence adds value. Examples and error handling are helpful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Comprehensive: covers all major features (subtasks, custom fields, markdown, etc.), includes return format, examples, and error handling. Given the output schema exists, the description is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite the schema having parameter descriptions, the context signals indicate 0% coverage. The description compensates with a summary of supported parameters (assignees, tags, custom fields etc.) and rich examples that demonstrate usage patterns.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Create a task inside a List' with a specific verb and resource. Distinguishes from siblings like clickup_update_task and clickup_create_task_from_template in the 'When NOT to Use' section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections provide clear guidance. Also includes error handling advice (400/404) which helps the agent diagnose failures.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_task_attachmentA
Upload a local file to a task as an attachment (v2).
Reads the file at file_path from the local filesystem and posts it to the
task as multipart/form-data (the ClickUp file field is attachment).
Files already stored in the cloud cannot be used here.
When to Use:
To attach a document, image, or log file that exists on the local disk to a task.
When NOT to Use:
To upload to a File-type Custom Field, or if you prefer the newer API — use
clickup_create_entity_attachment(v3).To read existing attachments — use
clickup_get_entity_attachments.
Returns: A confirmation with the new attachment's id and URL. The file bytes are never echoed back.
Examples:
params = {"task_id": "abc", "file_path": "/tmp/report.pdf"}custom task ID:
params = {"task_id": "PROJ-1", "file_path": "./log.txt", "custom_task_ids": true, "team_id": "123"}
Error Handling: A ValidationError before the request means the path is missing/empty/too large; a 404 means the task ID is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes behavior: reads local file, posts as multipart/form-data, file not echoed back. Annotations declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, consistent with mutation. No contradiction. Adds error handling details (ValidationError for path issues, 404 for wrong task ID).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections (purpose, when to use, returns, examples, error handling). Front-loaded with core purpose. Slightly long but each section earns its place for a complex tool. Could be trimmed slightly but still effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all necessary aspects: purpose, usage scope, alternatives, parameter behavior, return value, examples, error handling. No gaps given the tool's complexity and the presence of output schema (return values not needing further explanation).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Description adds meaning beyond schema descriptions: explains file_path must be local, filename defaults to basename, custom_task_ids usage with team_id. Examples demonstrate parameter combinations. Enhances understanding of how parameters interact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Upload a local file to a task as an attachment (v2)'. It specifies the verb (upload), resource (local file to task), and version. Distinguishes from sibling tools like clickup_create_entity_attachment and clickup_get_entity_attachments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections. Lists alternatives: use clickup_create_entity_attachment for v3 or file-type custom fields, use clickup_get_entity_attachments for reading. Clear guidance on prerequisites like custom_task_ids requiring team_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_task_commentA
Add a comment to a task.
Posts to POST /task/{task_id}/comment.
When to Use:
To leave feedback, ask a question, or hand off context on a task.
To assign a follow-up action item via
assignee/group_assignee.
When NOT to Use:
To reply inside an existing comment thread — use
clickup_create_threaded_comment.To comment on a List's info panel or a Chat view — use
clickup_create_list_comment/clickup_create_chat_view_comment.
Returns:
A confirmation string with the new comment's id, hist_id, and timestamp, or
an Error ... string on failure.
Examples: params = {"task_id": "abc123", "comment_text": "Blocked on design review.", "notify_all": True}
Error Handling: 404 means the task id is wrong; 403 can mean you lack comment access on the task.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false. The description adds valuable behavioral context: return format (confirmation string with id, hist_id, timestamp) and error handling for 404/403. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (purpose, endpoint, when to use, when not to use, returns, examples, error handling). Every sentence earns its place; no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the presence of annotations and schema, the description fully covers usage context, return values, error cases, and examples. It is complete for effective agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all parameters, so the tool description adds little beyond mentioning assignee/group_assignee for action items. With high schema coverage, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add a comment to a task' and specifies the API endpoint. It distinguishes from sibling tools like clickup_create_threaded_comment and clickup_create_list_comment, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists when to use (feedback, questions, handoffs, action items) and when not to use (threaded replies, list/chat view comments), naming alternative tools. Provides excellent decision guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_task_from_templateA
Create a task in a List from a saved task template.
Calls POST /list/{list_id}/taskTemplate/{template_id} with a name. Look up
available template ids with clickup_get_task_templates.
When to Use:
To spin up a task with a predefined structure (checklists, subtasks, fields).
When NOT to Use:
For a plain new task — use
clickup_create_task.
Returns: A confirmation string with the new task's name and id.
Examples:
params = {"list_id": "901", "template_id": "t-123", "name": "Onboard Acme"}
Error Handling: 404 means the List or template id is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-read-only, non-destructive, non-idempotent. Description adds that it performs a POST request and returns a confirmation string with new task name and ID. Also mentions error handling (404). No contradictions. Small gap: no explicit mention of side effects beyond creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-organized with clear sections: overview, endpoint, usage guidelines, returns, example, error handling. No redundant sentences; every line serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the input schema describes parameters and an output schema likely returns the result, the description provides all necessary additional context: purpose, HTTP method, how to get template IDs, when to use, example, and error handling. Covers all key aspects for correct tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema already describes each parameter (name, list_id, template_id). Description adds context by showing the endpoint pattern and explaining how to obtain template IDs via `clickup_get_task_templates`. Provides a concrete example. Schema coverage is 0% but parameters are described in the schema, so description adds complementary value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Create a task in a List from a saved task template.' Specifies verb, resource, and distinguishes from sibling `clickup_create_task` (plain task). Mentions the HTTP POST endpoint for technical clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides 'When to Use' and 'When NOT to Use' sections, with direct reference to alternative tool `clickup_create_task` for plain tasks. Offers actionable guidance on when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_team_viewA
Create a task or page view at the Everything Level of a Workspace.
Everything-Level views can surface tasks from every Space in the Workspace, which makes this the level to use for cross-Space dashboards.
When to Use:
Building a Workspace-wide view (e.g. a Board across every Space).
The view needs Custom Field columns that should apply to every task in the Workspace — see the
columnsfield note.
When NOT to Use:
The view only needs tasks from one Space/Folder/List — use
clickup_create_space_view/clickup_create_folder_view/clickup_create_list_view, which scope the view naturally.
Returns:
A confirmation string with the new view's id, name, and type, or an
Error ... string.
Examples: params = { "team_id": "123", "name": "Everything Board", "type": "board", "grouping": {"field": "status"}, }
Error Handling: 404 means the Workspace (team) id is wrong; 403 can mean the token lacks access to this Workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description discloses important behaviors: Custom Fields added at this level apply to every task and prevent moving the view, error handling for 404/403, and confirmation string return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (purpose, when to use/not use, returns, examples, error handling), every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is comprehensive for the tool's complexity: it covers purpose, usage boundaries, parameter nuances, return type, and error scenarios, leaving no critical gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context to parameters, especially the 'columns' field with its permanent effect, and provides an example usage. Schema descriptions are also present, but the description enhances understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a view at the Everything Level of a Workspace, distinguishing it from other view creation tools by explaining the cross-Space scope and when to use alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections provide clear guidance, naming specific sibling tools (clickup_create_space_view, clickup_create_folder_view, clickup_create_list_view) for different contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_threaded_commentA
Reply inside an existing comment's thread.
Posts to POST /comment/{comment_id}/reply. Threaded replies keep a
discussion nested under its parent comment instead of scattering related
follow-ups as separate top-level task/list/Chat-view comments.
When to Use:
To respond directly to a specific comment (task, List, or Chat-view) rather than starting a new top-level comment.
When NOT to Use:
To start a new top-level comment — use
clickup_create_task_comment/clickup_create_list_comment/clickup_create_chat_view_comment.
Returns:
A confirmation string with the new reply's id, hist_id, and timestamp, or
an Error ... string on failure.
Examples: params = {"comment_id": "446750", "comment_text": "Agreed, I'll update the estimate."}
Error Handling: 404 means the parent comment_id is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=false, destructiveHint=false), the description adds that it posts to a specific endpoint, returns a confirmation string with ID/hist_id/timestamp, explains the nesting behavior, and notes error handling (404 for wrong comment_id). This fully discloses the operation's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (endpoint, when to use/not, returns, example, error handling). It is somewhat lengthy but every part adds value; could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a mutation with complex nesting semantics, the description covers endpoint, usage context, return format, error handling, and example—leaving no gaps. The presence of a rich output schema further supports completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not describe parameters beyond an example. However, the input schema itself has thorough descriptions for all five properties, so the agent can rely on schema. Per guidelines, with schema coverage low (0% from description), baseline is 3; no additional value added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Reply inside an existing comment's thread.' It specifies the endpoint and distinguishes itself from top-level comment creation, which is directly relevant given sibling tools like clickup_create_task_comment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'When to Use' and 'When NOT to Use' sections, naming specific alternative tools (clickup_create_task_comment, etc.), providing clear decision guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_time_entryA
Log a completed (already-finished) time entry.
Calls POST /team/{team_id}/time_entries.
When to Use:
Backfilling time that was tracked elsewhere, or logging a block of work with a known start and either an end time or a duration.
When NOT to Use:
To start an open-ended running timer right now — use
clickup_start_time_entryinstead (noduration/stopneeded there).
Returns: A confirmation string with the created entry's id, task, user, and duration.
Examples: params = {"team_id": "123", "start": 1700000000000, "duration": 3600000, "tid": "abc123", "billable": True} params = {"team_id": "123", "start": 1700000000000, "stop": 1700003600000, "description": "code review"}
Error Handling:
400 means the payload is malformed (e.g. neither duration nor stop
given, or a bad start); 404 means tid doesn't reference a real task.
400 with ECODE TIMEENTRY_072 ("Cannot track time for this task") means the
Time Tracking ClickApp is disabled in that task's Space — enable it via
clickup_update_space features or track without tid (verified live).
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond annotations by specifying the HTTP method (POST), endpoint, return value (confirmation string with key fields), and detailed error handling (400/404, specific error code TIMEENTRY_072 and workaround). Annotations already indicate non-readonly and open-world, but description adds rich behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized with sections (when to use, examples, error handling). Front-loaded with purpose. Slightly long but each sentence adds value; no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (multiple params, mutual exclusivity, default values, error codes) and the presence of an output schema, the description covers the key behavioral aspects, return format, and error scenarios comprehensively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% per context, but the description provides examples showing duration/stop mutual exclusivity and notes default team_id. However, many parameters (tags, assignee, custom_task_ids) are not individually described; the schema itself provides descriptions, so the description adds limited additional semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Log a completed (already-finished) time entry.' which is a specific verb and resource. It clearly distinguishes from sibling tool clickup_start_time_entry by stating when not to use (for running timers).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (backfilling time, logging completed blocks) and when NOT to use (starting a running timer, directing to alternative clickup_start_time_entry). Examples further clarify usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_user_groupA
Create a User Group (ClickUp's endpoint calls this a "Team") in a Workspace.
Calls POST /team/{team_id}/group. Despite the path living under
/team/..., team_id here is the Workspace id — the resource
created is a User Group, addressed afterwards by its own group_id
(a UUID, e.g. "4bfdfcec-6f4f-40a7-b0d6-22660d51870d"). Never confuse
the two: team_id = Workspace, group_id = User Group.
When to Use:
To create a reusable named set of members (e.g. "QA", "Product") that can be @mentioned or assigned as a unit across Spaces/Folders/Lists.
When NOT to Use:
To add/remove members on an existing group, use
clickup_update_user_groupinstead of deleting and recreating it.
Returns: A confirmation string with the new group's group_id, name, and member count.
Examples: params = {"team_id": "123456", "name": "Product Managers", "members": [183, 812]}
Error Handling:
403 if the plan doesn't support User Groups or the token lacks
permission; 400 if members contains invalid user ids. Note: adding a
view-only guest to a group can convert them to a paid guest (billing
impact) — ClickUp's own docs warn about this.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true. The description adds value by explaining the API call details, return value, and warning about billing implications for adding view-only guests. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: API explanation, usage guidelines, return value, examples, error handling. It is detailed but not verbose, and front-loads essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the tool (parameter naming confusion, billing implications) and the presence of siblings, the description covers all necessary aspects: purpose, usage, parameters, behavior, errors, and examples. Complete for effective tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema description coverage is 0%, the description compensates by explaining the meaning of each parameter (team_id is workspace id, members are user ids, handle for @mentions, etc.) and provides an example. It adds clarity beyond the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates a User Group (called a Team in ClickUp's endpoint), specifies the HTTP method and path, and clarifies the confusing terminology (team_id vs group_id). It distinguishes from siblings like clickup_update_user_group and clickup_delete_user_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'When to Use' and 'When NOT to Use' sections, providing clear guidance on when to use this tool vs alternatives (e.g., use clickup_update_user_group for adding/removing members). It also mentions error handling and billing impact.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_create_webhookA
Register a webhook that pushes ClickUp events to your endpoint.
Subscribes an HTTPS endpoint to one or more event types across a Workspace,
optionally narrowed to a single Space, Folder, List, or Task. Pass
events=['*'] to receive every event. ClickUp responds with the new webhook
id and a health object (status/fail_count) reflecting delivery health.
When to Use:
To wire ClickUp into an external system (CI, chatops, sync jobs) on task or hierarchy changes.
To watch a single List/Task by setting the matching location filter.
When NOT to Use:
To inspect or repair existing webhooks — use
clickup_get_webhooksthenclickup_update_webhook.For one-off reads of data — call the relevant read tool directly.
Returns: A confirmation with the new webhook id, its health status, and the subscribed events.
Examples:
params = {"endpoint": "https://x.io/hook", "events": ["taskCreated", "taskUpdated"]}
params = {"endpoint": "https://x.io/hook", "events": ["*"], "list_id": "901300"}
Error Handling:
400 → invalid/unreachable endpoint or unknown event name; 404 → unknown
team/location id. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is not read-only and not destructive, but description adds specifics: it subscribes an endpoint, responds with webhook id and health object, and details error handling (400, 404). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, when to use/not use, returns, examples, error handling). No redundant information, every sentence is useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, annotations, and existence of an output schema, the description covers all necessary aspects: creation, filtering, wildcard events, return fields, and error codes. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes each parameter, but the description adds value by showing usage examples and specifying error handling for invalid endpoint or unknown event names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it registers a webhook to push events to an endpoint. It uses a specific verb ('Register a webhook') and resource ('ClickUp events'), and distinguishes from siblings like clickup_get_webhooks and clickup_update_webhook by indicating when not to use those.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use (to wire into external systems, watch single list/task) and when not to use (to inspect/repair existing webhooks, for one-off reads). It also provides concrete examples of parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_delete_chat_channelADestructive
Permanently delete a Chat channel (Channel, DM, or location-bound).
When to Use:
To remove a channel that is no longer needed.
When NOT to Use:
To only hide/archive it — update its state via
clickup_update_chat_channel.
Returns: A confirmation that the channel was deleted.
Examples:
params = {"channel_id": "6-901300-8"}
Error Handling:
404 → channel not found. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set destructiveHint=true. Description adds that deletion is permanent and irreversible, and explains error responses (404, Error string). Could mention cascading effects, but overall adds meaningful context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections: overview, when to use/not, returns, example, error handling. No redundant information; every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core aspects: purpose, usage boundaries, example, errors. Missing potential details like permission requirements, but given annotations and output schema, it is sufficiently complete for deletion.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% but schema itself has descriptions for both parameters. The description only provides an example for channel_id and omits explanation of workspace_id. Minimal added value; does not compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool permanently deletes a Chat channel (Channel, DM, or location-bound). It distinguishes from sibling tools like clickup_update_chat_channel by specifying that it is for deletion, not hiding/archiving.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides 'When to Use' (remove an unneeded channel) and 'When NOT to Use' (hide/archive, recommending update instead). Includes an example and error handling, offering clear decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_delete_chat_messageADestructiveIdempotent
Permanently delete a Chat message (and its replies).
When to Use:
To remove a message you posted in error.
When NOT to Use:
To edit it instead — use
clickup_update_chat_message.
Returns: A confirmation that the message was deleted.
Examples:
params = {"message_id": "abc123"}
Error Handling:
404 → already gone / unknown id. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as destructive and idempotent. The description adds context about permanence, inclusion of replies, confirmation response, and error behavior (returning an 'Error ...' string). This goes beyond the annotations and provides valuable behavioral insights.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections, no redundant sentences, and front-loaded with the core purpose. Every section earns its place without unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main aspects: purpose, usage guidance, error handling, and return type. It mentions deleting replies, which is not obvious. However, it does not discuss the optional workspace_id parameter or permissions, but the schema fills some gaps. Given the tool's simplicity and the presence of an output schema, it is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite the schema providing descriptions for both parameters (message_id and workspace_id), the tool description only mentions message_id in the example and does not explain workspace_id. Since schema description coverage is 0% (meaning the description does not cover parameters), it fails to compensate for the missing parameter info. The example helps but is insufficient for complete understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'delete' and the resource 'Chat message' with the scope 'and its replies'. It distinguishes itself from the sibling tool 'clickup_update_chat_message' by explicitly stating when not to use it and suggesting the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'When to Use' and 'When NOT to Use' sections, including the exact alternative tool. It also covers error handling with a specific HTTP status code and return format, giving complete guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_delete_chat_reactionADestructiveIdempotent
Remove an emoji reaction from a Chat message.
reaction is the lower-case emoji name and is sent as a path segment.
When to Use:
To undo a reaction you added.
When NOT to Use:
To add one — use
clickup_add_chat_reaction.
Returns: A confirmation that the reaction was removed.
Examples:
params = {"message_id": "abc123", "reaction": "thumbsup"}
Error Handling:
404 → reaction/message not found. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and idempotent behavior. The description adds error handling details (404 response) and mentions the reaction is sent as a path segment, but does not discuss rate limits or other side effects. Adds moderate value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (overview, when to use, when not to use, returns, examples, error handling). Each sentence is purposeful and concise, with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description appropriately includes a brief 'Returns' statement. It covers error scenarios (e.g., 404) and usage guidelines. For a simple delete operation, this is complete and contextual.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all parameters with clear descriptions. The description provides an example and error handling but does not add new semantic meaning beyond what schema states. Baseline is 3 due to high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Remove an emoji reaction from a Chat message.' It uses a specific verb and resource, and distinguishes from the sibling tool 'clickup_add_chat_reaction' by explicitly contrasting the use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit sections 'When to Use' and 'When NOT to Use', guiding the agent to only undo reactions and not add them, with a clear alternative tool reference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_delete_checklistADestructiveIdempotent
Permanently remove a checklist (and all of its items) from its task.
When to Use:
The checklist is no longer needed.
When NOT to Use:
To remove a single item, use
clickup_delete_checklist_iteminstead — this deletes the whole checklist.
Returns: A confirmation string naming the deleted checklist id.
Error Handling: 404 means the checklist_id does not exist (may already be deleted).
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark as destructive and idempotent. Description adds that the deletion is permanent, returns a confirmation string, and clarifies that a 404 means the checklist may already be deleted. This complements the annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with clear sections (main action, when to use, when not, returns, error handling). It is efficient but could be slightly more concise without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, destructive, idempotent), the description fully covers purpose, usage guidelines, return value, and error handling. The existence of an output schema reduces the need to detail return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter `checklist_id` has a schema description ('ID of the checklist to delete'). The description text does not add any additional semantic detail beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Permanently remove a checklist (and all of its items) from its task,' clearly stating the verb, resource, and scope. This distinguishes it from siblings like `clickup_delete_checklist_item`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('The checklist is no longer needed') and when not to use ('To remove a single item, use `clickup_delete_checklist_item` instead'). Also includes error handling context for 404.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_delete_checklist_itemADestructiveIdempotent
Remove a single line item from a checklist (the checklist itself stays).
When to Use:
The individual to-do is no longer relevant, but the rest of the checklist should remain.
When NOT to Use:
To remove the whole checklist, use
clickup_delete_checklist.
Returns: A confirmation string naming the deleted item id.
Error Handling: 404 means the checklist_id or checklist_item_id does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint: true, readOnlyHint: false, idempotentHint: true. The description adds value by specifying the return format (confirmation string with deleted item id) and error handling for 404, which are beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with clear sections for purpose, usage guidance, returns, and error handling. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a delete operation, the description covers what the tool does, when to use it versus alternatives, what the output looks like (confirmation string), and common error scenarios. This is complete given the tool's simplicity and the presence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for both required parameters ('ID of the parent checklist', 'ID of the checklist item to delete'). The description does not add any additional meaning or guidance on parameter usage beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Remove a single line item from a checklist'. It specifies the resource (checklist item) and distinguishes from deleting the whole checklist with the parenthetical 'the checklist itself stays'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides 'When to Use' and 'When NOT to Use' sections. It details that the tool should be used when an individual to-do is irrelevant but the checklist should remain, and directs to `clickup_delete_checklist` for removing the entire checklist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_delete_commentADestructiveIdempotent
Permanently delete a comment.
Calls DELETE /comment/{comment_id}. Works uniformly on task, List,
Chat-view, and threaded-reply comments.
When to Use:
To remove a comment that was posted in error or is no longer relevant.
When NOT to Use:
To just fix wording or mark it resolved — use
clickup_update_commentinstead of destroying history.
Returns:
A confirmation string, or an Error ... string on failure.
Examples: params = {"comment_id": "446750"}
Error Handling: 404 means the comment id is wrong or was already deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and non-read-only. The description adds that deletion is permanent, works uniformly on all comment types, returns a confirmation string or error, and handles 404 specifically. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every section serves a purpose: API call, usage guidelines, return type, example, error handling. No fluff, well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covered: purpose, HTTP method, when to use/not use, return format, example, error handling. Output schema exists but description still explains return values. No gaps for a simple deletion tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate, but it only includes an example without adding meaning beyond the schema's description of comment_id. The parameter is simple, but the description does not provide additional guidance on obtaining the ID or edge cases.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear verb-resource pair: 'Permanently delete a comment.' It also specifies the HTTP endpoint and distinguishes from sibling clickup_update_comment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use ('to remove a comment posted in error or no longer relevant') and when-not-to-use ('to just fix wording or mark it resolved — use clickup_update_comment instead'). Clearly contrasts with a sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_delete_dependencyADestructiveIdempotent
Remove a blocking dependency edge between two tasks.
Identify the edge to remove with exactly one of depends_on or
dependency_of (the same direction you used to create it).
When to Use:
To unblock a task once its dependency no longer applies.
When NOT to Use:
To remove a non-blocking association — use
clickup_delete_task_link.
Returns: A confirmation that the dependency edge was removed.
Examples:
params = {"task_id": "abc", "depends_on": "xyz"}
Error Handling: A 404 means the edge (or a task ID) does not exist; the direction must match how the dependency was originally created.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and idempotent behavior. The description adds value by explaining error handling (404 means edge or task ID missing) and that direction must match creation. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections for usage, returns, examples, and error handling. Every sentence adds value, no fluff. Front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all necessary aspects: usage scenarios, parameter selection rules, expected return, and error handling. The tool has moderate complexity, and the description fully equips the agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions for parameters are present. The description goes beyond by explaining the mutual exclusivity of depends_on and dependency_of in context (same direction as creation) and provides an example, adding practical meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Title and description clearly state the tool removes a blocking dependency edge between tasks. It is distinct from sibling tool clickup_delete_task_link which removes non-blocking associations, and from clickup_add_dependency which adds dependencies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections provide clear guidance: use to unblock a task, do not use for non-blocking associations (directs to clickup_delete_task_link). This helps the agent choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_delete_folderADestructiveIdempotent
Permanently delete a Folder and every List/Task inside it.
Calls DELETE /folder/{folder_id}. This cannot be undone via the API.
When to Use:
To remove a Folder (and everything inside it) that is no longer needed.
When NOT to Use:
To archive instead of destroy — use
clickup_update_foldersemantics via the Space's archive controls, not this tool, if you may need the data again.
Returns:
A confirmation string, or an Error ... string.
Examples: params = {"folder_id": "456"}
Error Handling:
404 means folder_id doesn't exist or was already deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that deletion is permanent and cannot be undone, and includes error handling (404). Annotations already mark destructiveHint=true, but the description adds cascading deletion context without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections, front-loaded key action, and no wasted words. Every sentence provides value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers return type (confirmation or error), error handling, and irreversibility. With an output schema present, this is fully complete for a destructive delete tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes an example usage for folder_id, but the schema itself already provides a clear description. The example and additional context slightly enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action 'Permanently delete a Folder and every List/Task inside it.' It uses strong verbs and resource, distinguishing it from siblings like delete_list or update_folder.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides 'When to Use' and 'When NOT to Use' sections, with an alternative (archive via clickup_update_folder). This leaves no ambiguity for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_delete_goalADestructiveIdempotent
Permanently delete a Goal and all of its Key Results.
When to Use:
Removing an OKR that is no longer tracked.
When NOT to Use:
Removing a single Key Result but keeping the Goal — use
clickup_delete_key_result.
Returns: A confirmation string on success.
Error Handling: 404 means the goal_id does not exist or was already deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructiveHint=true, idempotentHint=true), the description adds that it permanently deletes the goal and all key results, returns a confirmation string, and handles 404 errors for non-existent/already deleted goals.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (purpose, when to use/not use, returns, errors). No redundant sentences; every part contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema needed), the description covers behavior, error handling, and alternatives comprehensively. Meets all needs for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (goal_id). The input schema already provides a description. The tool description does not add further details about the parameter beyond implying its role, so minimal added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Permanently delete a Goal and all of its Key Results', specifying the verb, resource, and scope. It distinguishes itself from the sibling tool `clickup_delete_key_result` which only deletes a single Key Result.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides 'When to Use' and 'When NOT to Use' sections, including an alternative tool (`clickup_delete_key_result`), giving clear guidance on when to invoke this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_delete_key_resultADestructiveIdempotent
Permanently delete a Key Result (Target) from its Goal.
When to Use:
Removing a target that no longer applies, while keeping the parent Goal.
When NOT to Use:
Deleting the whole Goal (and all its Key Results) — use
clickup_delete_goal.
Returns: A confirmation string on success.
Error Handling: 404 means the key_result_id does not exist or was already deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=true. Description adds that deletion is permanent, returns a confirmation string, and specifies error handling (404). Does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise and well-structured with sections for purpose, usage, returns, and error handling. Front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple operation (delete with one param) and existing annotations plus output schema, the description provides complete guidance including alternatives and error cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter key_result_id is well-described in the schema with 'UUID to permanently delete'. Description does not add additional semantics beyond the schema, and schema coverage is presumably high, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool permanently deletes a key result from its goal. Explicitly distinguishes from sibling tool clickup_delete_goal by specifying it removes a target while keeping the parent goal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use (removing a target that no longer applies) and when-NOT-to-use (deleting the whole goal), with an alternative tool named (clickup_delete_goal).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_delete_listADestructiveIdempotent
Permanently delete a List from the Workspace.
This removes the List and all of its Tasks. There is no undo via the API — confirm with the caller before invoking this on production data.
When to Use:
Removing a List that is no longer needed.
When NOT to Use:
Temporarily hiding a List — archive it via
clickup_update_listinstead of deleting (archiving is not exposed as a dedicated flag on this endpoint set; use the ClickUp UI or the List'sarchivedstate through the Folder/Space update tools if you need reversible hiding).
Returns:
A confirmation string, or an Error ... string.
Examples: params = {"list_id": "901300123456"}
Error Handling: 404 means list_id does not exist or was already deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set `destructiveHint: true`, `readOnlyHint: false`, `idempotentHint: true`. The description adds that deletion is permanent, there is no undo via API, and it removes the List and all its Tasks. It also explains the 404 error condition. This provides meaningful context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: main action, consequences, usage guidance, returns, example, and error handling. Every sentence adds value and is front-loaded with the essential purpose. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool being destructive and having a single parameter, the description covers all necessary aspects: purpose, usage guidelines, behavioral transparency, error handling, and an example. It is self-contained and adequately prepares the AI agent for correct invocation, even without output schema content visible.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter is `list_id`. The input schema already has a description: 'List id to permanently delete.' The description provides an example usage with a placeholder value, which aids understanding. However, it does not add extra semantic guidance beyond what the schema offers. Given the schema coverage is 0% (likely meaning no tool-level description in schema), the example compensates well, earning a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Permanently delete a List from the Workspace.' It specifies the resource (List) and action (delete), and distinguishes from sibling tools like `clickup_update_list` which is for archiving. This is a specific verb+resource that leaves no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly includes 'When to Use' and 'When NOT to Use' sections, advising to permanently delete and to archive instead for temporary hiding, naming the alternative tool `clickup_update_list`. It also recommends confirming with the caller before production use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_delete_spaceADestructiveIdempotent
Permanently delete a Space and everything inside it.
This removes every Folder, folderless List, and Task in the Space. Deleting is irreversible from this API surface — there is no archive endpoint here, only outright deletion — so confirm with the user before calling this tool.
When to Use:
Decommissioning a Space that is no longer needed.
When NOT to Use:
To delete a single Folder or List inside the Space (use the folders/lists delete tools).
Returns:
A one-line confirmation that the Space was deleted, or an Error ... string.
Examples: params = {"space_id": "90130012345"}
Error Handling: 404 means the Space is already gone; 401/403 mean the token lacks delete access.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructiveHint: true), description elaborates on irreversible deletion, lack of archive endpoint, and error handling (404, 401/403). Adds context about consequences and permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized with sections (main action, when to use/avoid, returns, examples, error handling). Every sentence adds value, no fluff. Front-loaded with primary purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all relevant aspects: consequences of deletion, alternatives, return value, error scenarios, and example. Output schema is described indirectly, and annotations cover safety.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% (per context), but schema itself describes space_id. Description provides an example (param usage) and implicitly conveys meaning through context. For a single required parameter, this is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Permanently delete a Space and everything inside it,' using a specific verb and resource. It distinguishes from sibling delete tools by specifying it's for Space and mentions alternatives (folders/lists delete tools).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections, naming alternatives (folders/lists delete tools). Also advises confirming with user due to irreversibility.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_delete_space_tagADestructiveIdempotent
Remove a tag from a Space's palette (and from every task carrying it).
The tag_name path segment is URL-encoded automatically.
When to Use:
The tag is unused or being retired.
When NOT to Use:
To just remove the tag from one task — use
clickup_remove_tag_from_task.
Returns: A confirmation string naming the deleted tag.
Error Handling: 404 means the space_id or tag_name does not exist (may already be deleted).
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint and idempotentHint, but the description adds key behavioral details: URL encoding, confirmation string return, error handling (404), and the cascading removal from all tasks. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections, concise sentences, and no redundant information. Every sentence adds value, such as the automatic URL encoding note and the return/error handling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the destructive nature and idempotency annotations, the description fully covers what the tool does, when to use it, return value, and error cases. The output schema exists but is not shown; however, the description mentions the return is a confirmation string, sufficing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% per context, so the description must compensate. It adds the detail that tag_name is URL-encoded automatically, which adds meaning beyond the schema's property descriptions. However, it does not elaborate on the space_id parameter beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Remove' and resource 'tag from a Space's palette', and distinguishes from the sibling 'clickup_remove_tag_from_task'. It covers the scope and effect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections provide clear context for when to invoke this tool vs alternatives, specifically naming 'clickup_remove_tag_from_task'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_delete_taskADestructiveIdempotent
Permanently delete a task.
Calls DELETE /task/{task_id}. This removes the task (and its subtasks); it
cannot be undone via the API. Set custom_task_ids=true (+ team_id) to
address the task by Custom Task ID.
When to Use:
To remove a task you are certain should be gone.
When NOT to Use:
To merely close or archive a task — use
clickup_update_task(status/archived).
Returns: A confirmation string.
Examples:
params = {"task_id": "86cxy1"}
Error Handling: 404 means the task is already gone or the id is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that deletion is permanent, removes subtasks, cannot be undone via API, and describes error handling (404). Annotations already indicate destructive and idempotent, and the description adds specific consequences without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections, each sentence adds value. It is concise yet comprehensive, with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all necessary aspects: purpose, permanence, prerequisites, error handling, and alternatives. With annotations and output schema present, the description is fully adequate for a delete tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema description coverage is reported as 0%, the description explains custom_task_ids and team_id usage with an example. Some parameter details (like task_id format) are left to the schema, but overall adds value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it permanently deletes a task, mentions the HTTP method, and distinguishes from close/archive (via sibling clickup_update_task). It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to Use' and 'When NOT to Use' sections, directing users to use clickup_update_task for close/archive. Also explains custom_task_id usage and workspace id requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_delete_task_linkADestructiveIdempotent
Remove a "related to" link between two tasks.
When to Use:
To undo an association created with
clickup_add_task_link.
When NOT to Use:
To remove a blocking dependency — use
clickup_delete_dependency.
Returns: A confirmation that the link was removed.
Examples:
params = {"task_id": "abc", "links_to": "xyz"}
Error Handling: A 404 means the link (or a task ID) does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and idempotent. Description adds return confirmation and error handling (404 for non-existent link or task). Adds context beyond annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise with clear sections: summary, when to use, when not, returns, examples, error handling. Every sentence is useful and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given tool complexity (simple delete operation) and presence of output schema, description covers purpose, usage, error handling, and example adequately. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions already cover parameters well (task_id, team_id, links_to, custom_task_ids). Description provides an example but does not add new semantic meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Remove a related to link between two tasks', which is a specific verb+resource. It distinguishes from siblings like clickup_delete_dependency and clickup_add_task_link.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (undo association from clickup_add_task_link) and when not (use clickup_delete_dependency for blocking dependencies). Provides clear alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_delete_time_entryADestructiveIdempotent
Permanently delete one or more time entries.
Calls DELETE /team/{team_id}/time_entries/{time_entry_id}.
When to Use:
Removing a duplicate, mistaken, or test time entry.
When NOT to Use:
To stop (but keep) a running timer — use
clickup_stop_time_entry.
Returns: A confirmation string naming the deleted id(s). This is irreversible.
Examples: params = {"team_id": "123", "time_entry_id": "1963465985517105840"} params = {"team_id": "123", "time_entry_id": "111,222,333"}
Error Handling: 404 means the time_entry_id(s) don't exist or aren't accessible.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the irreversible nature of the deletion and provides error handling details (404 for non-existent IDs), adding to the destructiveHint annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections, front-loaded key action, and no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers preconditions, return type, error handling, and irreversibility; complete given the tool's simplicity and output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already covers param descriptions fully; description adds examples showing how to specify single or bulk IDs, adding minor extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool deletes time entries, specifies the API endpoint, and distinguishes from other delete tools in siblings by specifically targeting time entries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections, including a direct alternative (clickup_stop_time_entry) for stopping a running timer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_delete_user_groupADestructiveIdempotent
Permanently delete a User Group from a Workspace.
Calls DELETE /group/{group_id} (ClickUp's endpoint slug is
deleteteam, but this deletes a User Group, not the Workspace
itself — group_id is never a team_id). Deleting the group does not
delete the member accounts; members keep whatever direct or inherited
access they already had outside the group.
When to Use:
To remove a stale or duplicate User Group.
When NOT to Use:
To remove a single member while keeping the group, use
clickup_update_user_groupwithremove_member_idsinstead.
Returns: A confirmation string once the group is deleted.
Examples: params = {"group_id": "4bfdfcec-6f4f-40a7-b0d6-22660d51870d"}
Error Handling: 404 if group_id doesn't exist (it may already be deleted); 403 if the token lacks permission.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructiveHint=true, idempotentHint=true), the description adds context: the delete is permanent, does not delete member accounts or affect their access outside the group, and the API endpoint slug is misleading. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: main purpose, when to use, when not to use, returns, example, error handling. Each sentence adds value, and the length is appropriate for the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description adequately covers purpose, usage, behavior, parameter details, example, and errors. It provides sufficient context for an agent to correctly select and invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides a clear description for group_id: 'User Group id to permanently delete. This is NOT a Workspace/team_id.' The description repeats this caution and adds context about the endpoint but does not add significant new parameter semantics. Baseline of 3 maintained as schema description coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Permanently delete a User Group from a Workspace.' It explains the API endpoint slug discrepancy and distinguishes from deleting the workspace or members. The verb 'delete' and resource 'User Group' are specific, and it notably differentiates from sibling tools like clickup_delete_space or clickup_delete_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections are provided. The NOT to Use case specifies an alternative: 'clickup_update_user_group' for removing individual members. It also includes error handling notes for 404 and 403 responses.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_delete_viewADestructiveIdempotent
Permanently delete a task or page view.
When to Use:
Removing a view (dashboard/board/etc.) that is no longer needed.
When NOT to Use:
Deleting the underlying List/Folder/Space — this only removes the view itself, not its parent container (use the List/Folder/Space delete tools for that).
Returns:
A confirmation string, or an Error ... string.
Examples: params = {"view_id": "abc123"}
Error Handling: 404 means the view id is already gone or was never valid.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (destructiveHint=true, idempotentHint=true) are complemented by description stating 'permanently delete' and return type. Adds context about scope (only view, not parent) and error handling. Could mention idempotency implications, but overall good.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections: purpose, when to use/not use, returns, examples, error handling. Front-loaded with key action. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers return value (confirmation or error string) and error handling (404). With output schema existing, description is sufficient for a simple delete tool with one parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (view_id) with schema description 'View id to delete.' Tool description adds little semantic value beyond the schema, but includes an example usage ('params = {"view_id": "abc123"}') which aids understanding. Adequate but not exceptional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Permanently delete a task or page view' and distinguishes from sibling delete tools by specifying it only removes the view, not the parent container. Examples of view types (dashboard/board/etc.) further clarify scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use and when-NOT-to-use sections. Tells when to use (removing a view no longer needed) and when not to use (deleting underlying container) with pointers to other tools. Includes error handling for 404.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_delete_webhookADestructiveIdempotent
Permanently delete a webhook, stopping all event delivery to its endpoint.
When to Use:
To decommission an endpoint or clean up a failing/duplicate webhook.
When NOT to Use:
To temporarily pause delivery — there is no pause; recreate with
clickup_create_webhookwhen needed, or leave it and ignore the events.
Returns: A confirmation that the webhook was deleted.
Examples:
params = {"webhook_id": "e506-4a29-9d42-26e504e3435e"}
Error Handling:
404 → unknown webhook id. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses permanent deletion and the lack of a pause feature, reinforcing the destructiveHint annotation. It also specifies the return type (confirmation) and error handling. However, it does not explicitly address idempotency as hinted by idempotentHint, though the example and error handling imply non-idempotent behavior on unknown IDs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (summary, when to use/not use, returns, example, error handling). It is concise yet comprehensive, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a delete operation, the description covers all key aspects: purpose, usage guidance, return value, example, and error handling. Annotations already convey destructive and idempotent hints, so no additional behavioral context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes the webhook_id parameter as a UUID. The description adds an example value but does not provide significant additional meaning beyond what the schema offers. With schema coverage effectively 100% (the single parameter has a description), the description's contribution is minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool permanently deletes a webhook and stops event delivery. It distinguishes itself from other tools by explicitly noting there is no pause functionality and referencing clickup_create_webhook as the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to Use' and 'When NOT to Use' sections. It advises against using it for temporary pausing and suggests recreating with clickup_create_webhook instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_edit_checklistAIdempotent
Rename a checklist and/or reposition it among a task's other checklists.
When to Use:
Renaming a checklist, or reordering checklists on a task (
position: 0moves one to the top).
When NOT to Use:
To resolve/reorder individual items — use
clickup_edit_checklist_item.
Returns: A confirmation string with the updated checklist's name and id.
Examples: params = {"checklist_id": "b8a8...", "name": "Launch checklist"} params = {"checklist_id": "b8a8...", "position": 0}
Error Handling: 404 means the checklist_id does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-readonly (write operation), non-destructive, and idempotent. The description adds behavioral context by stating it returns a confirmation string with the checklist's name and ID, and notes error handling (404 for missing checklist_id). This complements without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using clear section headings (When to Use, When NOT to Use, Returns, Examples, Error Handling). Every sentence adds value, and the purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (context signal), the description adequately covers return type, error handling, and usage examples. The 3 parameters are well-explained in the schema and examples. Complete for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all parameters (name, position, checklist_id). The description adds example usage but no new semantic details beyond the schema. With high schema coverage, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it renames and/or repositions a checklist among a task's other checklists. The verb 'Rename' and 'reposition' combined with 'checklist' make the action explicit. It distinguishes from sibling tool 'clickup_edit_checklist_item' which handles individual items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'When to Use' and 'When NOT to Use' sections, providing clear context for when to invoke this tool versus alternatives. It names the specific sibling tool for handling individual items.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_edit_checklist_itemAIdempotent
Rename, (un)resolve, reassign, or nest/un-nest a checklist item.
Nesting: pass parent (another item's checklist_item_id) to indent this
item under it; pass clear_parent=True to move it back to the top level.
When to Use:
Checking off progress (
resolved=True), reassigning, or building a nested checklist structure.
When NOT to Use:
To remove the item entirely, use
clickup_delete_checklist_item.
Returns: A confirmation string describing the applied changes.
Examples: params = {"checklist_id": "b8a8...", "checklist_item_id": "9f1...", "resolved": True} params = {"checklist_id": "b8a8...", "checklist_item_id": "9f1...", "parent": "aa2..."} params = {"checklist_id": "b8a8...", "checklist_item_id": "9f1...", "clear_assignee": True}
Error Handling: 404 means the checklist_id or checklist_item_id does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses behavioral traits beyond annotations: it explains nesting behavior via parent/clear_parent, mentions the return type (confirmation string), and provides error handling (404). Although annotations already indicate non-destructive and idempotent, the description adds practical context without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections and examples, yet remains concise. The first sentence immediately conveys the tool's purpose, and each subsequent part earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple edit actions, nesting) and the availability of an output schema, the description covers return values, error handling, and provides examples. It leaves no significant gaps for an AI agent to understand when and how to invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% (context signal), so the description must compensate. It explains key parameters like parent, clear_parent, resolved, and assignee with examples. However, it does not detail all parameters (e.g., checklist_id, name) beyond what the schema provides, but the usage context adds value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a clear enumeration of actions: 'Rename, (un)resolve, reassign, or nest/un-nest a checklist item.' It specifies the resource (checklist item) and the operations, which distinguishes it from sibling tools like clickup_delete_checklist_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections are provided. The 'When NOT to Use' section names the alternative tool clickup_delete_checklist_item, offering clear guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_edit_guest_on_workspaceAIdempotent
Update an existing guest's permission flags or custom role on a Workspace.
Only the fields you pass are sent; omitted fields are left unchanged on ClickUp's side. Note: Enterprise plan only — returns 403 on other plans.
When to Use:
Adjusting what a guest can see (time tracking, estimates) or do (create views, edit tags) without removing and re-inviting them.
When NOT to Use:
Changing what items a guest can access — use the per-task/list/folder
clickup_add_guest_to_*/clickup_remove_guest_from_*tools for that.
Returns:
A confirmation string listing the fields that were updated, or an
Error ... string on failure.
Examples: params = {"team_id": "123", "guest_id": "456", "can_see_time_spent": False}
Error Handling: 403 means the Workspace is not on the Enterprise plan. 404 means the guest id does not exist on this Workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds patch semantics ('Only fields you pass are sent'), plan restriction ('Enterprise plan only'), and error handling (403, 404). Annotations already provide idempotentHint and destructiveHint, but description adds significant context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections, no redundant sentences. Efficient and front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all necessary aspects: purpose, partial update behavior, plan limitation, usage guidance, return format, and error handling. Output schema exists, so return details are sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% per context, so description should explain parameters. It lists some fields in 'When to Use' and provides an example, but does not enumerate all available parameters (e.g., can_edit_tags, custom_role_id). Adequate but not thorough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Update an existing guest's permission flags or custom role on a Workspace' with specific verb and resource. Distinguishes from sibling tools like add_guest_to_*.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections, naming alternatives (per-task/list/folder tools). Provides clear context for when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_edit_key_resultAIdempotent
Update a Key Result's progress, note, name, owners, or task/list links.
steps_current moves progress along the range set by create_key_result
(steps_start→steps_end); note attaches a short progress comment
alongside the update.
When to Use:
Logging progress on a manual (number/currency/boolean/percentage) Key Result.
When NOT to Use:
Creating a brand-new Key Result — use
clickup_create_key_result.Editing the parent Goal's own fields — use
clickup_update_goal.
Returns: A confirmation string with the Key Result's fields after the update.
Examples: params = { "key_result_id": "8480-49bc-8c57-e569747efe93", "steps_current": 4, "note": "Closed another deal this week.", }
Error Handling: 404 means the key_result_id does not exist; 400 means steps_current is outside the type's valid range.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate write operation (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds context by explaining the relationship between steps_current and the range from create_key_result, noting the return is a confirmation string, and covering error handling for 404 and 400 statuses. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: it starts with the main purpose, then provides usage guidance, return info, an example, and error handling. Every sentence adds value without redundancy, and the front-loading allows quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (not shown but noted) and moderate complexity, the description covers return value (confirmation string), error conditions (404, 400), and example usage. It adequately equips an agent to use the tool correctly without requiring additional external knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema includes descriptions for all parameters, so the baseline is 3. The description adds value by explaining the semantics of steps_current (relationship to the created key result's range) and note (attaching a progress comment), which goes beyond the schema's descriptions. The error handling also gives context for parameter validity (steps_current out of range). Therefore, score 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it updates a Key Result's progress, note, name, owners, or task/list links, using the verb 'Update' and specifying the resource. It distinguishes from siblings like clickup_create_key_result by explicitly stating when not to use this tool, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'When to Use' and 'When NOT to Use' sections, naming alternative tools (clickup_create_key_result, clickup_update_goal) and specifying the context for usage: logging progress on a manual Key Result. This provides clear guidance for selecting the correct tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_edit_pageAIdempotent
Update a Doc page's title, subtitle, and/or content.
content_edit_mode controls how content is applied: replace (default)
overwrites the page body, append adds to the end, prepend adds to the
start — handy for logging into an existing page without a read-modify-write.
When to Use:
To rename a page, change its subtitle, or overwrite/append/prepend content.
When NOT to Use:
To create a new page — use
clickup_create_page.
Returns: A confirmation naming the page, Doc, and edit mode used.
Examples:
params = {"doc_id": "d", "page_id": "p", "content": "new body"}
params = {"doc_id": "d", "page_id": "p", "content": "- log", "content_edit_mode": "append"}
Error Handling:
404 → page not found. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds value beyond annotations by explaining content_edit_mode (replace/append/prepend), return confirmation, and error handling. Annotations indicate idempotent and non-destructive; description aligns and adds context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with clear sections (summary, edit mode, when, returns, examples, error handling). Slightly verbose but front-loaded with core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main parameters and behavior. With output schema present, return value explanation is adequate. Missing details on workspace_id and content_format, but overall sufficient for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, description partially compensates by explaining name, subtitle, content, and content_edit_mode. However, workspace_id and content_format are not mentioned in description, relying on schema which counts as no coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Update a Doc page's title, subtitle, and/or content' with specific verb and resource. Distinguishes from sibling clickup_create_page by stating when NOT to use this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides 'When to Use' and 'When NOT to Use' sections, naming clickup_create_page as alternative. Also explains content_edit_mode behavior and gives examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_edit_space_tagAIdempotent
Rename and/or recolor an existing Space tag.
The tag_name path segment is URL-encoded automatically, so names with spaces or special characters are safe to pass as-is.
When to Use:
Fixing a tag's colors, or renaming it (renaming updates it everywhere it's already applied to tasks).
When NOT to Use:
To create a brand-new tag — use
clickup_create_space_tag.
Returns: A confirmation string with the tag's (possibly new) name and colors.
Examples: params = {"space_id": "90130912", "tag_name": "urgent", "tag_bg": "#990000"} params = {"space_id": "90130912", "tag_name": "urgent", "new_name": "critical"}
Error Handling: 404 means the space_id or tag_name does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and destructiveHint=false. The description adds value by noting that renaming updates the tag everywhere it's already applied, that tag_name is URL-encoded automatically, and includes error handling details. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with sections and is largely concise. However, the 'Returns' and 'Error Handling' sections could be slightly trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of a output schema, the description covers behavior (URL encoding, global update), usage scenarios, error handling, and examples. It is fully sufficient for an AI agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all parameters, so the description adds limited semantic value. However, it clarifies the automatic URL encoding of tag_name (not in schema) and provides concrete examples that illustrate parameter usage, which aids understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with 'Rename and/or recolor an existing Space tag', which is a specific verb+resource combination. It clearly distinguishes from sibling tools like clickup_create_space_tag and clickup_delete_space_tag.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides 'When to Use' and 'When NOT to Use' sections, including a direct reference to the sibling tool clickup_create_space_tag for creating new tags. This gives clear guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_edit_user_on_workspaceAIdempotent
Update a Workspace member's username, admin flag, or custom role.
Only the fields you pass are sent. Note: Enterprise plan only — returns 403 on other plans.
When to Use:
Renaming a member, promoting/demoting admin access, or reassigning a custom role.
When NOT to Use:
Editing a guest's permission flags — use
clickup_edit_guest_on_workspaceinstead.
Returns:
A confirmation string listing the fields that were updated, or an
Error ... string on failure.
Examples: params = {"team_id": "123", "user_id": "456", "admin": True}
Error Handling: 403 means the Workspace is not on the Enterprise plan (or you lack admin rights). 404 means the user id does not exist on this Workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a write operation (readOnlyHint=false) that is not destructive (destructiveHint=false) and idempotent (idempotentHint=true). The description adds valuable context: only passed fields are sent (partial update), Enterprise plan restriction, and error codes (403, 404) with meanings. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized into sections (purpose, when to use, when not to use, returns, examples, error handling). Every sentence adds value, with no redundancy or fluff. It is concise yet comprehensive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (update on workspace with multiple editable fields), the description covers all necessary aspects: purpose, usage boundaries, return type (confirmation string or error), and error handling. The existence of an output schema (not shown) further complements the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for each parameter (e.g., admin: 'Whether the member should have admin privileges'), so the description does not need to repeat them. However, the description adds the crucial behavioral detail that only passed fields are sent, which enhances understanding. The example also clarifies usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (update a workspace member's username, admin flag, or custom role) and specifies the resource (workspace member). It distinguishes itself from the sibling tool for editing guests, providing clear differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists when to use the tool (renaming, promoting/demoting admin, reassigning custom role) and when NOT to use it (altering guest permissions), with a direct reference to the alternative clickup_edit_guest_on_workspace. It also notes the Enterprise plan requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_bulk_tasks_time_in_statusARead-onlyIdempotent
Report time-in-status for 2 to 100 tasks in one call.
Calls GET /task/bulk_time_in_status/task_ids with each id passed as a
repeated task_ids query param. Requires the 'Total time in Status' ClickApp.
Set custom_task_ids=true (+ team_id) to address tasks by Custom Task ID.
When to Use:
Cycle-time analysis across a batch of tasks.
When NOT to Use:
For a single task,
clickup_get_task_time_in_statusis simpler — ClickUp's bulk endpoint requires at least 2 task ids.
Returns: Markdown grouped per task (current status + history), or raw JSON keyed by task id.
Examples:
params = {"task_ids": ["86a", "86b", "86c"]}
Error Handling: Fewer than 2 or more than 100 ids is rejected client-side; empty results mean the ClickApp is disabled.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds details beyond annotations: requires 'Total time in Status' ClickApp, explains error handling (client-side rejection, empty results meaning disabled app), and describes return format choices.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized with sections, no wasted words, every sentence provides essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage boundaries, prerequisites, error handling, return format, and example. Fully sufficient given the tool's complexity and existing annotations/output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Description adds context to schema parameters: explains API call structure (repeated query param), how to use custom_task_ids with team_id, and provides an example. Schema descriptions are already detailed, so additional value is present.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Report time-in-status for 2 to 100 tasks in one call.' and distinguishes from the sibling single-task tool by name and use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections, including the specific alternative tool name and the minimum count requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_chat_channelARead-onlyIdempotent
Fetch a single Chat channel's metadata by id.
When to Use:
To confirm a channel's type, visibility, topic, or bound location by id.
When NOT to Use:
To list many channels — use
clickup_get_chat_channels.To read its messages — use
clickup_get_chat_messages.
Returns: The channel's name, id, type, visibility, topic, description, and location.
Examples:
params = {"channel_id": "6-901300-8"}
Error Handling:
404 → channel not found. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds return fields and error handling specifics (404 returns Error string). Does not contradict annotations and provides useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections: purpose, when to use/not use, returns, example, error handling. Every sentence adds value. Front-loaded with main action. Length is appropriate with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given annotations and presence of output schema (context signals), description covers purpose, usage, error handling, and return fields. No gaps for a single-item read operation. Complete and informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already describes all parameters well (e.g., channel_id: 'Id of the Channel to fetch.'). Description adds an example usage for channel_id but no additional semantics for other parameters. Schema coverage is high, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Fetch a single Chat channel's metadata by id'. It specifies the exact resource (chat channel metadata) and action (fetch by id). Differentiates from siblings: lists clickup_get_chat_channels for listing and clickup_get_chat_messages for messages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections provide clear context. States to use for confirming channel type/visibility/etc., and not for listing or reading messages, with specific alternative tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_chat_channel_followersARead-onlyIdempotent
List the users following a Chat channel.
Followers receive notifications for the channel but are not necessarily members. Results are cursor-paginated.
When to Use:
To see who is subscribed to a channel's activity.
When NOT to Use:
To see who can access/post — use
clickup_get_chat_channel_members.
Returns:
A list of follower users (name, id, email). When more results exist the
response includes a next_cursor; pass it back as cursor to page forward.
Pagination:
Cursor-based. Loop with cursor=<next_cursor> until it is empty.
Examples:
params = {"channel_id": "6-901300-8"}
params = {"channel_id": "6-901300-8", "cursor": "eyJ...", "limit": 100}
Error Handling:
404 → channel not found. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, openWorldHint, destructiveHint=false. The description adds context: followers receive notifications but are not members, cursor-pagination, and error handling (404). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized with clear sections (summary, clarification, When to Use, When NOT to Use, Returns, Pagination, Examples, Error Handling). Front-loaded with purpose. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (list with pagination), the description covers purpose, alternative, pagination mechanics, examples, and error handling. Output schema exists, so the return summary is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must compensate. It adequately explains channel_id, cursor, and limit through examples and pagination section. However, workspace_id and response_format are not described. Partial coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List the users following a Chat channel' – a specific verb and resource. It further distinguishes from the sibling tool 'clickup_get_chat_channel_members' by noting followers are not necessarily members.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections. The 'When NOT to Use' directly names an alternative tool (clickup_get_chat_channel_members) for a different purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_chat_channel_membersARead-onlyIdempotent
List the users who are members of a Chat channel.
Members can access and post to the channel. Results are cursor-paginated.
When to Use:
To audit who has access to a private channel or DM.
When NOT to Use:
To see subscribers only — use
clickup_get_chat_channel_followers.
Returns:
A list of member users (name, id, email). When more results exist the
response includes a next_cursor; pass it back as cursor to page forward.
Pagination:
Cursor-based. Loop with cursor=<next_cursor> until it is empty.
Examples:
params = {"channel_id": "6-901300-8"}
params = {"channel_id": "6-901300-8", "cursor": "eyJ...", "limit": 100}
Error Handling:
404 → channel not found. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, non-destructive. The description adds rich behavioral context: cursor-based pagination, error handling (404), and response structure (list of users with next_cursor), beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized into sections: purpose, usage guidelines, return format, pagination, examples, error handling. Every sentence is informative without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all necessary aspects: purpose, when/not to use, parameter examples, pagination mechanism, error handling, and return format. With annotations and output schema present, the description is fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has detailed descriptions for all parameters (limit, cursor, channel_id, workspace_id, response_format). The description supplements with usage examples and pagination notes, adding value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists members of a chat channel with a specific verb ('list') and resource. It distinguishes from a sibling tool by explicitly noting when to use an alternative for subscribers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use ('audit who has access') and when-not-to-use with a named alternative ('use clickup_get_chat_channel_followers for subscribers'), offering clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_chat_channelsARead-onlyIdempotent
List the Chat channels in a Workspace, with descriptor filters.
Returns Channels, DMs, and Group DMs the authorized user can see. Narrow the
result with channel_types, is_follower, include_closed, or
with_message_since. Results are cursor-paginated.
When to Use:
To find a channel's id before reading it (
clickup_get_chat_channel), posting to it, or listing its members.To enumerate only DMs (
channel_types=["DM","GROUP_DM"]) or only followed channels (is_follower=true).
When NOT to Use:
To read messages in a channel — that lives in
clickup_get_chat_messages(chat_messages module).
Returns:
A list of channels (name, id, type, visibility). When more results exist the
response includes a next_cursor; pass it back as cursor to page forward.
Pagination:
Cursor-based and asymmetric. Loop: call once, read next_cursor from the
output, then call again with cursor=<next_cursor> until it is empty.
Examples:
params = {"channel_types": ["CHANNEL"], "limit": 100}
params = {"is_follower": true, "cursor": "eyJ..."}
Error Handling:
401 → bad token; 404 → unknown Workspace id. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds significant behavioral context: cursor-based asymmetric pagination with loop instructions, error handling (401/404), and that results include only channels the user can see. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections (Returns, When to Use, When NOT to Use, Pagination, Examples, Error Handling). It is front-loaded with the main purpose. However, it is slightly verbose; some details could be more compact, but overall each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple filters, pagination, error handling), the description covers all essential aspects: return format, parameters, usage guidance, pagination loop, and error codes. It provides enough context for an agent to use the tool correctly without needing external resources.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the key parameters (channel_types, is_follower, include_closed, with_message_since) and how they narrow results. It provides concrete examples (e.g., channel_types=["CHANNEL"]). This adds meaning beyond the input schema's descriptions, which are already detailed but benefit from the narrative context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List the Chat channels in a Workspace, with descriptor filters.' It distinguishes from sibling tools like clickup_get_chat_channel (single channel) and clickup_get_chat_messages (messages), making the purpose and scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections provide clear guidance. It tells when to use this tool (find channel id, enumerate DMs, filter followed channels) and when not to (reading messages, which belongs to clickup_get_chat_messages).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_chat_message_reactionsARead-onlyIdempotent
List the emoji reactions on a Chat message, cursor-paginated.
When to Use:
To see who reacted to a message and with which emoji.
When NOT to Use:
To add or remove a reaction — use
clickup_add_chat_reaction/clickup_delete_chat_reaction.
Returns:
Each reaction's emoji name and the user who added it, plus a next_cursor
when more exist.
Pagination:
Cursor-based (see clickup_get_chat_messages).
Examples:
params = {"message_id": "abc123"}
Error Handling:
404 → unknown message id. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds behavioral details: cursor-based pagination, return of next_cursor, and error handling for 404. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (When to Use, When NOT to Use, Returns, Pagination, Examples, Error Handling). Every sentence adds value, no fluff, and it is concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers return values (reaction emoji name, user, next_cursor), pagination, examples, and error handling. It references another tool for pagination details, which is sufficient for a read-only list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes each parameter well (e.g., limit range, cursor usage). The description adds minimal extra: it mentions cursor pagination and gives an example, but does not significantly augment the schema's parameter descriptions. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists emoji reactions on a chat message, with a specific verb 'List' and resource. It distinguishes from sibling tools like clickup_add_chat_reaction and clickup_delete_chat_reaction by explicitly stating when not to use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'When to Use' and 'When NOT to Use' sections, referencing sibling tools for adding/removing reactions. This provides clear guidance on when to select this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_chat_message_repliesARead-onlyIdempotent
List the replies threaded under a Chat message, cursor-paginated.
When to Use:
To read a thread hanging off a specific message.
When NOT to Use:
To list top-level channel messages — use
clickup_get_chat_messages.
Returns:
Each reply's author, id, timestamp, and content snippet, plus a next_cursor
when more replies exist.
Pagination:
Cursor-based (see clickup_get_chat_messages).
Examples:
params = {"message_id": "abc123"}
params = {"message_id": "abc123", "cursor": "eyJ..."}
Error Handling:
404 → unknown message id. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds cursor-based pagination details, error handling (404), and response structure (author, id, timestamp, content snippet, next_cursor), going beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (When to Use, When NOT to Use, Returns, Pagination, Examples, Error Handling). It is concise but includes necessary context without extraneous fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple parameters, pagination) and the presence of an output schema, the description covers key aspects: purpose, usage, pagination, error handling, and basic return fields. However, it omits details about the limit parameter and response format options, which are left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not describe each parameter individually; only message_id and cursor are mentioned in examples. With 0% schema description coverage from the description, it fails to add meaning beyond the existing input schema descriptions for less obvious parameters like workspace_id, content_format, and response_format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists replies threaded under a chat message with cursor pagination. It explicitly distinguishes from siblings by noting that for top-level messages, use clickup_get_chat_messages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to Use' and 'When NOT to Use' sections provide explicit guidance. It says when to read a thread and when to use an alternative tool for top-level messages.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_chat_messagesARead-onlyIdempotent
List the messages in a Chat channel (newest first), cursor-paginated.
When to Use:
To read a channel's conversation, or to grab a message id before replying, reacting, updating, or deleting.
When NOT to Use:
To list channels themselves — use
clickup_get_chat_channels(chat_channels).To read one message's replies — use
clickup_get_chat_message_replies.
Returns:
Each message's author, id, timestamp, reply count, and a content snippet. When
more results exist the output includes a next_cursor to page forward.
Pagination:
Cursor-based. Call once, read next_cursor, then call again with
cursor=<next_cursor> until it is empty.
Examples:
params = {"channel_id": "6-901..."}
params = {"channel_id": "6-901...", "cursor": "eyJ...", "limit": 100}
Error Handling:
404 → unknown channel id; 401 → bad token. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable behavioral details: newest-first ordering, cursor-based pagination, return format (author, id, timestamp, reply count, content snippet), next_cursor handling, error codes (404, 401), and error output format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (main action, When to Use/Not Use, Returns, Pagination, Examples, Error Handling). It is front-loaded with the core purpose, and every sentence adds unique value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (so return values are documented elsewhere), the description provides comprehensive coverage: usage context, exclusions, pagination mechanics, concrete examples, and error handling, making it complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all parameters (0% gap), baseline 3. The description adds practical context through examples and the pagination section, explaining how to use cursor and limit parameters, which elevates practical understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List the messages in a Chat channel (newest first), cursor-paginated,' which is a specific verb+resource. It explicitly differentiates from siblings like clickup_get_chat_channels and clickup_get_chat_message_replies in the 'When NOT to Use' section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes both 'When to Use' and 'When NOT to Use' sections with specific alternative sibling tools, providing clear guidance on when to invoke this tool versus others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_chat_message_tagged_usersARead-onlyIdempotent
List the users @-tagged (mentioned) in a Chat message, cursor-paginated.
When to Use:
To find who was mentioned in a message (e.g. to follow up or notify).
When NOT to Use:
To list a channel's members — use
clickup_get_chat_channel_members(chat_channels).
Returns:
Each tagged user's name and id, plus a next_cursor when more exist.
Pagination:
Cursor-based (see clickup_get_chat_messages).
Examples:
params = {"message_id": "abc123"}
Error Handling:
404 → unknown message id. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by detailing the return format (name, id, next_cursor), error handling (404 for unknown message_id), and pagination behavior. No contradictions with annotations exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear headings, concise sentences, and no extraneous information. It efficiently communicates purpose, usage, return values, pagination, and error handling in a compact format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and comprehensive annotations, the description covers all necessary aspects: return values, pagination, error handling, and usage context. It is fully adequate for an AI agent to understand and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not elaborate on individual parameters beyond an example, but the input schema already contains complete descriptions for all parameters. According to the rubric, high schema coverage (though signal says 0%, schema actually has descriptions) yields a baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'users @-tagged in a Chat message', along with the pagination method. It effectively distinguishes itself from the sibling tool clickup_get_chat_channel_members, which lists channel members instead of tagged users.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'When to Use' and 'When NOT to Use' sections, providing clear guidance on appropriate usage and explicitly naming an alternative tool for listing channel members.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_chat_subtypesARead-onlyIdempotent
List a Workspace's post subtype IDs (Announcement, Discussion, Idea, Update).
Subtype IDs are unique per Workspace and are required when sending a rich
'post' message: pass the chosen id via post_data={"subtype": {"id": "..."}}
on clickup_send_chat_message (or clickup_send_chat_reply) with
message_type='post'.
When to Use:
Before sending a post-type chat message, to resolve the subtype id to use.
When NOT to Use:
For plain messages — post subtypes only apply to message_type='post'.
Returns: Each subtype's name and id for the requested comment family.
Examples:
params = {"comment_type": "post"}
Error Handling:
404 → unknown Workspace. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey read-only, idempotent, and non-destructive behavior. The description adds workspace-specific uniqueness of subtype IDs, error handling for unknown workspaces (404), and error output format ('Error ...' string), providing useful context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with clear sections: purpose, usage, when to use/not, returns, examples, error handling. Each sentence adds value; no fluff. Front-loaded with main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with good annotations and output schema, the description is complete: covers all necessary aspects (purpose, usage, examples, error handling, integration with other tools). No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full descriptions for all parameters (comment_type, workspace_id, response_format), so the description does not need to add much. It mentions usage of subtype IDs in other tools but does not enhance parameter meaning beyond schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states listing workspace post subtype IDs with specific examples (Announcement, Discussion, Idea, Update) and distinguishes from sibling tools by explaining its role in preparing subtype IDs for post messages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly specifies when to use (before sending post-type chat messages) and when not to use (for plain messages), with direct references to related tools like clickup_send_chat_message.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_chat_view_commentsARead-onlyIdempotent
List comments in a Chat view, newest first.
Calls GET /view/{view_id}/comment.
When to Use:
To read the message history of a legacy Chat-type view.
When NOT to Use:
To read messages in a modern Chat channel — use
clickup_get_chat_channel_messages(tools/chat_messages.py) instead.
Returns: Markdown (default) or JSON list of comments with id, author, date, and (truncated) text.
Pagination:
Cursor-based (start/start_id), identical pattern to
clickup_get_task_comments — see that tool's docstring for the full
explanation. Omit both for the most recent 25 comments.
Examples: params = {"view_id": "105"}
Error Handling: 404 means the view id is wrong or is not a Chat-type view.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses return format (markdown/JSON), pagination details (cursor-based, same as clickup_get_task_comments), and error handling (404 for wrong/non-Chat view). No contradiction with annotations (readOnlyHint, etc.).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (When to Use, When NOT, Returns, Pagination, Examples, Error Handling). Front-loaded with the main purpose. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Comprehensive for a tool with only one required parameter and an output schema. Covers pagination, error cases, and provides an example. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% but the description provides detailed pagination explanation and an example. While it doesn't reiterate parameter names, it adds value beyond the schema for understanding usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists comments in a Chat view, newest first, and distinguishes it from sibling tools like clickup_get_chat_channel_messages for modern channels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use (legacy Chat views) and when not to use (modern Chat channels, directing to clickup_get_chat_channel_messages), giving clear alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_custom_rolesARead-onlyIdempotent
List the Custom Roles configured for a Workspace.
Calls GET /team/{team_id}/customroles (team_id = Workspace id; this
endpoint has no relation to User Groups/group_id). Custom Roles let a
Workspace define named permission tiers layered on top of ClickUp's base
roles (owner/admin/member/guest); each role's inherited_role shows
which base role it extends.
Note: Custom Roles are an Enterprise plan feature — this endpoint returns 403 on other plans.
When to Use:
To look up which Custom Role(s) exist, and who holds them, before assigning one to a user elsewhere.
When NOT to Use:
To list User Groups (an unrelated, non-permission concept), use
clickup_get_user_groups.
Returns:
A markdown (or JSON) list of roles with id, name, the base role they
extend, and (when include_members=True) member count.
Examples: params = {"team_id": "123456"} params = {"team_id": "123456", "include_members": false}
Error Handling: 403 on non-Enterprise plans; 404 if team_id is invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds details beyond annotations: Enterprise plan requirement, 403 error, explanation of inherited_role, response content, and error handling. Annotations already indicate safe read/ idempotent nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with headings and examples, but slightly lengthy. Front-loaded with main purpose. No redundant sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity, presence of output schema, and good annotations, the description provides sufficient context including error handling and usage examples.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage signal, description thoroughly explains team_id (not group_id), include_members, and response_format, adding clarity beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'List the Custom Roles configured for a Workspace', specifies the API endpoint, and distinguishes from sibling tool clickup_get_user_groups for User Groups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes explicit 'When to Use' and 'When NOT to Use' sections, naming the alternative tool and noting Enterprise plan restriction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_custom_task_typesARead-onlyIdempotent
List the Workspace's custom task types (a.k.a. custom items).
Calls GET /team/{team_id}/custom_item. Custom task types are the "task /
milestone / bug / …" varieties a Workspace defines; their integer id is the
custom_item_id used when creating tasks and is what a task-type-scoped
Custom Field's applied_objects[].object_id points at. The default "Task"
type is id 0 and is not returned by this endpoint.
When to Use:
To resolve a custom task type name to its
idbefore creating a typed task.To interpret
applied_objectsfrom the get-fields tools (include_applied_objects=true).
When NOT to Use:
To read Custom Fields — use the get-fields tools above.
Returns:
A markdown list of custom task types (id, name, plural, description) or, with
response_format="json", the raw custom_item objects.
Examples:
params = {"team_id": "9007200144"}
params = {"team_id": "9007200144", "response_format": "json"}
Error Handling: 404 means the Workspace id is wrong; 401/403 point to token or access issues.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, openWorldHint, idempotentHint, destructiveHint. The description adds that the default 'Task' type (id 0) is not returned, and explains what the response contains. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized into sections with headers, bullet points, and code examples. It is informative without being verbose, each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description explains return formats (markdown list or raw JSON) and error codes. It covers all necessary context for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema description coverage is 0%, the description fully explains the purpose and expected values of both parameters (team_id and response_format), including defaults and examples. It compensates entirely for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists custom task types (custom items) for a Workspace, names the HTTP endpoint, and distinguishes from other tools by focusing on custom items. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides 'When to Use' and 'When NOT to Use' sections, gives concrete examples, and includes error handling guidance. This makes it easy for an agent to decide when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_docARead-onlyIdempotent
Fetch a single Doc's metadata (name, parent, timestamps).
When to Use:
To confirm a Doc's parent location or creation details by id.
When NOT to Use:
To read the Doc's text — use
clickup_get_doc_pages.To list its page tree — use
clickup_get_doc_page_listing.
Returns: The Doc's name, id, parent, workspace, creator, and created/updated times.
Examples:
params = {"doc_id": "8cbq..."}
Error Handling:
404 → Doc not found. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive. Description adds return fields and error handling format, but does not disclose additional behavioral traits like authentication or rate limits. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections, front-loaded main purpose, no redundant sentences. Efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all essential aspects: purpose, usage constraints, return value description, error handling, and example. Given annotations and schema, the description is complete for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already provides descriptions for all parameters. Description only adds an example for doc_id but does not elaborate on workspace_id or response_format. No added value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it fetches Doc metadata only, distinguishing from sibling tools that read text or list pages. Verb 'Fetch' with specific resource and scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists when to use (confirm parent location/creation details) and when not to use (with alternative tool names given). Also provides error handling guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_doc_page_listingARead-onlyIdempotent
List a Doc's page tree (titles and ids only, nested — no content).
A lightweight outline of the Doc: the hierarchy of pages and subpages with their ids, without fetching any body text.
When to Use:
To see a Doc's structure and grab a specific page id cheaply.
When NOT to Use:
To read page content — use
clickup_get_doc_pagesorclickup_get_page.
Returns: An indented tree of page names and ids.
Examples:
params = {"doc_id": "8cbq...", "max_page_depth": 2}
Error Handling:
404 → Doc not found. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds context: lightweight outline, returns tree of names/ids, error handling (404). Does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (purpose, when to use, returns, examples, errors). Front-loaded with essential info, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, output schema exists, and annotations cover safety, the description adequately explains return values (tree of names/ids) and error behavior. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must compensate for parameter details. It only provides a single example showing doc_id and max_page_depth, but does not explain workspace_id, response_format, or parameter semantics beyond what the schema already provides. The schema itself has good descriptions, but the description fails to add value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List a Doc's page tree (titles and ids only, nested — no content)', specifying the verb (list), resource (Doc page tree), and scope. It distinguishes from siblings like clickup_get_doc_pages (which fetches content) and clickup_get_page (single page).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to Use' (see structure, grab page IDs cheaply) and 'When NOT to Use' (read content, with alternatives named). This directly guides tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_doc_pagesARead-onlyIdempotent
Fetch a Doc's pages with content (the full readable body of the Doc).
When to Use:
To read everything a Doc contains in one call.
When NOT to Use:
To read just one page — use
clickup_get_page.To see structure without content — use
clickup_get_doc_page_listing.
Returns: Each page's title, subtitle, and content (markdown by default). Very large Docs are truncated with a note.
Examples:
params = {"doc_id": "8cbq...", "content_format": "text/plain"}
Error Handling:
404 → Doc not found. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, and destructiveHint, so the bar for additional disclosure is lower. The description adds valuable context: it returns title, subtitle, content (markdown default), mentions truncation for large Docs, and covers error handling (404). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured with distinct sections (purpose, usage guidelines, returns, example, error handling). Every sentence earns its place, and the critical information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists and the input schema is rich, the description covers key aspects: the core functionality, behavior for large Docs, error handling, and an example. It lacks detail on optional parameters like workspace_id and max_page_depth, but those are well-documented in the schema. Overall, it is sufficient for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides thorough descriptions for all parameters, so the description adds limited extra value. It includes an example with doc_id and content_format, which is helpful but not essential. The schema coverage being 100% effective (despite signal saying 0% in description text) sets a baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Fetch), the resource (Doc's pages with content), and explicitly distinguishes from siblings like clickup_get_page and clickup_get_doc_page_listing, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'When to Use' and 'When NOT to Use' sections with specific alternative tools, giving the agent clear decision criteria for selecting this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_entity_attachmentsARead-onlyIdempotent
List the attachments of a task or File-type Custom Field (v3).
Calls GET /v3/workspaces/{workspace_id}/{entity_type}/{entity_id}/attachments
and returns the page of attachments plus the cursor for the next page.
When to Use:
To enumerate the files attached to a task (entity_type='attachments') or a File Custom Field (entity_type='custom_fields').
When NOT to Use:
To upload a file — use
clickup_create_entity_attachmentorclickup_create_task_attachment.
Returns:
Each attachment's title, id, size, and URL. When more results exist, the
response includes the cursor to pass back as cursor for the next page.
Pagination:
Cursor-based and asymmetric — the request takes cursor, the response
returns next_cursor. Loop: pass the returned next_cursor back as cursor
until it is absent.
Examples:
task:
params = {"workspace_id": "123", "entity_type": "attachments", "entity_id": "abc"}custom field:
params = {"workspace_id": "123", "entity_type": "custom_fields", "entity_id": "fld-1", "limit": 20}
Error Handling:
A 404 means the entity_id was not found — or the v3 attachments surface is
not available on this Workspace at all (verified live on a Business-plan
workspace: even reads 404). If both tools here 404 on ids that definitely
exist, fall back to clickup_create_task_attachment (v2) for task files.
A 400 usually means entity_type and entity_id do not match (e.g. a Custom
Field ID with entity_type='attachments').
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly, idempotent), the description details cursor-based pagination, loop pattern, and specific error handling (404 meanings, 400 mismatches), providing rich behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (purpose, when to use/not use, pagination, examples, error handling). Slightly verbose but efficient for the complexity; could be tightened but still strong.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, zero schema coverage, and presence of output schema, the description covers return values, pagination, errors, and usage context comprehensively. No gaps identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the input schema has 0% description coverage, the description elaborates on each parameter (entity_type options, cursor, limit, etc.) with examples and clarifies entity_id meaning, fully compensating for schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists attachments of a task or File-type Custom Field. It specifies the API endpoint and distinguishes from sibling upload tools, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes explicit 'When to Use' and 'When NOT to Use' sections, directing to use for enumerating attachments and advising against using for uploads, with alternatives provided. Also covers fallback on 404 errors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_filtered_team_tasksARead-onlyIdempotent
Search tasks across the ENTIRE Workspace with rich filters.
Calls GET /team/{team_id}/task. Unlike clickup_get_tasks (one List), this
spans every Space/Folder/List the token can see and narrows down with
space_ids, project_ids (Folders), list_ids, statuses, assignees, tags,
custom task types, and date ranges. team_id is the Workspace id and falls
back to CLICKUP_TEAM_ID.
When to Use:
"Find all my open tasks", "tasks due this week across projects", or any query where you do NOT know (or do not want to be limited to) one List.
When NOT to Use:
You already know the single List —
clickup_get_tasksis cheaper and its filters are List-scoped.You have a task id — use
clickup_get_task.
Returns: A paginated markdown summary (one bullet per task) or JSON; first 50 tasks of the page rendered.
Pagination:
Page-based (page, 0-indexed, 100 per page). Request the next page number
when "More available" is reported.
Examples:
My open tasks:
params = {"assignees": ["123"], "include_closed": false}Due-window in two Spaces:
params = {"space_ids": ["10", "11"], "due_date_lt": 1735689600000, "order_by": "due_date"}
Error Handling:
A missing team_id (and no CLICKUP_TEAM_ID) returns a clear error; 404 means
the Workspace id is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond the annotations, including pagination details (page-based, 100 per page), return format (markdown summary or JSON), first 50 tasks rendered, error handling for missing team_id and 404, and fallback to CLICKUP_TEAM_ID. Annotations already declare readOnlyHint, idempotentHint, and non-destructive, which are consistent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections and front-loaded with the main purpose. While it is relatively long (several paragraphs), each sentence earns its place by contributing essential information about usage, filters, pagination, or error handling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (rich filters spanning workspace), the description covers all key aspects: purpose, when to use/avoid, filter parameters via examples, pagination, error handling, and return format. The presence of an output schema is noted but the description still explains the return format sufficiently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides detailed descriptions for most parameters, so the description's additional value is in grouping filters (e.g., space_ids, project_ids, list_ids) and providing usage examples that demonstrate combinations like date ranges with ordering. The examples further clarify parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches tasks across the entire workspace with rich filters, and explicitly contrasts with sibling tools like clickup_get_tasks (limited to one list) and clickup_get_task (single task by ID). The verb 'search' and resource 'workspace tasks' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'When to Use' and 'When NOT to Use' sections, providing clear context for when to choose this tool over alternatives. It advises against using it when a single list is known (recommending clickup_get_tasks) or when a task ID is available (recommending clickup_get_task), and notes that clickup_get_tasks is cheaper.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_folderARead-onlyIdempotent
Fetch one Folder, including its Lists and status workflow.
Calls GET /folder/{folder_id}.
When to Use:
To inspect a specific Folder's statuses, Lists, and
override_statusesflag before deciding whether to update it.
When NOT to Use:
To browse every Folder in a Space — use
clickup_get_folders.
Returns:
A markdown detail block or JSON object, or an Error ... string.
Examples: params = {"folder_id": "456", "response_format": "markdown"}
Error Handling:
404 means folder_id doesn't exist or isn't accessible.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds the HTTP method (GET), return types (markdown/JSON/error), error handling for 404, and the specific API endpoint. This adds behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with clear sections: summary, API call, usage guidelines, returns, examples, error handling. Every sentence adds value, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only single-item fetch tool with annotations and output schema, the description covers purpose, when to use, return format, error handling, and example. It is complete and leaves no major gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already has descriptions for both parameters (folder_id: 'The Folder id to fetch', response_format: 'Output format'). The tool description provides an example usage and mentions response format but does not add significant new semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Fetch one Folder, including its Lists and status workflow' which is a specific verb+resource. It also distinguishes from sibling tool 'clickup_get_folders' by the scope (single vs multiple).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explicitly provides 'When to Use' (inspect a specific Folder's details before updating) and 'When NOT to Use' (browse all folders, use clickup_get_folders instead), offering clear guidance on selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_folder_custom_fieldsARead-onlyIdempotent
List the Custom Fields available at a Folder scope.
Calls GET /folder/{folder_id}/field, returning fields defined on the Folder
plus those inherited from the parent Space and Workspace.
When to Use:
To audit which fields a Folder exposes to its Lists and tasks.
When NOT to Use:
To find a field usable on a specific task — use
clickup_get_list_custom_fieldsfor the narrowest, task-applicable set.
Returns:
A markdown list of fields (or raw JSON with response_format="json").
Examples:
params = {"folder_id": "457"}
Error Handling: 404 means the Folder id is wrong; 401/403 point to token or access issues.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey read-only, idempotent, non-destructive behavior. Description adds the API endpoint, inheritance behavior, output format options, and specific error responses (404, 401/403). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise and well-structured: purpose, details, usage guidelines, return format, example, error handling. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of annotations and an output schema, the description provides sufficient behavioral context, usage differentiation, and error handling. The tool is fully understandable for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Description includes an example and mentions the response_format usage, but input schema already describes all parameters with detailed descriptions. The additional value is marginal; schema covers semantics well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it lists Custom Fields at Folder scope, includes inherited fields, and explicitly differentiates from sibling tool clickup_get_list_custom_fields. The verb 'List' and resource 'Folder Custom Fields' with scope details provide high specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to Use' and 'When NOT to Use' sections, advising to use an alternative for task-specific fields. Also includes error handling guidance for common HTTP status codes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_folderless_listsARead-onlyIdempotent
List the Lists that live directly inside a Space (no Folder).
When to Use:
Enumerating Lists in a Space that is not organized into Folders.
When NOT to Use:
The Space uses Folders — use
clickup_get_listsper Folder instead.You already have the list_id and need full detail — use
clickup_get_list.
Returns:
Markdown (default) or JSON per response_format.
Pagination:
ClickUp returns every folderless List in the Space in one response; this
tool then windows the result with limit/offset, reporting has_more
and the next offset when applicable.
Examples: params = {"space_id": "67890"} params = {"space_id": "67890", "archived": True}
Error Handling: 404 means space_id does not exist or is not accessible.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations: explains pagination windowing behavior (has_more, next offset), response format (markdown/json), and error handling (404). Annotations already declare readOnlyHint, idempotentHint, etc., so the description enriches the behavioral model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (When to Use, When NOT to Use, Returns, Pagination, Examples, Error Handling). It is front-loaded with the core purpose and every sentence adds value. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (pagination, format selection, sibling tools, error handling) and the presence of an output schema, the description covers all necessary aspects: usage context, behavioral details, parameter semantics, and troubleshooting. It is fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has descriptions for each parameter, so the baseline is 3. The tool description adds extra context in the 'Pagination' section and examples, clarifying how limit/offset and archived work. It provides more meaning than the schema alone, justifying a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear verb+resource: 'List the Lists that live directly inside a Space (no Folder).' It explicitly distinguishes from siblings in the 'When NOT to Use' section, naming clickup_get_lists per folder and clickup_get_list as alternatives. This meets the highest standard.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear when-to-use (enumerating folderless lists) and when-not-to-use scenarios (space uses folders, already have list_id), with specific alternative tool names. This is explicit and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_foldersARead-onlyIdempotent
List the Folders in a Space.
Calls GET /space/{space_id}/folder. Returns each Folder's task/list
counts and its override_statuses flag; use clickup_get_folder for
the full status list and nested Lists of one Folder.
When to Use:
To discover what Folders exist in a Space before creating or updating one.
To check which Folders already override the Space's statuses.
When NOT to Use:
To fetch one Folder's full detail — use
clickup_get_folder.To list Lists that live directly in the Space (no Folder) — use the folderless-lists tool in
tools/lists.pyonce available.
Returns:
A markdown or JSON list of Folders, or an Error ... string.
Pagination:
ClickUp returns the full Folder array in one response; this tool slices
it client-side via limit/offset for context-window safety.
Examples: params = {"space_id": "90130912", "archived": False, "limit": 20, "offset": 0}
Error Handling:
404 means space_id doesn't exist or isn't accessible.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds value by explaining client-side pagination (limit/offset), return content (folder list with counts), and error handling for 404. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections for overview, when to use/not use, returns, pagination, examples, and error handling. Every sentence is informative, no fluff, and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of output schema and comprehensive annotations, the description provides thorough guidance: usage context, relationship to sibling tools, pagination behavior, example parameters, and error handling. It is fully complete for an agent to understand and use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already contains descriptions for all parameters (space_id, archived, limit, offset, response_format), providing sufficient context. The description does not add additional parameter-level meaning, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List the Folders in a Space' with the specific API endpoint, and distinguishes from sibling tool `clickup_get_folder` by noting that this tool returns each Folder's task/list counts and `override_statuses` flag.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections provide clear guidance: use for discovering folders before creating/updating, or checking status overrides; avoid for full folder details (use `clickup_get_folder`) or for folderless lists (use a yet-unavailable tool).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_folder_templatesARead-onlyIdempotent
List the Folder templates available in a Workspace.
Calls GET /team/{team_id}/folder_template. Template ids are
t--prefixed and feed directly into clickup_create_folder_from_template.
When to Use:
To discover which Folder template id to pass to
clickup_create_folder_from_template.
When NOT to Use:
To list actual Folders in a Space — use
clickup_get_folders.
Returns:
A markdown or JSON list of templates, or an Error ... string.
Pagination:
ClickUp returns the full template array in one response; this tool
slices it client-side via limit/offset for context-window safety.
Examples: params = {"team_id": "90130912", "limit": 20, "offset": 0}
Error Handling:
404 means team_id doesn't exist or isn't accessible.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and idempotent hints. Description adds that the tool returns a markdown/JSON list or error string, explains client-side pagination with limit/offset, and covers error handling for 404. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise and well-structured with clear sections for purpose, usage, returns, pagination, examples, and error handling. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description adequately covers the return type and possible error. Pagination and error handling are explained, making it complete for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has detailed descriptions for all parameters (limit, offset, team_id, response_format) covering their meaning and default values. The description adds no significant extra meaning beyond what the schema already provides, so baseline at 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'List the Folder templates available in a Workspace' with specific verb and resource. Distinguishes from sibling tool clickup_get_folders by explicitly stating when not to use. Also links to clickup_create_folder_from_template.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections provide clear guidance on appropriate context and alternatives, including naming the sibling tool clickup_get_folders for actual folder listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_folder_viewsARead-onlyIdempotent
List the task and page views available for a Folder.
When to Use:
Discovering existing Folder-level views (and their ids) before calling
clickup_get_view,clickup_get_view_tasks, orclickup_update_view.
When NOT to Use:
Everything-, Space-, or List-level views — use
clickup_get_team_views/clickup_get_space_views/clickup_get_list_views.
Returns:
Markdown (default) or JSON listing of views: id, name, type, parent, plus
any built-in required_views (e.g. the default List/Board view).
Examples: params = {"folder_id": "789"}
Error Handling: 404 means the Folder id is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds value by specifying the return format (Markdown or JSON), listing returned fields (id, name, type, parent, required_views), and noting error handling (404 for wrong folder_id). This additional context is helpful beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It leads with the purpose, then has clearly labeled sections (When to Use, When NOT to Use, Returns, Examples, Error Handling). Every sentence serves a purpose, and there is no redundancy or unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description appropriately does not elaborate on return values beyond what is needed. It covers the return format, key fields, error cases, and provides a concrete example. For a read-only list tool with siblings, it provides complete context for an agent to decide when and how to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for both parameters (folder_id: 'Folder id to list views for.'; response_format: 'Output format.'). The tool description adds minimal additional meaning; it only gives an example using folder_id. Given that schema coverage is 0% (meaning no parameter descriptions in the tool description text itself), the description does not compensate significantly, but the schema fills the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List the task and page views available for a Folder.' This provides a specific verb ('list') and resource ('views available for a Folder'). It also distinguishes from sibling tools by specifying when not to use it (for other view levels) and pointing to alternative tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly includes 'When to Use' and 'When NOT to Use' sections. It explains that this tool is for discovering existing Folder-level views before calling other tools, and it excludes Everything-, Space-, or List-level views with references to specific sibling tools, providing clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_goalARead-onlyIdempotent
Get a single Goal's full detail, including its Key Results.
When to Use:
Inspecting one Goal's progress and Key Results before editing it.
When NOT to Use:
Listing many Goals at once — use
clickup_get_goals.
Returns: Markdown (default) or JSON with the Goal's fields and every Key Result.
Examples: params = {"goal_id": "e53a033c-1146-4b58-b498-7ec39b5661c2"}
Error Handling: 404 means the goal_id does not exist or was already deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the tool's safety profile is clear. Description adds value by specifying the default return format (Markdown) and error handling (404 for missing/deleted goal), which are behavioral details beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Descriptions is well-structured with clear sections (When to Use, When NOT to Use, Returns, Examples, Error Handling). Every sentence adds value, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown), the description does not need to detail return fields. It mentions the Goal's fields and Key Results, which is sufficient. Error handling is covered, and annotations provide safety context. The tool is simple with only two parameters, so the description is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema provides descriptions for both parameters (goal_id as UUID, response_format as enum), but schema description coverage is 0%. Description adds an example with goal_id and mentions the return format, giving practical context not in the schema. However, it does not explicitly describe the response_format parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it gets a single Goal's full detail including Key Results, with a specific verb and resource. It distinguishes itself from the sibling tool `clickup_get_goals` which is for listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly includes 'When to Use' and 'When NOT to Use' sections, providing clear guidance to use this tool for inspecting one goal's progress before editing, and to use `clickup_get_goals` for listing many goals.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_goalsARead-onlyIdempotent
List the Goals in a Workspace, including any Goal Folders.
When to Use:
Browsing all OKRs for a Workspace, or checking which are still open.
When NOT to Use:
Fetching one Goal's full detail (including Key Results) — use
clickup_get_goal.
Returns: Markdown (default) or JSON listing every Goal, including Goals nested inside Goal Folders. Each Goal's Key Results are summarized inline.
Pagination:
This endpoint does not page server-side; display is capped at
MAX_DISPLAY_GOALS (50) with a truncation note if exceeded. Use
include_completed=false (default) to shrink the result set.
Examples: params = {"include_completed": True, "response_format": "json"}
Error Handling: 404 usually means the team_id is wrong; 401 means the token is missing/invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=true, etc.), the description discloses pagination details (no server-side paging, cap at 50, truncation note), return format options, inline key results summary, and error handling (404 for bad team_id, 401 for invalid token). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, when to use/not use, returns, pagination, example, error handling). Every sentence adds value, and it is front-loaded with the most important information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the presence of an output schema, the description covers purpose, usage contrast, pagination behavior, error handling, and parameter details. It is sufficiently complete for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite schema description coverage being 0%, the description fully explains all three parameters: team_id (defaults to CLICKUP_TEAM_ID), response_format (markdown/json), and include_completed (default false). It also provides a usage example, adding significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List the Goals in a Workspace, including any Goal Folders.' It uses a specific verb ('list') and resource ('Goals'), and explicitly distinguishes from the sibling tool clickup_get_goal, which fetches a single goal's detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'When to Use' and 'When NOT to Use' sections, including contrasting with clickup_get_goal. It also advises using include_completed=false to reduce result set size, giving clear guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_guestARead-onlyIdempotent
Look up a guest's permission flags and what has been shared with them.
Note: Enterprise plan only — returns 403 on other plans.
When to Use:
Auditing what a guest can currently see/do before editing or removing them.
When NOT to Use:
Looking up full Workspace members — use
clickup_get_userinstead.
Returns:
Markdown summary (id, username, email, permission flags, and a count of
shared tasks/lists/folders) or the raw JSON payload when
response_format="json".
Examples: params = {"team_id": "123", "guest_id": "456"}
Error Handling: 403 means the Workspace is not on the Enterprise plan. 404 means the guest id does not exist on this Workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable context: Enterprise plan only (403 on other plans), return format options (markdown or json), error handling for 403 and 404. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: purpose, note, when to use/not use, return format, example, error handling. It is concise yet comprehensive, with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, usage guidelines, return format, example, and error handling. Given the annotations and output schema presence, this is complete. The tool's complexity is low, and all necessary information is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for `team_id`, `guest_id`, and `response_format`. The description adds example usage (`params = {"team_id": "123", "guest_id": "456"}`) and error-handling context that clarifies parameter semantics. The parameter count in context signals (1) is misleading, but the description compensates with clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Look up a guest's permission flags and what has been shared with them.' It specifies the verb (look up) and resource (guest), and distinguishes itself from the sibling tool `clickup_get_user` which is for full Workspace members.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly includes 'When to Use' and 'When NOT to Use' sections, naming the alternative tool `clickup_get_user` for workspace members. It also notes the Enterprise plan restriction. This provides clear guidance on when to select this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_listARead-onlyIdempotent
Fetch full detail for a single List by id.
When to Use:
You already know list_id and need its description, dates, color, priority, assignee, and parent Folder/Space.
When NOT to Use:
Enumerating many Lists at once — use
clickup_get_listsorclickup_get_folderless_lists.
Returns:
Markdown (default) or JSON per response_format.
Examples: params = {"list_id": "901300123456"} params = {"list_id": "901300123456", "response_format": "json"}
Error Handling: 404 means list_id does not exist or is not accessible.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive. Description adds return details (description, dates, color, priority, assignee, parent Folder/Space) and error handling (404 for missing/not accessible). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise sections with clear headings (When to Use, When Not to Use, Returns, Examples, Error Handling). Front-loaded main purpose. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Fully covers what the tool does, when to use, what it returns, example usage, and error cases. No gaps given the tool's simplicity and presence of output schema and annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has descriptions for both parameters. The description provides example usage with list_id and response_format, adding practical context beyond schema. Error handling also informs about invalid list_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Fetch full detail for a single List by id', using specific verb and resource. It distinguishes from sibling tools like clickup_get_lists by specifying when to use this tool vs enumerating many lists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides 'When to Use' and 'When NOT to Use' sections, naming alternative tools (clickup_get_lists, clickup_get_folderless_lists) for different scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_list_commentsARead-onlyIdempotent
List comments on a List's info panel, newest first.
Calls GET /list/{list_id}/comment.
When to Use:
To read the List-level discussion/status history.
When NOT to Use:
To read comments on a specific task — use
clickup_get_task_comments.
Returns: Markdown (default) or JSON list of comments with id, author, date, resolved state, assignee, and (truncated) text.
Pagination:
Cursor-based (start/start_id), identical pattern to
clickup_get_task_comments — see that tool's docstring for the full
explanation. Omit both for the most recent 25 comments.
Examples: params = {"list_id": "901234"}
Error Handling: 404 means the list id is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true; description adds ordering (newest first), return format, pagination details (cursor-based, omit for recent 25), and error handling for 404. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear headings (When to Use, When NOT to Use, Returns, Pagination, Examples, Error Handling). Front-loaded with main purpose, concise and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, parameters, pagination, error handling. References sibling for full pagination explanation. Has output schema, so return values not needed. Complete for a read tool with good annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It explains list_id context, start/start_id usage via pagination section, and response_format via Returns. Adds meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List comments on a List's info panel, newest first.' It specifies the resource (List's info panel comments) and action (list), and differentiates from sibling clickup_get_task_comments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides 'When to Use' (read List-level discussion/status history) and 'When NOT to Use' (read task comments, use clickup_get_task_comments). Also references sibling for pagination pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_list_custom_fieldsARead-onlyIdempotent
List the Custom Fields accessible from a List.
Calls GET /list/{list_id}/field. This is the scope you almost always want
before setting a value: it returns every field usable on the List's tasks —
fields defined on the List plus those inherited from the parent Folder,
Space, and Workspace. Each field object carries the id (a UUID you pass to
clickup_set_custom_field_value), type, and type_config (for drop_down /
labels fields, type_config.options[] holds the option UUIDs you set).
When to Use:
To discover a field's
idand its option UUIDs before callingclickup_set_custom_field_valueon a task in this List.
When NOT to Use:
For fields defined higher up only: prefer the narrowest scope that includes your task. Use
clickup_get_folder_custom_fields,clickup_get_space_custom_fields, orclickup_get_team_custom_fieldsto inspect a specific level.
Returns:
A markdown list of fields (name, type, id, and any options) or, with
response_format="json", the raw field objects including full type_config.
Examples:
params = {"list_id": "901100154842"}
params = {"list_id": "901100154842", "include_applied_objects": true, "response_format": "json"}
Error Handling: 404 means the List id is wrong; 401/403 point to token or access issues.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds detail beyond annotations: explains inherited field scoping, response structure (id, type, type_config), and error handling (404, 401/403).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections for purpose, when to use/not use, returns, examples, and error handling; every sentence adds value without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete given low complexity: covers scope, input, output, examples, errors, and sibling tools. Output schema exists, so return details are sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema coverage, description explains each parameter's purpose (e.g., response_format markdown vs json) and provides usage examples, compensating for missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states it lists custom fields from a list, distinguishes from sibling tools like get_folder_custom_fields, get_space_custom_fields, and get_team_custom_fields by scoping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly states when to use (before setting a value, to get field ID/options) and when not to use (for higher-level fields), naming alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_list_membersARead-onlyIdempotent
List the Workspace members with direct access to a List.
Calls GET /list/{list_id}/member. The response only includes members
granted access directly on this List — it excludes people who can see
the List because they belong to a User Group (group_id), or because
they inherited access from the parent Folder, Space, or Workspace
(team_id).
When to Use:
To check who has explicit access to a specific List before assigning tasks or sharing sensitive content.
To debug "why can't user X see this List" — if they're missing here, check Folder/Space sharing or User Group membership instead.
When NOT to Use:
To find who has explicit access to one Task, use
clickup_get_task_members.To manage User Group (ClickUp API name: "Team") membership, use
clickup_get_user_groups/clickup_update_user_group.
Returns: A markdown (or JSON) list of members with id, username, and email.
Examples: params = {"list_id": "901300123456"} params = {"list_id": "901300123456", "response_format": "json"}
Error Handling: 404 means the List id doesn't exist or isn't visible to this token; 401 means CLICKUP_API_TOKEN is missing or invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint and idempotentHint. The description adds context about response scope (excludes group/inherited access) and error handling, but does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections, front-loaded purpose, and no unnecessary sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, usage guidelines, return format, examples, and error handling, making it complete for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Context indicates 0% schema description coverage, but the description provides examples and explains list_id implicitly. Response_format is not elaborated beyond the schema, leading to minimal added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists workspace members with direct access to a list, and distinguishes from siblings like clickup_get_task_members and clickup_get_user_groups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections with specific alternatives provided, guiding selection effectively.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_listsARead-onlyIdempotent
List the Lists that belong to a Folder.
When to Use:
Enumerating every List inside a specific Folder.
When NOT to Use:
The Space has no Folders — use
clickup_get_folderless_lists.You already have the list_id and need full detail — use
clickup_get_list.
Returns:
Markdown (default) or JSON per response_format.
Pagination:
ClickUp returns every List belonging to the Folder in one response; this
tool then windows the result with limit/offset to keep responses
small, reporting has_more and the next offset when applicable.
Examples: params = {"folder_id": "12345"} params = {"folder_id": "12345", "archived": True, "limit": 50}
Error Handling: 404 means folder_id does not exist or is not accessible.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint, so the description's main behavioral additions are the return format options, pagination behavior (windowing, has_more), and error handling for 404. These add useful context beyond annotations. No contradictions found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with distinct sections (When to Use, When NOT to Use, Returns, Pagination, Examples, Error Handling). Every sentence serves a purpose, though it could be slightly more concise. Front-loading is good.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all essential aspects: purpose, usage alternatives, pagination behavior, error handling, and return format. Given the presence of an output schema, it does not need to detail return values. The description is complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all parameters, so the tool description does not need to repeat them. It adds example usage but does not elaborate on parameter semantics beyond the schema. Baseline 3 is appropriate given schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List the Lists that belong to a Folder.' It also distinguishes itself from sibling tools by specifying when not to use it (use clickup_get_folderless_lists or clickup_get_list instead), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'When to Use' and 'When NOT to Use' sections, including specific alternative tool names. This gives the agent clear guidance on when to invoke this tool versus others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_list_templatesARead-onlyIdempotent
List available List templates for a Workspace.
The t- prefixed id field returned here feeds the template_id
parameter of clickup_create_list_from_template_in_folder and
clickup_create_list_from_template_in_space.
When to Use:
Discovering which List templates exist before instantiating one.
When NOT to Use:
You already know the template_id — go straight to
clickup_create_list_from_template_in_folder/_in_space.
Returns:
Markdown (default) or JSON per response_format.
Pagination:
ClickUp returns every template in one response; this tool then windows
the result with limit/offset.
Examples: params = {} params = {"team_id": "90130012345", "limit": 50}
Error Handling: Raises a configuration error if team_id is omitted and CLICKUP_TEAM_ID is not set; 401/403 indicate a token or plan issue.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations already indicate read-only, idempotent, and non-destructive traits, the description adds substantial behavioral details: pagination mechanism (server returns all, client windows with limit/offset), return format selection (markdown or json), and error conditions (401/403, missing env var). This goes well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (intro, when to use, when not to use, returns, pagination, examples, error handling). Every sentence adds value, and it is front-loaded with the essential purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (so return values are documented elsewhere), the description covers all necessary context: purpose, usage guidance, parameter semantics, pagination, and error handling. It is complete for an agent to use this tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has parameter descriptions, but the tool description compensates for the low schema description coverage (0%) by explaining the meaning and usage of each parameter, including the fallback for team_id, windowing behavior for limit/offset, and response_format control.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List available List templates for a Workspace' and distinguishes the tool from siblings by explaining that its output feeds specific creation tools. It also contrasts with the 'when NOT to use' case, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides 'When to Use' and 'When NOT to Use' sections, directing the agent to other tools (clickup_create_list_from_template_in_folder/_in_space) when the template_id is already known. Also includes error handling guidance for missing team_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_list_viewsARead-onlyIdempotent
List the task and page views available for a List.
ClickUp returns custom views and the List's built-in ("required") views — e.g. the default List view — as separate arrays; both are shown here.
When to Use:
Discovering existing List-level views (and their ids) before calling
clickup_get_view,clickup_get_view_tasks, orclickup_update_view.
When NOT to Use:
Everything-, Space-, or Folder-level views — use
clickup_get_team_views/clickup_get_space_views/clickup_get_folder_views.
Returns:
Markdown (default) or JSON listing of views: id, name, type, parent, plus
any built-in required_views.
Examples: params = {"list_id": "901"}
Error Handling: 404 means the List id is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint; the description adds meaningful context about return structure (separate arrays for custom and built-in views), error handling, and output format, without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (main description, when to use, when not, returns, examples, error handling). Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully covers the tool's purpose, usage context, return behavior, and error scenarios. The presence of an output schema further reduces the need to explain return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage per context, the description provides an example with 'list_id' and implies the 'response_format' parameter by mentioning return formats. However, it does not explicitly describe the parameters beyond that, leaving some burden unaddressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists task and page views for a List, with a specific verb and resource. It distinguishes from sibling tools like 'clickup_get_team_views' by specifying it's for List-level views.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use (discovering List-level views before related operations) and when NOT to use (other levels refer to specific sibling tools), with direct mentions of alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_pageARead-onlyIdempotent
Fetch one page of a Doc, including its content.
When to Use:
To read or re-read a single page by id (e.g. before editing it).
When NOT to Use:
To read every page — use
clickup_get_doc_pages.
Returns: The page's title, subtitle, and content (markdown by default).
Examples:
params = {"doc_id": "8cbq...", "page_id": "abc"}
Error Handling:
404 → page not found. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds value by detailing the return content (title, subtitle, markdown) and error handling (404), which enhances transparency beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (main action, usage, returns, examples, error handling). It is concise, front-loading the core purpose, and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and 5 parameters, the description adequately covers return format, example usage, and error scenarios. It is complete for an agent to understand and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides thorough descriptions for all parameters, so schema coverage is effectively high. The description does not add further meaning to the parameters beyond what is already in the schema, resulting in a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Fetch one page of a Doc, including its content.' The verb 'Fetch' and resource 'page' are specific, and the distinction from sibling `clickup_get_doc_pages` is explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'When to Use' and 'When NOT to Use' sections, directly telling the agent when to call this tool and when to use `clickup_get_doc_pages` instead, providing clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_running_time_entryARead-onlyIdempotent
Get the currently running time entry for a user, if any.
Calls GET /team/{team_id}/time_entries/current.
When to Use:
Checking whether a timer is active right now before starting a new one (
clickup_start_time_entry) or stopping one (clickup_stop_time_entry).
When NOT to Use:
To browse historical entries — use
clickup_get_time_entries.
Returns:
A markdown (default) or JSON summary of the running entry, or a plain
"No timer is currently running" message. When present, its duration is
negative — that is how ClickUp signals a still-running timer (the
magnitude is the elapsed time so far).
Examples: params = {"team_id": "123"} params = {"team_id": "123", "assignee": 300528}
Error Handling: 403 means you lack permission to view another user's running timer.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, non-destructive. Description adds key behavioral details: negative duration for running timers, 'No timer' message, and output format options, enhancing transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with clear sections and front-loaded purpose. Each sentence adds value, though slightly longer than minimal. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers usage, behavior, return details, and error scenarios. With good annotations and sufficient parameter documentation, it provides a complete understanding for the agent. Output schema existence is noted but not needed given description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema already provides descriptions for all parameters (team_id, assignee, response_format). Description adds examples and error handling but does not significantly extend parameter meaning. Schema coverage is effectively high, so baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the currently running time entry for a user. It uses a specific verb and resource, and distinguishes from siblings like clickup_get_time_entries and clickup_start/stop_time_entry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (before starting or stopping a timer) and when not to use (for historical entries, use clickup_get_time_entries). Also covers error handling for 403 permission issues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_spaceARead-onlyIdempotent
Fetch full detail for a single Space, including its status workflow and ClickApp toggles.
When to Use:
Inspecting a Space's current statuses/features before calling
clickup_update_space.Confirming a Space exists and getting its exact name/id.
When NOT to Use:
To enumerate all Spaces in a Workspace (use
clickup_get_spaces).
Returns: A markdown detail block (or JSON) with id, private, multiple_assignees, the full statuses array, and which ClickApps are enabled/disabled.
Examples: params = {"space_id": "90130012345"}
Error Handling: 404 means the space_id does not exist or the token can't see it.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds details on return content (status workflow, ClickApp toggles) and error handling (404 meaning). This provides useful context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with well-organized sections (When to Use, When Not, Returns, Examples, Error Handling). Every sentence adds value and is front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get tool with one required parameter and annotations covering safety, the description is complete. It covers return format, error handling, and usage context. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has basic descriptions for both parameters, but the description does not add significant additional semantics beyond schema. The example provides some context for space_id. Adequate but not exceptional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Fetch full detail for a single Space' with a specific verb and resource. It distinguishes from sibling tools like clickup_get_spaces by specifying it's for a single space, not enumeration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use (inspecting statuses before update, confirming existence) and when not to use (enumerate all spaces, directing to clickup_get_spaces). This is excellent guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_space_custom_fieldsARead-onlyIdempotent
List the Custom Fields available at a Space scope.
Calls GET /space/{space_id}/field, returning fields defined on the Space
plus those inherited from the Workspace.
When to Use:
To audit which fields a Space exposes to its Folders, Lists, and tasks.
When NOT to Use:
To find a field usable on a specific task — use
clickup_get_list_custom_fields.
Returns:
A markdown list of fields (or raw JSON with response_format="json").
Examples:
params = {"space_id": "790"}
Error Handling: 404 means the Space id is wrong; 401/403 point to token or access issues.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering safety. The description adds behavioral context: inheritance from Workspace, return format (markdown vs JSON), and error handling. This extra context justifies a score above baseline but not a 5 since annotations already do significant work.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, behavior, usage, returns, example, errors). It is concise with no wasted words. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description explains what is returned and covers error scenarios. It differentiates from sibling tools adequately. A score of 4 reflects that while thorough, it could optionally mention pagination or limits, but it's sufficient for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for all parameters (space_id, response_format, include_applied_objects). The description adds error codes related to parameters but does not significantly enhance understanding beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'Custom Fields available at a Space scope.' It distinguishes from siblings by noting inheritance from Workspace and explicitly tells when not to use this tool, directing to clickup_get_list_custom_fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There are explicit 'When to Use' and 'When NOT to Use' sections, providing clear context. It names an alternative tool (clickup_get_list_custom_fields) for a different use case, helping the agent decide correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_spacesARead-onlyIdempotent
List the Spaces in a Workspace.
When to Use:
Discovering what Spaces exist before drilling into Folders/Lists.
Checking archived Spaces with
archived=True.
When NOT to Use:
To fetch a single Space's full detail, including statuses/features (use
clickup_get_space).
Returns: A markdown list (or JSON) of Spaces with id/private/multiple_assignees, one row per Space.
Pagination:
ClickUp does not paginate this endpoint — it returns every Space in one
response. limit/offset slice that response client-side, and limit is
further capped at MAX_DISPLAY_ROWS (50) regardless of the requested value,
to keep the result well under the MCP response-size budget.
Examples: params = {"team_id": "90130000000", "archived": False, "limit": 20, "offset": 0}
Error Handling: 401/403 mean the token can't see this Workspace; 404 means team_id is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, etc. Description adds beyond: pagination details (client-side slicing, MAX_DISPLAY_ROWS cap), error handling (401/403/404), and return format. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (purpose, when to use, returns, pagination, examples, error handling). No wasted words; every sentence adds necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, parameters, pagination behavior, error handling, and examples. Even with output schema present, the description provides enough context for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already provides descriptions for all parameters, but description adds value by noting the client-side capping of limit at 50 and showing a complete example. This extra context justifies above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opening sentence 'List the Spaces in a Workspace' is specific verb+resource. Later differentiates from 'clickup_get_space' for fetching a single space's detail, making purpose clear and distinct from sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections. States when to use (discovering spaces, checking archived) and when not (use `clickup_get_space` for single space detail), providing clear guidance and alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_space_tagsARead-onlyIdempotent
List every task Tag defined in a Space, with its foreground/background colors.
Space tags are not paginated by the API — this returns the full palette.
When to Use:
Discovering existing tag names/colors before creating or applying one.
When NOT to Use:
To see which tags are on a specific task — use
clickup_get_task.
Returns: Markdown bullet list (name + fg/bg colors) or JSON array, per response_format.
Examples: params = {"space_id": "90130912"} params = {"space_id": "90130912", "response_format": "json"}
Error Handling: 404 means the space_id does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, etc. Description adds valuable behavioral context: no pagination (full palette), error handling for 404, and return format details. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections: main description, When to Use, When NOT to Use, Returns, Examples, Error Handling. Concise and front-loaded with the main action. No unnecessary content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description covers return format, error handling, and usage context. For a simple read-only tool with 2 parameters, it is nearly complete. Minor gap: no explicit mention of authentication or rate limits, but annotations cover safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already has descriptions for both parameters. Description adds examples and contextual guidance on when to use response_format, but doesn't significantly enhance what schema already provides. Marginal added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states 'List every task Tag defined in a Space, with its foreground/background colors.' It uses a specific verb and resource, and distinguishes from siblings like clickup_get_task for seeing tags on a specific task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Has dedicated 'When to Use' and 'When NOT to Use' sections, providing clear guidance. It explicitly names an alternative tool (clickup_get_task) for when to not use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_space_viewsARead-onlyIdempotent
List the task and page views available for a Space.
When to Use:
Discovering existing Space-level views (and their ids) before calling
clickup_get_view,clickup_get_view_tasks, orclickup_update_view.
When NOT to Use:
Everything-, Folder-, or List-level views — use
clickup_get_team_views/clickup_get_folder_views/clickup_get_list_views.
Returns: Markdown (default) or JSON listing of views: id, name, type, parent.
Examples: params = {"space_id": "456"}
Error Handling: 404 means the Space id is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide read-only, idempotent, non-destructive hints. Description adds return format (markdown/JSON), fields included, and error handling for 404. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections, bullet points, and example. Concise yet informative, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, when to use, alternatives, return format, example, and error handling. Fully complete given output schema and annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already provides descriptions for both parameters. Description adds minimal extra meaning (example usage, output format impact), baseline score appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'List the task and page views available for a Space.' Uses specific verb and resource, and distinguishes from sibling tools by mentioning other view levels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use (discovering views before other operations) and when not to use (other levels), with alternatives like clickup_get_team_views.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_taskARead-onlyIdempotent
Fetch one task by id.
Calls GET /task/{task_id}. Set custom_task_ids=true (plus team_id /
CLICKUP_TEAM_ID) to look the task up by its Custom Task ID. Optionally pull
subtasks and a markdown description.
When to Use:
To read a single task's full detail when you already have its id.
When NOT to Use:
To browse or search many tasks — use
clickup_get_tasks(one List) orclickup_get_filtered_team_tasks(whole Workspace).
Returns:
Markdown detail (name, status, priority, assignees, dates, description) or the
raw task JSON when response_format="json".
Examples:
params = {"task_id": "86cxy1", "include_subtasks": true}By custom id:
params = {"task_id": "PROJ-42", "custom_task_ids": true, "team_id": "9000"}
Error Handling:
404 means the id is wrong (or you passed a Custom Task ID without
custom_task_ids=true).
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, and non-destructive behavior. The description adds valuable details about return format (markdown or json), custom task ID behavior, and error handling (404 meaning wrong id), going beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with clear sections, front-loading the core purpose. Every sentence adds value, and the structure makes it easy to scan for key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all necessary aspects: purpose, usage conditions, alternatives, parameter details, return values, and error scenarios. Given the tool's simplicity and the presence of an output schema, the description is fully sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the interplay between custom_task_ids and team_id, offers examples for both standard and custom ID usage, and clarifies the response_format parameter. This adds significant context beyond the schema descriptions, especially given that schema description coverage is 0% per context signals.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Fetch one task by id' and distinguishes itself from sibling tools by specifying when to use alternatives like clickup_get_tasks and clickup_get_filtered_team_tasks. It provides a specific verb and resource, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly includes 'When to Use' and 'When NOT to Use' sections, naming alternative tools for browsing or searching multiple tasks. Examples and error handling further guide correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_task_commentsARead-onlyIdempotent
List comments on a task, newest first.
Calls GET /task/{task_id}/comment.
When to Use:
To read discussion history on a task before acting on it.
When NOT to Use:
To read replies inside a specific thread — use
clickup_get_threaded_comments.
Returns: Markdown (default) or JSON list of comments with id, author, date, resolved state, assignee, and (truncated) text.
Pagination:
Cursor-based, NOT limit/offset. Omit start/start_id for the most recent
25 comments (ClickUp's fixed page size — not configurable). To page to
OLDER comments, pass the oldest comment's date as start and its id as
start_id; the markdown output surfaces both values whenever a full page
(25) comes back, so callers can loop until a short page signals the end.
Examples: params = {"task_id": "abc123"} params = {"task_id": "abc123", "start": 1508369194377, "start_id": "446750"}
Error Handling: 404 means the task id is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description significantly adds detailed behavioral context: it explains the return format (markdown or JSON), the fields included, and crucially, the cursor-based pagination mechanism with fixed page size, how to page older comments, and that the markdown output surfaces cursor values for looping. This goes well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with sections for purpose, API call, when to use/not, returns, pagination, examples, and error handling. Every sentence is informative and necessary. No redundancy or fluff. The structure aids quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (pagination, multiple optional parameters) and the presence of an output schema, the description covers all critical aspects: purpose, usage boundaries, return fields, pagination mechanics, error handling, and examples. It is fully sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite schema description coverage being 0% (per context signals), the description provides rich usage semantics for parameters. It explains how start and start_id work together for pagination, with examples and clear rules. It also mentions the response_format parameter indirectly by describing the output. This adds meaning beyond the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List comments on a task, newest first' and specifies the API call. It distinguishes itself from the sibling tool clickup_get_threaded_comments, which is for reading replies. The verb 'list' and resource 'comments on a task' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'When to Use' and 'When NOT to Use' sections, directing agents to use this tool for reading discussion history and to use clickup_get_threaded_comments for threads. It also covers pagination and error handling, providing comprehensive usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_task_membersARead-onlyIdempotent
List the Workspace members with direct access to a Task.
Calls GET /task/{task_id}/member. The response only includes members
granted access directly on this Task — it excludes people who can see
it via a User Group (group_id) or inherited access from the List,
Folder, Space, or Workspace (team_id).
When to Use:
To check who can see a specific Task before sharing sensitive detail in a comment or attachment.
When NOT to Use:
To find who has direct access to the whole List, use
clickup_get_list_members.To find who is assigned to the Task (a different concept from who can see it), use the task-detail tools in the tasks module.
Returns: A markdown (or JSON) list of members with id, username, and email.
Examples: params = {"task_id": "9hz"} params = {"task_id": "DEV-123", "custom_task_ids": true, "team_id": "123456"}
Error Handling: 404 means the Task id doesn't exist or isn't visible to this token; 400 if custom_task_ids=True but team_id is missing.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description discloses the exact API method (GET), the fact that only direct members are returned (excluding groups and inherited access), error handling for 404 and 400 codes, and example parameter sets. This enriches the agent's understanding of the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a concise summary, followed by API details, usage guidance, return information, example usage, and error handling. Each section is brief and pertinent, with no superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required parameter, existing output schema, and rich annotations), the description covers all essential aspects: purpose, scope, usage guidelines, behavioral details, parameter examples, and error handling. It is complete for an agent to correctly select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema has detailed descriptions for each parameter, the tool description adds value through explicit examples and error conditions related to parameters (e.g., custom_task_ids requires team_id). However, it does not mention the response_format parameter, and the description's schema coverage is low (0%), so the description does not fully compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action 'List', the resource 'Workspace members with direct access to a Task', and the scope 'direct access only'. It distinguishes from sibling tools like clickup_get_list_members and clickup_get_task, clarifying what this tool does and does not do.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a 'When to Use' section for checking task visibility before sharing sensitive details, and a 'When NOT to Use' section with specific alternative tools (clickup_get_list_members for list-level access, task-detail tools for assignments). This provides clear decision-making guidance for the AI.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_tasksARead-onlyIdempotent
List tasks inside ONE List, with filters and sorting.
Calls GET /list/{list_id}/task. Scope is a single List. Filter by statuses,
assignees, tags, custom task types, and date ranges (created/updated/due/done,
all unix ms), and sort with order_by + reverse.
When to Use:
You know the List and want its tasks (a sprint board, a backlog column).
When NOT to Use:
You need tasks across several Lists/Folders/Spaces at once, or you do not know which List they live in — use
clickup_get_filtered_team_tasks, which searches the whole Workspace.You already have a task id — use
clickup_get_task.
Returns: A paginated markdown summary (one bullet per task) or JSON. Only the first 50 tasks of a page are rendered to stay under the size limit.
Pagination:
Page-based: pass page (0-indexed, up to 100 tasks per page). When the tool
reports "More available", request the next page number.
Examples:
params = {"list_id": "901", "statuses": ["in progress"], "order_by": "due_date"}Next page:
params = {"list_id": "901", "page": 1}
Error Handling:
404 means the List id is wrong; an empty result is a valid page past the end.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, and non-destructive behavior. The description adds valuable operational details: pagination mechanics (page-based, up to 100 tasks per page, 'More available' signal), return format constraints (first 50 tasks rendered), and error handling (404 for wrong list id, empty result past end). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized: a one-line summary, followed by clear sections for when to use/not use, returns, pagination, examples, and error handling. Every sentence serves a purpose, and key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (many parameters, pagination, error cases), the description covers all essential aspects: scope, filtering, sorting, pagination mechanics, return format, and error handling. The presence of an output schema means return structure is covered elsewhere, so the description is appropriately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for all parameters (100% coverage), so the description's role is to add value beyond that. It summarizes the filter surface (statuses, assignees, tags, etc.) and provides usage examples, which helps an agent quickly grasp the parameter landscape. However, the schema already documents each parameter, so the description adds moderate extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List tasks inside ONE List, with filters and sorting,' specifying the verb (list) and resource (tasks within a single list). It explicitly distinguishes from sibling tools by naming alternatives and their appropriate contexts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes dedicated 'When to Use' and 'When NOT to Use' sections with explicit references to alternative tools (clickup_get_filtered_team_tasks, clickup_get_task), providing clear decision guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_task_templatesARead-onlyIdempotent
List the Workspace's saved task templates.
Calls GET /team/{team_id}/taskTemplate?page=N. team_id falls back to
CLICKUP_TEAM_ID. Use the returned ids with
clickup_create_task_from_template.
When to Use:
To discover template ids before creating a task from one.
When NOT to Use:
For Folder/List templates — those live in the Folders/Lists tools.
Returns: A markdown list of template names and ids, or JSON.
Pagination:
Page-based (page, 0-indexed, required by ClickUp).
Examples:
params = {"team_id": "9000", "page": 0}
Error Handling:
A missing team_id (and no CLICKUP_TEAM_ID) returns a clear error.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, etc.), the description adds: the exact API endpoint, pagination details (page-based, 0-indexed), return format (markdown list or JSON), and error handling for missing team_id. This fully discloses behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized into sections (purpose, API call, when to use/not use, returns, pagination, examples, error handling). Each sentence serves a purpose, and it's concise yet comprehensive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists (as per context signals), the description covers the return format and pagination. It also addresses error handling. For a read-only list tool, all necessary context is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It explains team_id (fallback) and page (0-indexed), and mentions return format which relates to response_format. An example is provided. However, it doesn't explicitly list all parameters in a structured way, but still adds significant value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List the Workspace's saved task templates.', specifying the verb and resource. It distinguishes from siblings like get_folder_templates and get_list_templates by noting it's for workspace-level templates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to Use' (discover template ids before creating a task) and 'When NOT to Use' (not for Folder/List templates, directing to other tools). This gives clear guidance and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_task_time_in_statusARead-onlyIdempotent
Report how long one task has spent in each status.
Calls GET /task/{task_id}/time_in_status. Requires the 'Total time in
Status' ClickApp to be enabled. Set custom_task_ids=true (+ team_id) to
address the task by Custom Task ID.
When to Use:
Cycle-time / workflow analysis for a single task.
When NOT to Use:
For many tasks at once — use
clickup_get_bulk_tasks_time_in_status.
Returns:
Markdown (current status + per-status history in Xh Ym) or raw JSON.
Examples:
params = {"task_id": "86cxy1"}
Error Handling: An empty result usually means the ClickApp is disabled; 404 means a bad id.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. The description adds critical context: the prerequisite ClickApp, return format (Markdown/JSON), and error conditions (empty result vs 404). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (usage, returns, examples, errors). Every sentence adds value, and the information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description covers all aspects: purpose, prerequisites, usage boundaries, parameter hints, example, error handling, and return format. Output schema exists, so return values need not be detailed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 0%, the description supplements parameter meaning by explaining the interplay of custom_task_ids and team_id, and mentions response_format indirectly. Schema descriptions also exist for each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Report how long one task has spent in each status.' It specifies the API endpoint and distinguishes itself from the sibling tool 'clickup_get_bulk_tasks_time_in_status', making its scope unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections are provided, along with a concrete alternative tool. Examples and error handling further guide usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_team_custom_fieldsARead-onlyIdempotent
List the Workspace-scoped Custom Fields.
Calls GET /team/{team_id}/field (ClickUp names the Workspace team_id),
returning only fields defined at the top Workspace level.
When to Use:
To inventory the organisation-wide Custom Fields shared across every Space.
When NOT to Use:
To find a field usable on a specific task — use
clickup_get_list_custom_fields, which also surfaces inherited fields.
Returns:
A markdown list of fields (or raw JSON with response_format="json").
Examples:
params = {"team_id": "9007200144"}
Error Handling: 404 means the Workspace id is wrong; 401/403 point to token or access issues.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds that it returns only top-level workspace fields, mentions response format options, and provides error handling details for 404, 401, and 403. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with separate sections for purpose, when to use, when not to use, returns, examples, and error handling. It is concise and front-loaded, with no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description does not need to detail return values. It covers scope, usage, alternatives, and error handling. Complete for a read-only list tool with good annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% per context (though schema itself has descriptions). The description does not elaborate on parameter details beyond the schema, but the schema is rich. The example helps, but parameter semantics are largely covered by the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List the Workspace-scoped Custom Fields' with the specific API call and scope. It distinguishes from sibling tools by noting it only returns workspace-level fields, not inherited ones.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('inventory organization-wide Custom Fields') and when not to use ('to find a field usable on a specific task'), with a clear alternative: 'clickup_get_list_custom_fields'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_team_viewsARead-onlyIdempotent
List the task and page views defined at the Everything Level of a Workspace.
When to Use:
Discovering existing Workspace-wide views (and their ids) before calling
clickup_get_view,clickup_get_view_tasks, orclickup_update_view.
When NOT to Use:
Views scoped to one Space/Folder/List — use
clickup_get_space_views/clickup_get_folder_views/clickup_get_list_views.
Returns: Markdown (default) or JSON listing of views: id, name, type, parent.
Examples: params = {"team_id": "123"}
Error Handling: 404 means the Workspace (team) id is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint=false. The description adds valuable context: output format (Markdown or JSON), returned fields (id, name, type, parent), and error handling (404 for wrong team_id). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized into clear sections (purpose, when to use/not use, returns, examples, error handling). It is concise with no unnecessary words, every sentence provides necessary guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a simple read operation with only two parameters, the description covers all essential aspects: scope, purpose, usage guidance, output structure, and error handling. The presence of an output schema reduces the need to document return values in detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes both parameters (team_id and response_format) with descriptions. The description adds value by specifying default response_format as 'markdown', showing an example, and linking error handling to parameter values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List the task and page views defined at the Everything Level of a Workspace.' This verb+resource combination is specific and distinguishes from sibling tools like clickup_get_space_views, clickup_get_folder_views, and clickup_get_list_views.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections guide the agent. It directs to sibling tools for other scopes and advises using this tool before calling view-related tools (clickup_get_view, clickup_get_view_tasks, clickup_update_view).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_threaded_commentsARead-onlyIdempotent
List the replies in a comment's thread.
Calls GET /comment/{comment_id}/reply. The parent comment itself is NOT
included in the response — only its replies.
When to Use:
To read the full discussion nested under a specific comment.
When NOT to Use:
To read a task/list/Chat-view's top-level comments — use
clickup_get_task_comments/clickup_get_list_comments/clickup_get_chat_view_comments.
Returns: Markdown (default) or JSON list of replies with id, author, date, and (truncated) text.
Pagination:
Unlike the three top-level comment-listing tools, ClickUp does NOT expose
start/start_id cursor pagination for replies — this endpoint returns
the full thread in one call, so no cursor params are surfaced here.
Examples: params = {"comment_id": "446750"}
Error Handling: 404 means the parent comment_id is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint. The description adds details about response format (Markdown/JSON), fields (id, author, date, truncated text), pagination (full thread returned, no cursor), and error handling (404). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections, examples, bullet points, and no extraneous information. It is thorough yet concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required parameter, read-only), the description covers return values, pagination, error handling, and output format options. It is complete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes comment_id and response_format with descriptions and default. The description adds an example (params = {'comment_id': '446750'}) and explains that response_format defaults to markdown, reinforcing parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List the replies in a comment's thread' and explicitly notes that the parent comment is not included. It distinguishes from sibling tools like clickup_get_task_comments by specifying when to use each.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes dedicated 'When to Use' and 'When NOT to Use' sections, naming specific alternatives (clickup_get_task_comments, clickup_get_list_comments, clickup_get_chat_view_comments) for top-level comments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_time_entriesARead-onlyIdempotent
List time entries in a Workspace, optionally scoped by date range and location.
Calls GET /team/{team_id}/time_entries, ClickUp's Time Tracking 2.0
surface. Without start_date/end_date ClickUp returns every entry in
the Workspace, so narrow the range and/or scope (space/folder/list/task)
on busy Workspaces.
When to Use:
Auditing or summarizing time logged across a Workspace, Space, Folder, List, or single task over a period.
Building a timesheet/report (combine with
is_billableandassignee).
When NOT to Use:
To fetch one known entry by id — use
clickup_get_time_entry.To check only the entry currently running for a user — use
clickup_get_running_time_entry(cheaper, no date math needed).
Returns:
A markdown (default) or JSON list of entries — id, task, user, start/end,
duration, billable flag, and tags. A negative duration means that
entry is an actively running timer for that user (elapsed-so-far), not a
finished duration.
Pagination:
This endpoint has no limit/offset — ClickUp returns the full matching
set in one call. Display here is capped at 50 rows for context-window
safety; narrow start_date/end_date or the location filters to see
everything without truncation.
Examples: params = {"team_id": "123", "start_date": 1700000000000, "end_date": 1700600000000, "is_billable": True} params = {"team_id": "123", "task_id": "abc123", "include_task_tags": True}
Error Handling: 404 means team_id/space_id/folder_id/list_id/task_id doesn't exist or isn't accessible; 429 means the ~100 req/min per-token rate limit was hit.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, destructiveHint) are supplemented with useful behavioral details: negative duration means running timer, pagination capped at 50 rows, error handling for 404 and 429. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections (API call, when to use, returns, pagination, examples, error handling). Front-loaded with basic purpose. Comprehensive yet concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all aspects: purpose, usage, return format, pagination, error handling. Output schema exists and description aligns. Complete for a read-only list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% but description adds meaning: explains start_date/end_date requirement, scope filters, team_id default, and various boolean options. Could be slightly more systematic but compensates well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists time entries in a Workspace, scoped by date range and location. It distinguishes from siblings like clickup_get_time_entry (fetch by id) and clickup_get_running_time_entry (current running entry).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections. Provides use cases (auditing, timesheet) and alternatives. Also details pagination behavior and display cap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_time_entryARead-onlyIdempotent
Fetch one time entry by id.
Calls GET /team/{team_id}/time_entries/{time_entry_id}.
When to Use:
You already have a
time_entry_id(fromclickup_get_time_entries, or a create/start response) and want its current full detail.
When NOT to Use:
To search/list entries — use
clickup_get_time_entries.To see prior edits to this entry — use
clickup_get_time_entry_history.To check the currently-running timer without an id — use
clickup_get_running_time_entry.
Returns:
A markdown (default) or JSON summary of the entry. A negative
duration means the timer is still running for that user.
Examples: params = {"team_id": "123", "time_entry_id": "1963465985517105840", "include_location_names": True}
Error Handling: 404 means the time_entry_id doesn't exist, or exists under a different team_id.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. The description adds behavioral context: negative duration means timer is still running, and error handling for 404. This supplements the annotations well without redundancy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: purpose, endpoint, when to use/not use, returns, examples, error handling. Each sentence adds value, and the length is appropriate for the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all essential aspects: purpose, usage guidance, behavioral details (negative duration), return format, error handling, and example. With annotations and an output schema presumably present, the description is complete for decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for each parameter. The description adds little parameter-level detail beyond mentioning team_id and time_entry_id in the endpoint and noting response_format in the example. Given schema coverage is high (schema has descriptions), the description's added value is marginal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Fetch one time entry by id', specifies the verb (fetch) and resource (time entry by id). It distinguishes from siblings like clickup_get_time_entries, clickup_get_time_entry_history, and clickup_get_running_time_entry by explicitly naming them in the 'When NOT to Use' section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Has dedicated 'When to Use' and 'When NOT to Use' sections. States use when you already have a time_entry_id, and provides clear alternatives for list, history, and running timer scenarios. Also lists prerequisites (id from list or create).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_time_entry_historyARead-onlyIdempotent
View the list of changes made to a time entry.
Calls GET /team/{team_id}/time_entries/{time_entry_id}/history.
When to Use:
Auditing who changed a time entry's duration/description/task association and when.
When NOT to Use:
To read the entry's current state — use
clickup_get_time_entry.
Returns: A markdown (default) or JSON list of raw change records as ClickUp returns them (field names vary by change type; this endpoint's payload shape isn't fully documented upstream, so entries render as key=value pairs rather than a fixed schema).
Examples: params = {"team_id": "123", "time_entry_id": "1963465985517105840"}
Error Handling: 404 means the time_entry_id doesn't exist or isn't accessible.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate the tool is read-only, idempotent, and non-destructive. The description adds context about the HTTP method (GET), the variability of response fields, and output format options, which are behavioral traits not covered by annotations. It also explains error handling, enhancing transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with headings for use cases, return values, examples, and error handling. Every sentence adds value, and there is no redundant or verbose language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (read-only history retrieval with a few parameters), the description covers purpose, usage, parameters, output format, and error handling comprehensively. The existence of an output schema does not detract, and the description properly acknowledges the upstream inconsistency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description explains the key parameters: it gives an example with `team_id` and `time_entry_id`, mentions the default for `team_id` from environment variable, and alludes to `response_format` via output format discussion. This adds meaning beyond the bare schema, but lacks explicit mention of the `response_format` parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'View the list of changes made to a time entry', which is a specific verb+resource. It distinguishes from the sibling tool `clickup_get_time_entry` by noting that the latter is for reading current state, making the purpose clear and unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit sections 'When to Use' (auditing changes) and 'When NOT to Use' (to read current state, referencing `clickup_get_time_entry`) provide clear usage guidance. Error handling for 404 is also included, adding to the guidelines.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_time_entry_tagsARead-onlyIdempotent
List every tag ever applied to a time entry in this Workspace.
Calls GET /team/{team_id}/time_entries/tags.
When to Use:
Discovering existing tag names/colors before tagging more entries, or before renaming one with
clickup_rename_time_entry_tag.
When NOT to Use:
To see the tags on one specific entry — read them off
clickup_get_time_entry/clickup_get_time_entriesinstead.
Returns: A markdown (default) or JSON list of tags with name, colors, and creator.
Examples: params = {"team_id": "123"}
Error Handling: 404 means the team_id doesn't exist or isn't accessible.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds the API endpoint, return format (markdown/JSON list with name, color, creator), and error handling (404 for invalid team_id). Minor missing: no mention of pagination, but unlikely needed for a list of tags.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: main description, when to use, when not to use, returns, example, error handling. It is concise with no extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 required parameter, read-only, output schema exists), the description covers purpose, usage, an example, and error handling adequately. No gaps identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes team_id and response_format. The description adds value by providing an example usage (params = {'team_id': '123'}) and mentioning the API call path.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists every tag ever applied to a time entry in the workspace, and distinguishes itself from siblings by noting that tags on a specific entry are available via clickup_get_time_entry or clickup_get_time_entries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections provide clear guidance on discovering tags before tagging or renaming, and direct users to alternative tools for per-entry tags.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_userARead-onlyIdempotent
Look up a single Workspace member's profile, role, and admin status.
Note: Enterprise plan only — returns 403 on other plans.
When to Use:
Checking a member's current role/admin flag before editing or removing them.
When NOT to Use:
Listing every member of a List/Task — use
clickup_get_list_members/clickup_get_task_membersinstead. Looking up a guest — useclickup_get_guest.
Returns:
Markdown summary (id, username, email, role, custom role) or the raw JSON
payload when response_format="json".
Examples: params = {"team_id": "123", "user_id": "456"}
Error Handling: 403 means the Workspace is not on the Enterprise plan. 404 means the user id does not exist on this Workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint. Description adds value by noting Enterprise plan restriction (403 on other plans), error handling for 403 and 404, and return format details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (note, when to use, returns, examples, error handling). Concise but could be slightly shortened without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Comprehensive for a read-only lookup tool with 4 parameters and output schema (described returns). Covers plan restrictions, error handling, and usage guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with descriptions, so baseline is 3. Description does not add much beyond schema, except mentioning the params example. No contradiction.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool looks up a single Workspace member's profile, role, and admin status. Distinct from sibling tools like clickup_get_list_members and clickup_get_guest.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides 'When to Use' and 'When NOT to Use' sections, including specific alternatives (clickup_get_list_members, clickup_get_task_members, clickup_get_guest).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_user_groupsARead-onlyIdempotent
List the User Groups in a Workspace (ClickUp's endpoint slug: "getteams1").
Calls GET /group?team_id=.... NB the naming trap: the underlying
ClickUp endpoint is historically named "Teams", but the resource
returned is a User Group (group_id), not the Workspace itself
(team_id) — pass the Workspace id via team_id and optionally narrow
to specific groups via group_ids.
When to Use:
To look up a group's
group_idbefore callingclickup_update_user_group/clickup_delete_user_group.To audit which User Groups exist in a Workspace and who is in them.
When NOT to Use:
To list plain (ungrouped) Workspace members, use a Workspace-members tool in another module — this tool only returns User Groups.
Returns: A markdown (or JSON) list of groups with group_id, name, handle, and member count.
Examples: params = {"team_id": "123456"} params = {"team_id": "123456", "group_ids": ["4bfdfcec-6f4f-40a7-b0d6-22660d51870d"]}
Error Handling: 400/404 if team_id is missing or invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds implementation details (HTTP call), naming trap warning, and error handling (400/404), which provides useful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with headings and examples, but it is fairly long. It front-loads the main action and includes necessary details. It is not overly verbose, but could be slightly more concise without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 required param, output schema exists) and annotations covering safety, the description is thorough: it covers purpose, usage guidelines, error handling, return format, and examples. It leaves no obvious gaps for an agent to make mistakes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has full descriptions for all parameters (team_id, group_ids, response_format). The description adds semantic clarification: explains the team_id vs group_id distinction, provides examples, and describes the output format selector. This goes beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List the User Groups in a Workspace' and specifies the endpoint slug. It distinguishes the tool from sibling tools by clarifying the naming trap and resource type, making it easy for an agent to understand exactly what this tool returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes explicit 'When to Use' and 'When NOT to Use' sections. It tells the agent to use this for looking up group_id before update/delete, and to use a different tool for listing plain workspace members. This provides clear guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_viewARead-onlyIdempotent
Get the full configuration of a single task or page view.
The information returned varies by view type; this always includes the
seven shared config blocks (grouping/divide/sorting/filters/columns/
team_sidebar/settings) needed as the starting point for clickup_update_view.
When to Use:
Inspecting a view's current config before updating it.
Confirming a view's parent Hierarchy level (id + type) prior to a
clickup_update_viewcall, which requires re-sendingparent_id/parent_type.
When NOT to Use:
Listing every view at a location — use
clickup_get_team_views/clickup_get_space_views/clickup_get_folder_views/clickup_get_list_views.Listing the tasks a view shows — use
clickup_get_view_tasks.
Returns: Markdown (default, includes a JSON config block) or full JSON.
Examples: params = {"view_id": "abc123"}
Error Handling: 404 means the view id is wrong or the view was deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations, including the invariant seven config blocks returned, dependency on view type, and error handling (404). This complements the readOnlyHint and idempotentHint annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, usage, returns, example, error handling) and is appropriately concise. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for the tool's complexity, covering what it does, when to use it, what it returns (including config blocks and formats), error handling, and its role as a precursor to clickup_update_view. The presence of an output schema further supports completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite schema description coverage of 0%, the description compensates by explaining the view_id parameter's role and the response_format parameter's effect, along with the default value. The example param block further clarifies usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get the full configuration of a single task or page view,' specifying the verb, resource, and scope. It distinguishes from sibling tools like clickup_get_team_views and clickup_get_view_tasks by explicitly stating what it does not do.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes dedicated 'When to Use' and 'When NOT to Use' sections, listing specific scenarios and naming alternative tools such as clickup_get_team_views and clickup_get_view_tasks, providing clear guidance for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_view_tasksARead-onlyIdempotent
List the tasks currently visible in a view, honoring its filters and sorting.
Unlike clickup_get_tasks (which lists all tasks in a List) or
clickup_get_filtered_team_tasks (workspace-wide filters), this returns
exactly what the view itself shows — respecting the view's own grouping,
sorting, and filter configuration.
When to Use:
Reproducing exactly what a saved Board/Table/Calendar view displays.
When NOT to Use:
Filtering tasks with ad-hoc criteria not tied to a saved view — use
clickup_get_filtered_team_tasksinstead.
Returns: Markdown (default) or JSON with the page's tasks (id, name, status) and whether more pages remain.
Pagination:
ClickUp pages page, 0-indexed, up to 100 tasks per page. Check
last_page (JSON) or the "More available" note (markdown) and call again
with page + 1 until it is true.
Examples: params = {"view_id": "abc123", "page": 0}
Error Handling: 404 means the view id is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, and destructiveHint. The description adds crucial behavioral details: pagination behavior (page, up to 100 tasks, last_page check), return format options, and error handling (404 for wrong view_id). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized with sections for summary, distinction, usage, returns, pagination, examples, and error handling. Every sentence adds value without redundancy. Concise yet comprehensive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one required param, clear annotations, output schema), the description covers all necessary aspects: behavior, pagination, output format, error handling. It is fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides basic descriptions, but the description adds significant context: how pagination works (increment page, check last_page), the meaning of response_format, and error handling for view_id. This goes well beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: 'List the tasks currently visible in a view, honoring its filters and sorting.' It also distinguishes itself from sibling tools like clickup_get_tasks and clickup_get_filtered_team_tasks, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections provide clear guidance, including naming alternatives (e.g., clickup_get_filtered_team_tasks). This helps an agent choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_webhooksARead-onlyIdempotent
List the webhooks registered in a Workspace, with their delivery health.
Returns every webhook the authenticating token created for the Workspace,
surfacing each hook's health.status (active / failing) and fail_count
so you can spot a broken endpoint before re-pointing or re-enabling it.
When to Use:
To find a webhook's id before
clickup_update_webhook/clickup_delete_webhook.To audit which endpoints are subscribed and whether any are failing.
When NOT to Use:
To create a new webhook — use
clickup_create_webhook.
Returns: A list of webhooks (endpoint, id, health status, events, and any location filter). Only webhooks created by the authenticating user are returned.
Examples:
params = {}
params = {"team_id": "9008", "response_format": "json"}
Error Handling:
404 → unknown team id; 401 → bad token. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate read-only, idempotent, non-destructive. Description adds that it returns only webhooks created by the authenticating user, includes health.status and fail_count, and lists error handling (404, 401). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with sections (main purpose, when to use, when not, returns, examples, error handling). Each sentence adds value. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters with schema descriptions) and presence of an output schema (though not shown), the description covers all necessary context: purpose, usage, return content, error handling, and examples. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides good descriptions for both parameters (team_id, response_format). The tool description does not add additional parameter meaning beyond what the schema states, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'List the webhooks registered in a Workspace, with their delivery health,' clearly stating the verb (list) and resource (webhooks). It differentiates from siblings like clickup_create_webhook and clickup_delete_webhook by specifying it lists existing webhooks and includes health status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections: use for finding webhook IDs before update/delete, audit health; not for creation (use clickup_create_webhook). Provides clear contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_workspace_planARead-onlyIdempotent
Report the current subscription plan of a Workspace.
When to Use:
To check whether the Workspace is on Enterprise before calling
clickup_query_audit_logs/clickup_update_privacy_and_accessor other Enterprise-only endpoints.
When NOT to Use:
To see seat usage — use
clickup_get_workspace_seats.
Returns: The plan name and numeric plan id.
Examples:
params = {}
params = {"team_id": "9008", "response_format": "json"}
Error Handling:
404 → unknown team id; 401 → bad token. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds return value details (plan name and numeric id) and error handling (404, 401), providing useful context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (When to Use, When NOT to Use, Returns, Examples, Error Handling). Every sentence is informative with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool, the description covers purpose, usage guidelines, return values, examples, and error handling. Adequate for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already describes both parameters (team_id and response_format) with defaults and description. Description adds examples but no additional param semantics. Baseline score due to schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it reports the current subscription plan of a Workspace. Distinguishes from sibling clickup_get_workspace_seats by explicitly noting it's not for seat usage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to Use' and 'When NOT to Use' sections. Advises checking Enterprise status before calling Enterprise-only endpoints and names alternative sibling tool for seat usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_get_workspace_seatsARead-onlyIdempotent
Report used, total, and available member and guest seats for a Workspace.
When to Use:
Before inviting members/guests, to confirm free seats exist (an invite on a full paid plan may add a billable seat).
When NOT to Use:
To read the plan tier — use
clickup_get_workspace_plan.
Returns: Member seats (filled/total/empty) and guest seats (filled/total/empty). Guest totals may be reported as "Infinity" on unlimited plans.
Examples:
params = {}
params = {"team_id": "9008", "response_format": "json"}
Error Handling:
404 → unknown team id; 401 → bad token. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint, idempotentHint, destructiveHint, so safety is clear. Description adds valuable detail: returns 'Infinity' for guest totals on unlimited plans, error handling for 404/401. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with headings (When to Use, When NOT to Use, Returns, Examples, Error Handling). No fluff, every section adds value. Concise yet comprehensive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all aspects: purpose, usage context, parameter behavior, return structure, error scenarios, examples. Agent has everything needed to invoke correctly, even without output schema (though one exists).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% per context, but description compensates by noting default team_id from CLICKUP_TEAM_ID and showing response_format usage in examples. Does not fully describe each parameter's meaning but enough for usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it reports workspace seats (used/total/available for members and guests). Distinguished from sibling clickup_get_workspace_plan by focusing on seat counts rather than plan tier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides 'When to Use' (before inviting members/guests) and 'When NOT to Use' (to read plan tier, with alternative clickup_get_workspace_plan). Full guidance on context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_health_checkARead-onlyIdempotent
Verify connectivity and authentication against the ClickUp API.
Calls GET /user (the authorized-user endpoint) with the configured
CLICKUP_API_TOKEN and reports who the token belongs to.
When to Use:
As the first call after configuring the server, to confirm the token works.
To debug 401/403 responses from other tools.
When NOT to Use:
To look up other people in the Workspace (use the members tools instead).
Returns:
A one-line OK summary with the authorized user's name, id, and email, or
an Error ... string describing the failure.
Error Handling: 401 means the token is missing/invalid; connection errors point to network or CLICKUP_API_URL issues.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds specific details: calls GET /user, reports token ownership, returns OK summary or error string, and explains error meanings. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear headings and concise sentences. Every sentence adds value, with no redundancy. It is front-loaded with the most important information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool, the description fully covers connectivity verification, authentication check, return format, error handling, and alternative tools. Given annotations and no output schema concerns, it is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters; schema coverage is 100% (empty). Description does not need to add parameter details, and it correctly focuses on behavior and usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Verify connectivity and authentication against the ClickUp API' and further details the underlying endpoint. It clearly distinguishes from siblings by being a health check tool, not a data retrieval or mutation tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to Use' (first call after configuring server, debugging 401/403) and 'When NOT to Use' (not for looking up other people, using members tools instead). Includes error handling guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_invite_guest_to_workspaceA
Invite an external guest to a Workspace by email.
Guests are lighter-weight than full Workspace members: they only see the
tasks/lists/folders explicitly shared with them via clickup_add_guest_to_task,
clickup_add_guest_to_list, or clickup_add_guest_to_folder. Note: Enterprise
plan only — returns 403 on other plans.
When to Use:
Onboarding an external collaborator (client, contractor) who should only see specific items rather than the whole Workspace.
When NOT to Use:
Adding a full internal team member — use
clickup_invite_user_to_workspaceinstead (users see everything they're a member of by default).
Returns:
A confirmation string with the invited guest's id and email, or an
Error ... string on failure.
Examples: params = {"team_id": "123", "email": "contractor@example.com", "can_create_views": False}
Error Handling: 403 means the Workspace is not on the Enterprise plan. 400 usually means the email is malformed or already a member/guest.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses guest limitations (only sees shared items), plan restriction (Enterprise only), and references related functions. Annotations (readOnlyHint=false) are consistent, and description adds value beyond annotations with error handling details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (description, when to use, returns, examples, error handling). Concise yet comprehensive, with no unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one required parameter and an output schema, the description covers purpose, usage, alternatives, error codes, and includes an example. It is fully adequate for an agent to understand and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% (context signal), but the description provides an example with one parameter (can_create_views). It does not explain optional parameters or their defaults beyond what's in the schema. The example helps but is insufficient for full parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Invite an external guest to a Workspace by email') and distinguishes guests from full members. It also references sibling tools for sharing items, differentiating itself effectively.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections with specific alternative tool (clickup_invite_user_to_workspace). Also notes Enterprise plan restriction, providing clear usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_invite_user_to_workspaceA
Invite a full member to a Workspace by email.
Members are heavier-weight than guests: once added, they can see every Space/Folder/List they have permission to per the Workspace's sharing settings, rather than only items explicitly shared with them. Note: Enterprise plan only — returns 403 on other plans.
When to Use:
Onboarding an internal teammate who should have standard (or admin) access across the Workspace.
When NOT to Use:
Onboarding an external collaborator who should only see specific items — use
clickup_invite_guest_to_workspaceinstead.
Returns:
A confirmation string with the invited member's email and admin flag, or
an Error ... string on failure.
Examples: params = {"team_id": "123", "email": "newhire@example.com", "admin": False}
Error Handling: 403 means the Workspace is not on the Enterprise plan (or you lack admin rights). 400 usually means the email is malformed or already a member.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond annotations: that members see items based on workspace sharing settings, that the tool is Enterprise-only with 403 error, and includes error handling for common failure modes. No contradiction with annotations found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with clear sections, no fluff, and includes practical examples and error handling. Every sentence serves a purpose, and it is front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a relatively simple invite tool, the description covers all necessary aspects: core functionality, when to use vs. alternatives, return value, error scenarios, and an example. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all parameters, so the description adds marginal value beyond an example usage. While schema coverage is technically 0% per context signals, the schema itself is well-described, warranting a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it invites a full member to a workspace by email, distinguishes between members and guests, and contrasts with the sibling tool clickup_invite_guest_to_workspace, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections provide clear guidance on when to choose this tool over the guest invite alternative, and also mention the Enterprise plan requirement, leaving no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_merge_tasksADestructive
Merge one or more source tasks into a target task.
Calls POST /task/{task_id}/merge with {"source_task_ids": [...]}. The
target keeps its id; each source task's content is folded in and the source is
closed. Custom Task IDs are not supported here — use internal ids.
When to Use:
To consolidate duplicate tasks into a single canonical task.
When NOT to Use:
To move a task between Lists — use
clickup_move_task.
Returns: A confirmation string naming the target and merged source ids. (Destructive: the source tasks are consumed.)
Examples:
params = {"task_id": "86target", "source_task_ids": ["86dupA", "86dupB"]}
Error Handling: 404 means the target or a source id is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes the destructive nature (source tasks consumed) and provides the API endpoint and response format, adding context beyond the destructiveHint annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and well-organized: summary, technical detail, usage guidance, return value, example, error handling. No unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all necessary aspects: purpose, when/not to use, technical details, error handling, and an example. Output schema exists, so return format is adequately described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has descriptions, but the description adds important nuance (Custom Task IDs not supported, internal ids required) that clarifies parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (merge) and the resource (tasks), and distinguishes from sibling tool clickup_move_task by specifying when not to use it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (consolidate duplicates) and when not to use (move between lists), with a direct reference to an alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_move_taskAIdempotent
Move a task to a new home List.
Calls the v3 endpoint
PUT /workspaces/{workspace_id}/tasks/{task_id}/home_list/{list_id}. Because
the destination List may use different statuses, pass status_mappings when
the task's current status does not exist there. move_custom_fields /
custom_fields_to_move control whether the source List's custom-field values
travel with the task. workspace_id falls back to CLICKUP_TEAM_ID.
When to Use:
To relocate a task from one List to another.
When NOT to Use:
To keep a task in multiple Lists simultaneously (that is the tasks-in- multiple-lists ClickApp, handled by the Lists tools' add/remove).
To edit a task's fields in place — use
clickup_update_task.
Returns: A confirmation string.
Examples:
params = {"task_id": "86cxy1", "list_id": "902", "status_mappings": [{"from": "to do", "to": "open"}]}
Error Handling: 400 typically means a status in the source List has no mapping in the target; 404 means the task or List id is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations indicate `idempotentHint: true` and `destructiveHint: false`, the description adds context about the API endpoint, fallback behavior for `workspace_id`, status mapping requirements, and error handling (400/404). It doesn't explicitly confirm idempotency but covers key behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: one-line purpose, endpoint detail, usage guidelines, return type, example, and error handling. No redundant sentences; all information is front-loaded and earned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (status mappings, custom field migration, multiple parameters), the description covers purpose, when to use/not use, parameter semantics, error codes, and provides an example. With an output schema present, return value explanation is unnecessary. Complete for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite schema description coverage being 0% (likely a metric error), the description adds value by explaining `status_mappings`, `move_custom_fields`, and `custom_fields_to_move` with examples. It also notes the `workspace_id` fallback. This compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Move a task to a new home List' with a specific verb and resource. It distinguishes from sibling tools like `clickup_update_task` and the tasks-in-multiple-lists ClickApp, ensuring no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explicitly provides 'When to Use' and 'When NOT to Use' sections, citing specific alternatives (`clickup_update_task` and Lists tools for multiple lists). This gives clear guidance for agent decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_query_audit_logsARead-onlyIdempotent
Query a Workspace's audit trail (Enterprise, Workspace owner only).
Retrieves audit-log rows for a class of events (applicability), optionally
narrowed by user, event type, outcome, and time window. Results are
timestamp-paginated: pass the last row's timestamp back as page_timestamp
(with page_direction) to walk the log.
Note: Enterprise plan only — returns 403 on other plans. Additionally, only the Workspace owner's token can read audit logs; other tokens get 403.
When to Use:
For a security/compliance review of who did what in the Workspace.
When NOT to Use:
For task activity feeds — audit logs cover account/security/hierarchy administration, not per-task comment history.
Returns: A list of audit entries (event, outcome, actor, time). Use response_format json for the raw rows including every field.
Pagination:
Timestamp-based. Read the timestamp of the last row, then call again with
page_timestamp=<that> and page_direction="before" (older) or "after".
Examples:
params = {"applicability": "auth-and-security", "event_status": "failed"}
params = {"applicability": "user-activity", "user_emails": ["a@x.io"], "page_rows": 50}
Error Handling:
403 → not Enterprise or the token is not the Workspace owner; 400 → bad
filter. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive. Description adds critical context: Enterprise-only, workspace owner token required, pagination behavior, error codes (403, 400). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections (When to Use, Pagination, Examples, Error Handling) and front-loaded with purpose. It is somewhat lengthy but each section adds necessary detail. Could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of audit log queries, the description covers all essential aspects: usage context, limitations, pagination mechanics, error handling, and examples. With annotations and output schema, it is sufficiently complete for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While the schema provides detailed descriptions for all parameters, the description adds value by explaining pagination (page_timestamp, page_direction), giving examples, and noting the required applicability. This supplements the schema without redundancy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it queries a workspace's audit trail, specific to Enterprise and workspace owner. It differentiates from sibling tools by focusing on audit logs for security/compliance, not task activity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use (security/compliance review) and when not to use (task activity feeds), along with plan and ownership restrictions. This helps the agent decide appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_remove_custom_field_valueADestructiveIdempotent
Clear a Custom Field's value on a task.
Calls DELETE /task/{task_id}/field/{field_id}. This removes the value
stored on the task only — it does NOT delete the field definition or any
drop_down/labels options from the field's configuration.
When to Use:
To empty a single field on a task (e.g. unset a drop_down or clear a date).
When NOT to Use:
To change a value — use
clickup_set_custom_field_value.To delete the field itself — that is a ClickApp/UI action, not this API.
Returns: A confirmation string (the endpoint returns an empty body on success).
Examples:
params = {"task_id": "9hz", "field_id": ""}
params = {"task_id": "ABC-123", "field_id": "", "custom_task_ids": true, "team_id": "9007200144"}
Error Handling:
404 means the task or field_id is wrong; if custom_task_ids=true you must
also pass team_id.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint: true, readOnlyHint: false. The description confirms it is a mutating operation and adds crucial context: it only removes the value, not the field definition. Error handling details further enhance transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, when to use/not use, return, examples, error handling). It is concise yet informative, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has multiple parameters and an output schema, the description covers all necessary aspects: operation, usage boundaries, return value, and error scenarios. It is complete for an agent to correctly select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the schema by providing concrete examples and clarifying the conditional requirement of team_id when custom_task_ids=true. The schema descriptions are already present, but the description's examples and error conditions add practical value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Clear a Custom Field's value on a task.' It specifies the HTTP method and endpoint, and distinguishes from sibling tools like clickup_set_custom_field_value and the deletion of the field itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections with direct references to sibling tools. Also provides error handling guidance for 404 errors and the custom_task_ids constraint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_remove_guest_from_folderADestructiveIdempotent
Revoke a guest's access to a Folder.
Note: Enterprise plan only — returns 403 on other plans.
When to Use:
Un-sharing a whole Folder from a guest while leaving their other shared items intact.
When NOT to Use:
Removing just one List or task — use
clickup_remove_guest_from_list/clickup_remove_guest_from_task.
Returns:
A confirmation string, or an Error ... string on failure.
Examples: params = {"folder_id": "321", "guest_id": "456"}
Error Handling: 403 means the Workspace is not on the Enterprise plan. 404 means the folder or guest id does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, but the description adds specifics: returns a confirmation string or error, and details on error codes (403 for plan, 404 for missing IDs). This goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: purpose, plan note, when to use, when not to use, returns, example, and error handling. It is concise and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (as indicated by context signals), the description covers returns, error handling, plan restriction, and provides an example. It is fully complete for a destructive removal tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has descriptions for all three parameters (guest_id, folder_id, include_shared), so schema_description_coverage is 100%. The description does not mention include_shared, but since the schema is sufficient, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear verb+resource: 'Revoke a guest's access to a Folder.' It distinguishes from siblings like clickup_remove_guest_from_list and clickup_remove_guest_from_task by specifying when not to use them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides 'When to Use' and 'When NOT to Use' sections with alternative tool names, making it easy for the agent to choose the correct tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_remove_guest_from_listADestructiveIdempotent
Revoke a guest's access to a List.
Note: Enterprise plan only — returns 403 on other plans.
When to Use:
Un-sharing a whole List from a guest while leaving their other shared items intact.
When NOT to Use:
Removing just one task — use
clickup_remove_guest_from_task.
Returns:
A confirmation string, or an Error ... string on failure.
Examples: params = {"list_id": "789", "guest_id": "456"}
Error Handling: 403 means the Workspace is not on the Enterprise plan. 404 means the list or guest id does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses plan limitation (returns 403 on non-Enterprise) and error codes (403, 404), and describes return type (confirmation string or error string), adding value beyond annotations which only indicate destructiveHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections: main action, plan note, usage guidance, example, error handling. Each sentence is purposeful and there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 parameters, output schema present), the description covers purpose, usage constraints, error handling, and return type, making it sufficiently complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes an example of parameters, but the input schema already provides descriptions for all parameters. The description does not explain the 'include_shared' parameter, so it adds only marginal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Revoke' and resource 'List', and explicitly distinguishes from sibling by stating when NOT to use (for single task removal, use clickup_remove_guest_from_task).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to Use' and 'When NOT to Use' sections, including specific context about un-sharing a whole List while leaving other items intact, and notes the Enterprise plan requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_remove_guest_from_taskADestructiveIdempotent
Revoke a guest's access to a single task.
Note: Enterprise plan only — returns 403 on other plans.
When to Use:
Un-sharing one task from a guest while leaving their other shared items intact.
When NOT to Use:
Removing the guest from the whole Workspace — use
clickup_remove_guest_from_workspace.
Returns:
A confirmation string, or an Error ... string on failure.
Examples: params = {"task_id": "abc123", "guest_id": "456"}
Error Handling: 403 means the Workspace is not on the Enterprise plan. 404 means the task or guest id does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true. Description adds critical context: Enterprise plan restriction (403), error codes (403, 404), and return type (confirmation/error string). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with bullet sections, front-loaded main action, and includes examples and error handling. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given annotations and schema, the description covers purpose, usage boundaries, return value, error handling, and plan limitation. Complete for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has full description coverage for all 5 parameters, so baseline is 3. The tool description does not add additional parameter meaning beyond what schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Revoke a guest's access to a single task' with specific verb and resource. It distinguishes from sibling tools like clickup_remove_guest_from_workspace and clickup_add_guest_to_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides 'When to Use' and 'When NOT to Use' sections, including a concrete alternative (clickup_remove_guest_from_workspace) for the wrong case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_remove_guest_from_workspaceADestructiveIdempotent
Revoke a guest's access to an entire Workspace.
This removes the guest from every task/list/folder they were shared on — it is not scoped to a single item. Note: Enterprise plan only — returns 403 on other plans.
When to Use:
Offboarding an external collaborator entirely.
When NOT to Use:
Revoking access to just one task/list/folder — use
clickup_remove_guest_from_task/_list/_folderinstead.
Returns:
A confirmation string, or an Error ... string on failure.
Examples: params = {"team_id": "123", "guest_id": "456"}
Error Handling: 403 means the Workspace is not on the Enterprise plan. 404 means the guest id does not exist on this Workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses plan restriction (Enterprise only, 403 on other plans), describes the scope of removal (every task/list/folder), and explains error handling (403, 404). This adds significant context beyond annotations which indicate destructive and idempotent hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with a clear summary, usage guidelines, examples, and error handling. Front-loaded with main action. No unnecessary content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the essential aspects: what it does, when to use, plan restrictions, expected output, and error codes. Output schema is mentioned indirectly via return description. Complete for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% (tool description does not describe parameters), so the description must compensate. However, it only provides an example usage without adding meaning beyond what the input schema already provides (workspace ID and guest ID descriptions are in schema). The example does not clarify sources or formats for the IDs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Revoke a guest's access to an entire Workspace.' It uses a specific verb and resource, and distinguishes from siblings by noting it is not scoped to a single item, with explicit alternatives provided.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('Offboarding an external collaborator entirely') and when NOT to use, with direct references to alternative tools (clickup_remove_guest_from_task/_list/_folder).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_remove_tag_from_taskADestructiveIdempotent
Remove a tag from a task without deleting the tag from the Space.
When to Use:
The task no longer belongs under that tag.
When NOT to Use:
To delete the tag everywhere — use
clickup_delete_space_tag.
Returns: A confirmation string naming the removed tag and task.
Examples: params = {"task_id": "9hz", "tag_name": "urgent"}
Error Handling: 404 if the task_id does not exist or the tag was not applied to it.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true and readOnlyHint=false. The description adds value by disclosing the return value (confirmation string), error conditions (404), and the nuance that the tag is not deleted from the Space. It does not discuss rate limits or authorization, but these are beyond the scope for a simple removal tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using bullet points and sections. It front-loads the core action and provides only necessary details: usage, returns, example, and error handling. No redundant sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of complete annotations and a rich input schema, the description covers all essential aspects: purpose, usage guidelines, behavioral traits, return value, and error handling. It is fully sufficient for an agent to use this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema includes descriptions for all parameters (task_id, team_id, tag_name, custom_task_ids), covering their semantics well. The description provides an example that illustrates typical usage. While the description doesn't add much beyond the schema, the example parameter values enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Remove', the resource 'tag from a task', and the scope 'without deleting the tag from the Space'. It distinguishes from the sibling tool clickup_delete_space_tag by explicitly stating the alternative purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'When to Use' and 'When NOT to Use' sections, including a named alternative (clickup_delete_space_tag) for deleting the tag everywhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_remove_task_from_listADestructiveIdempotent
Remove a Task's membership from an additional (non-home) List.
Requires the Tasks in Multiple Lists ClickApp to be enabled; without
it ClickUp returns 403. You cannot remove a Task from its primary
(home) List this way — only from additional Lists it was added to via
clickup_add_task_to_list.
When to Use:
Undoing a
clickup_add_task_to_listcall, or cleaning up a Task that no longer needs to appear in a secondary List.
When NOT to Use:
Removing a Task entirely from its home List — that requires deleting the Task (see the tasks module) rather than this membership removal.
Returns:
A confirmation string, or an Error ... string.
Examples: params = {"list_id": "901300123456", "task_id": "abc123"}
Error Handling: 403 means the Tasks in Multiple Lists ClickApp is not enabled, or you tried to remove the Task from its home List. 404 means list_id or task_id does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructive, idempotent), description discloses prerequisite (Tasks in Multiple Lists ClickApp), error handling (403, 404), and return type (confirmation/error string). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections, front-loaded main action, no redundancy. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given annotations, output schema exists, and tool complexity, description covers prerequisites, usage boundaries, error handling, and example. Complete for agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite schema description coverage of 0%, the description provides examples and context for parameters, though the schema itself contains descriptions. Adds value with concrete example and error implications.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool removes a task's membership from an additional (non-home) list, using specific verbs and resources. It distinguishes from deleting a task entirely and from removing from the home list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'when to use' (undoing add_task_to_list) and 'when NOT to use' (removing from home list) sections, including alternatives like deleting the task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_remove_time_entry_tagsADestructiveIdempotent
Remove one or more tags from one or more time entries.
Calls DELETE /team/{team_id}/time_entries/tags. This does NOT delete
the tag from the Workspace — only its association with these entries;
the tag remains available for clickup_add_time_entry_tags afterward.
When to Use:
Untagging a batch of entries without touching the tag definition itself.
When NOT to Use:
To delete the tag everywhere (rename it out of existence) — there is no dedicated "delete tag" endpoint; use
clickup_rename_time_entry_tagif you need to repurpose it instead.
Returns: A confirmation string naming the tag(s) and how many entries were untagged.
Examples: params = {"team_id": "123", "time_entry_ids": ["abc", "def"], "tags": [{"name": "billing"}]}
Error Handling: 404 means one of the time_entry_ids doesn't exist or isn't accessible.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond annotations: it clarifies that the tag is not deleted from the workspace, only the association is removed. It also explains error handling (404 for non-existent entries). Annotations declare destructiveHint=true and idempotentHint=true, and the description aligns without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: main action, API endpoint, clarification, when to use/not use, returns, example, and error handling. It is front-loaded with the core purpose and each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and annotations, the description is complete: it explains the behavior, distinguishes from related tools, provides usage guidelines, and includes error handling. All essential aspects are covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes an example with params but does not explain each parameter in detail beyond what the input schema provides. The schema has descriptions for all parameters (despite context indicating 0% coverage), so the description adds moderate value through the example and context of use.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Remove one or more tags from one or more time entries.' It distinguishes from siblings like clickup_add_time_entry_tags and clickup_rename_time_entry_tag by explaining the specific action (removing association, not deleting the tag itself).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use (untagging a batch without deleting the tag definition) and when NOT to use (to delete the tag everywhere, suggesting clickup_rename_time_entry_tag instead). This guides the AI agent appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_remove_user_from_workspaceADestructiveIdempotent
Deactivate a full member's access to a Workspace.
Note: Enterprise plan only — returns 403 on other plans.
When to Use:
Offboarding an internal teammate who should lose all Workspace access.
When NOT to Use:
Revoking a guest's access — use
clickup_remove_guest_from_workspaceinstead.
Returns:
A confirmation string, or an Error ... string on failure.
Examples: params = {"team_id": "123", "user_id": "456"}
Error Handling: 403 means the Workspace is not on the Enterprise plan (or you lack admin rights). 404 means the user id does not exist on this Workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds behavioral context beyond annotations by detailing return type (confirmation or error string), and error handling for 403 and 404. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with clear sections, front-loaded purpose, and no unnecessary words. Every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of annotations and output schema, the description covers all necessary aspects: purpose, usage, error handling, and restrictions. It is fully informative for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema already provides descriptions for each parameter (team_id, user_id). The description adds an example of usage, which clarifies parameter formatting but does not add new semantic meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deactivates a full member's access to a Workspace, using a specific verb and resource. It distinguishes itself from the sibling tool for removing guests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections, specifying an alternative tool for guests. Also notes the Enterprise plan requirement, providing clear decision criteria for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_rename_time_entry_tagAIdempotent
Rename a time-entry tag (and set its colors) across the whole Workspace.
Calls PUT /team/{team_id}/time_entries/tags. Unlike
clickup_add_time_entry_tags/clickup_remove_time_entry_tags, which act
on specific entries, this changes the tag definition itself — every
entry currently carrying name will show new_name afterward.
When to Use:
Fixing a typo in a tag name, or standardizing colors for an already-in-use tag.
When NOT to Use:
To add/remove the tag from specific entries without renaming it — use
clickup_add_time_entry_tags/clickup_remove_time_entry_tags.
Returns: A confirmation string with the old and new tag names.
Examples: params = {"team_id": "123", "name": "billing", "new_name": "client-billing", "tag_bg": "#BF55EC", "tag_fg": "#FFFFFF"}
Error Handling:
404 means no tag named name exists in this Workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds significant context: the API endpoint, that renaming changes the tag definition itself affecting all entries, returns a confirmation string with old/new names, and error handling for 404. Adds value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with sections (purpose, usage, returns, examples, error handling). It is informative without being verbose, though slightly longer than necessary. Good front-loading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description covers all key aspects: purpose, when to use/not use, behavioral effect, return value, example usage, and error handling. Given the complexity (5 parameters, output schema exists), it is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has full descriptions for all parameters, so schema description coverage is high. Description reiterates the purpose of 'name' and 'new_name' and mentions colors, but adds little beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool renames a time-entry tag and sets its colors across the whole Workspace, using specific verb and resource. It distinguishes from sibling tools like clickup_add_time_entry_tags and clickup_remove_time_entry_tags by contrasting their actions on specific entries vs. tag definition change.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections provide clear context: use for fixing typos or standardizing colors; do not use to add/remove tags from specific entries. References sibling tools for the alternative use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_replace_time_estimates_by_userADestructiveIdempotent
Overwrite a task's entire set of per-assignee time estimates.
Calls PUT /v3/workspaces/{team_id}/tasks/{task_id}/time_estimates_by_user.
Note: Business Plan and above only — returns 400 if the Workspace isn't
entitled to per-assignee time estimates.
When to Use:
Resetting a task's whole per-assignee estimate breakdown in one call (e.g. re-planning effort across the team).
When NOT to Use:
To adjust just some assignees' estimates while leaving the rest untouched — use
clickup_update_time_estimates_by_userinstead; this tool deletes the estimate for any assignee you don't include.
Returns:
A confirmation string with the new total estimate and the per-assignee
breakdown (in assignee: duration form).
Examples: params = {"team_id": "123", "task_id": "abc123", "estimates": [{"assignee": 300001, "time": 3600000}]} params = {"team_id": "123", "task_id": "abc123", "estimates": [{"assignee": "unassigned", "time": 7200000}]}
Error Handling:
400 means a payload/entitlement problem (over 10 estimates, or the plan
doesn't support this feature); 404 means the task doesn't exist, or an
assignee isn't currently assigned to it.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond annotations by detailing the side effect: 'this tool deletes the estimate for any assignee you don't include.' It also explains error codes (400, 404) and their meanings, and describes the return format. No contradiction with annotations (destructiveHint=true).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized: purpose, HTTP call, plan note, usage guidelines, return description, examples, and error handling. Each section is concise and contributes to the overall understanding, with no redundant or irrelevant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all necessary aspects: purpose, when to use/not use, side effects, error handling, and examples. Given the output schema exists, the description effectively supplements it with usage context and edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all parameters (e.g., time in milliseconds, assignee can be 'unassigned'). The description adds value by including examples that illustrate the parameter format (e.g., assignee as integer or 'unassigned') and emphasizing the replace semantics. While not necessary, the examples enhance clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Overwrite a task's entire set of per-assignee time estimates.' It includes the HTTP call and distinguishes itself from the sibling tool clickup_update_time_estimates_by_user by explicitly noting the replace-all behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use ('resetting a task's whole per-assignee estimate breakdown') and when not to use ('to adjust just some assignees' estimates while leaving the rest untouched'), and names the alternative tool. It also mentions a prerequisite (Business Plan).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_search_docsARead-onlyIdempotent
Search the Docs in a Workspace, optionally filtered by parent location.
Lists Docs across the Workspace and can narrow by creator, parent container, or archived/deleted state. Results are cursor-paginated.
When to Use:
To find a Doc's id before reading (
clickup_get_doc) or editing its pages.To enumerate every Doc under a Space/Folder/List (set parent_id + parent_type).
When NOT to Use:
To read a specific Doc's content — use
clickup_get_doc_pagesinstead.To create a Doc — use
clickup_create_doc.
Returns:
A list of Docs (name, id, parent, created date). When more results exist the
response includes a next_cursor; pass it back as cursor to page forward.
Pagination:
Cursor-based. Loop: call once, read next_cursor from the output, then call
again with cursor=<next_cursor> until it is empty.
Examples:
params = {"parent_id": "901300", "parent_type": "space"}
params = {"cursor": "eyJ...", "limit": 100}
Error Handling:
401 → bad token; 404 → unknown Workspace id. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description goes further by detailing pagination (cursor-based), error handling (401, 404), output format, and the purpose of obtaining doc IDs for subsequent operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections and examples, but it is fairly verbose. Every section serves a purpose, but slightly more conciseness could be achieved without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple filters, pagination, error handling), the description covers all essential aspects: purpose, usage, pagination mechanism, examples, and error scenarios. Output schema exists but the description still summarizes returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides detailed descriptions for all parameters, so the description adds little new parameter-level semantics. However, it gives high-level filtering concepts and pagination flow, which adds some context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search the Docs in a Workspace' and explains filtering capabilities. It distinguishes itself from siblings like clickup_get_doc and clickup_create_doc by specifying when to use each.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'When to Use' and 'When NOT to Use' sections, providing clear guidance on appropriate scenarios and directing to alternative tools (clickup_get_doc_pages, clickup_create_doc).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_send_chat_messageA
Post a new message to a Chat channel.
Defaults to a plain 'message'. For a rich 'post' (Announcement/Discussion/Idea/
Update), set message_type='post' and pass the subtype id in
post_data={"subtype": {"id": "..."}} — get the id from clickup_get_chat_subtypes.
When to Use:
To send a message into a channel.
When NOT to Use:
To reply within a thread — use
clickup_send_chat_reply.To change an existing message — use
clickup_update_chat_message.
Returns: A confirmation with the new message's id and channel.
Examples:
params = {"channel_id": "6-901...", "content": "Deploy is green ✅"}
params = {"channel_id": "6-901...", "content": "Q3 kickoff", "message_type": "post", "post_data": {"subtype": {"id": "123"}}}
Error Handling:
400 → bad body (e.g. content too long); 404 → unknown channel. Errors return an
Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already present (readOnlyHint=false, etc.), but description adds meaningful context: return format (confirmation with id and channel), error codes (400, 404), and details on post_data usage. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and well-structured: main purpose, defaults, when-to-use/not, returns, examples, error handling. Every sentence adds value, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers usage, parameters, return values, errors, and references sibling tool for subtypes. Lacks mention of rate limits or authentication, but annotations (openWorldHint=true) and output schema compensate. Very complete for a chat message tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description thoroughly explains parameters: default message_type, post_data usage with reference to clickup_get_chat_subtypes, assignee, followers, content_format, etc. It adds significant value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Post a new message to a Chat channel' and distinguishes plain messages from rich posts (Announcement/Discussion/Idea/Update). Explicitly differentiates from sibling tools clickup_send_chat_reply and clickup_update_chat_message.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Has explicit 'When to Use' and 'When NOT to Use' sections, naming specific alternative tools for replying in a thread and updating messages. Includes examples and error handling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_send_chat_replyA
Post a threaded reply under an existing Chat message.
When to Use:
To respond within a message's thread.
When NOT to Use:
To start a new top-level message — use
clickup_send_chat_message.
Returns: A confirmation with the new reply's id and the parent message id.
Examples:
params = {"message_id": "abc123", "content": "On it 👍"}
Error Handling:
400 → bad body; 404 → unknown parent message. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false (write) and destructiveHint=false. Description adds that it posts a reply, returns confirmation with reply id, and lists error codes (400, 404). It does not detail all side effects, but overall sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections: purpose, when to use/not use, returns, example, error handling. Every sentence is necessary. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core usage and error handling but omits explanation of optional parameters. Given the tool's complexity (many optional fields), more detail would help agents use it correctly. Output schema exists, so return values are covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must compensate. Only 'message_id' and 'content' are mentioned in the example; optional parameters like 'assignee', 'followers', 'workspace_id' are not described. The description adds minimal value beyond the schema for parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Post a threaded reply under an existing Chat message.' It uses specific verb 'Post' and resource 'threaded reply' and distinguishes from sibling 'clickup_send_chat_message' by stating when NOT to use it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('To respond within a message's thread') and when-NOT-to-use ('To start a new top-level message — use clickup_send_chat_message'). Provides clear guidance on alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_set_custom_field_valueAIdempotent
Set a Custom Field's value on a task.
Calls POST /task/{task_id}/field/{field_id}. The request body is
POLYMORPHIC — the shape of value is decided by the field's type, which
you can read with clickup_get_list_custom_fields. Send the wrong shape and
ClickUp answers 400. drop_down / labels take the option UUIDs found in the
field's type_config.options[], not the display labels.
Value by field type:
Field type(s) |
| Example |
text, short_text, url, email, phone | JSON string |
|
number, currency, money | JSON number |
|
date | int64 unix milliseconds; pair with |
|
checkbox | boolean |
|
emoji / rating | integer (count of filled icons) |
|
drop_down (single-select) | a single option UUID string |
|
labels (multi-select) | an array of option UUID strings (the full desired set) |
|
tasks (task relationship) | object |
|
users (people) | object |
|
location | object | see below |
Note: labels differ from tasks/people — labels take a plain array of UUIDs
(the complete desired selection), NOT an {add, rem} object; {add, rem} is
only for the tasks-relationship and people field types.
When to Use:
To populate or overwrite a single Custom Field on one task after resolving its
field_id(and any option UUIDs) viaclickup_get_list_custom_fields.
When NOT to Use:
To clear a field — use
clickup_remove_custom_field_valueinstead of sending an empty value.To set many fields at once on create — pass the
custom_fieldsarray to the task create/update tools in the Tasks module instead.
Returns: A confirmation string (the endpoint returns an empty body on success).
Examples:
text: params = {"task_id": "9hz", "field_id": "", "value": "In review"}
number: params = {"task_id": "9hz", "field_id": "", "value": 42}
date+time: params = {"task_id": "9hz", "field_id": "", "value": 1667367645000, "value_options": {"time": true}}
drop_down: params = {"task_id": "9hz", "field_id": "", "value": "03efda77-c7a0-42d3-8afd-fd546353c2f5"}
labels: params = {"task_id": "9hz", "field_id": "", "value": ["uuidA", "uuidB"]}
tasks: params = {"task_id": "9hz", "field_id": "", "value": {"add": ["abcd1234"], "rem": []}}
location: params = {"task_id": "9hz", "field_id": "", "value": {"location": {"lat": -28.016, "lng": 153.4}, "formatted_address": "Gold Coast QLD, Australia"}}
custom id: params = {"task_id": "ABC-123", "field_id": "", "value": 42, "custom_task_ids": true, "team_id": "9007200144"}
Error Handling:
400 usually means the value shape does not match the field's type, or the
field is not enabled for the task's custom task type; 404 means the task or
field_id is wrong; if custom_task_ids=true you must also pass team_id.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds extensive behavior beyond annotations: POST method, polymorphic value shape, error handling (400, 404, custom_task_ids requirement), return type (confirmation string), and distinction between labels and tasks/people field types. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections (header, endpoint, value table, usage, return, examples, error handling). Minor redundancy in examples, but overall organized and front-loaded with key purpose. Slightly verbose but efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of polymorphic value shapes and many field types, the description covers all necessary aspects: prerequisites, error handling, parameter dependencies, and output. Output schema exists but description provides sufficient return info ('confirmation string').
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the tool description provides a full value shape table, examples, and parameter relationships (e.g., team_id required when custom_task_ids=true, value_options for date fields). Compensates fully for schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Set a Custom Field's value on a task' and specifies the endpoint. It distinguishes from sibling tools like clickup_remove_custom_field_value and notes when to use alternative tools for bulk operations. The verb and resource are explicitly defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to Use' and 'When NOT to Use' sections, referencing alternatives like clickup_remove_custom_field_value for clearing and task create/update tools for multiple fields. Also mentions prerequisites such as resolving field_id via clickup_get_list_custom_fields.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_start_time_entryA
Start a new, open-ended running timer for the authenticated user.
Calls POST /team/{team_id}/time_entries/start.
When to Use:
Beginning live time tracking on a task right now, with no known end time yet.
When NOT to Use:
To log time you already know the duration/end for — use
clickup_create_time_entryinstead.If a timer may already be running — check first with
clickup_get_running_time_entry(ClickUp allows only one active timer per user).
Returns:
A confirmation string with the new entry's id. Its duration in the API
response is negative while it runs — that is expected, not an error.
Examples: params = {"team_id": "123", "tid": "abc123", "description": "pairing session"}
Error Handling:
400 typically means a timer is already running for this user; stop it
first with clickup_stop_time_entry.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond annotations by disclosing that duration in response is negative while running, that ClickUp allows only one active timer per user, and the 400 error scenario. Annotations (readOnlyHint=false, destructiveHint=false) are consistent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections: summary, endpoint, when to use, when not to use, returns, example, error handling. Front-loaded and no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with complex input (nested object), output schema, and annotations, the description covers purpose, usage, behavior, returns, and error handling. It is fully adequate for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has descriptions for each property, but the description adds a concrete example (params = {team_id: '123', tid: 'abc123', description: 'pairing session'}) which helps understanding. Schema coverage is 0% but schema itself has descriptions, so baseline is 3, and the example adds value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it starts an open-ended running timer for the authenticated user. Differentiates from sibling clickup_create_time_entry by specifying the open-ended nature versus timers with known duration. Also mentions the API endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to Use' (beginning live tracking with no known end) and 'When NOT to Use' (log known duration, check for active timer first with clickup_get_running_time_entry). Also covers error handling (400 indicates timer already running, use clickup_stop_time_entry).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_stop_time_entryAIdempotent
Stop the authenticated user's currently running timer.
Calls POST /team/{team_id}/time_entries/stop.
When to Use:
Ending live time tracking started via
clickup_start_time_entry.
When NOT to Use:
To delete the entry outright — use
clickup_delete_time_entryafter stopping it, if that's the intent.
Returns:
A confirmation string with the now-finished entry's detail (its
duration becomes positive once stopped), or a plain message if nothing
was running.
Examples: params = {"team_id": "123"}
Error Handling: 400 typically means no timer was running for this user.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint=true and readOnlyHint=false, but the description adds value by explaining the return value (confirmation string with updated duration) and error handling (400 when no timer running). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (action, endpoint, use cases, not-to-use, returns, example, error handling). It is concise with no redundant sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter) and the presence of an output schema, the description covers behavior, error handling, and usage context completely. It addresses both successful and error scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the team_id parameter. The description adds a usage example (`params = {"team_id": "123"}`) which clarifies the parameter format and defaults. Schema coverage is 0% in description text, but the example compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Stop the authenticated user's currently running timer.' This is a specific verb+resource action, and it effectively distinguishes from sibling tools like clickup_start_time_entry and clickup_delete_time_entry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'When to Use' and 'When NOT to Use' sections, referencing the related tool clickup_start_time_entry and clickup_delete_time_entry. This provides clear guidance on when to invoke this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_update_chat_channelAIdempotent
Update a Chat channel's name, description, topic, visibility, or location.
Send only the fields you want to change (at least one is required). Text is
interpreted per content_format — text/md (default) or text/plain. To
re-bind the channel to another Space/Folder/List, pass location_id and
location_type together.
When to Use:
To rename a channel, update its topic/description, or toggle visibility.
When NOT to Use:
To delete a channel — use
clickup_delete_chat_channel.
Returns: A confirmation listing the fields that were updated.
Examples:
params = {"channel_id": "6-901300-8", "topic": "Sprint 42"}
params = {"channel_id": "6-901300-8", "visibility": "PRIVATE"}
Error Handling:
400 → bad payload; 404 → channel not found. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and destructiveHint=false. Description adds valuable context: partial update behavior ('send only the fields you want to change'), content_format interpretation, and location rebind requirements (both location_id and location_type needed). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections: functionality, when to use/not use, returns, examples, error handling. Front-loaded with purpose, no wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all important aspects: optional fields, location rebind, content format, return confirmation, error codes. Output schema exists, so return description suffices. Siblings provided for context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description adds meaning beyond schema descriptions: explains partial updates, mutual dependency of location_id and location_type, and content_format effect. However, schema already documents each parameter; description complements but doesn't fully compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it updates a chat channel's attributes (name, description, topic, visibility, location). It distinguishes from sibling clickup_delete_chat_channel, which is explicitly mentioned in 'When NOT to Use'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (rename, update topic/description, toggle visibility) and when not to use (delete, referencing the sibling tool). Provides examples and error handling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_update_chat_messageAIdempotent
Edit a Chat message's content, assignee, or resolved state.
Send only the fields you want to change; resolved is a top-level
body field (not part of post_data).
When to Use:
To fix a message's text, (re)assign it, or mark a post resolved/unresolved.
When NOT to Use:
To remove a message entirely — use
clickup_delete_chat_message.To react to it — use
clickup_add_chat_reaction.
Returns: A confirmation naming the message and the fields changed.
Examples:
params = {"message_id": "abc123", "content": "edited text"}
params = {"message_id": "abc123", "resolved": true}
Error Handling:
404 → unknown message id. Errors return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false, idempotentHint=true, destructiveHint=false. The description adds that it returns a confirmation, handles 404 errors, and that 'resolved' is a top-level body field, complementing annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections, bullet points for use cases, examples, and error handling. Every sentence is informative and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the input schema covers parameters, output schema exists (confirmation), and annotations present, the description is comprehensive: it covers purpose, usage guidelines, examples, and error handling. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema properties already have descriptions (e.g., 'New message body (omit to leave unchanged)'). The description adds little beyond summarizing that only changed fields need to be sent and noting the special handling of 'resolved', but this is minimal added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it edits a Chat message, specifying editable fields (content, assignee, resolved state). It contrasts with sibling tools like delete and react, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections provide clear guidance, naming specific sibling tools (clickup_delete_chat_message, clickup_add_chat_reaction) for alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_update_commentAIdempotent
Edit a comment's text, (re)assign it, or toggle its resolved state.
Calls PUT /comment/{comment_id}. Works uniformly on task, List, Chat-view,
and threaded-reply comments — they all share the same comment_id space.
When to Use:
To fix a typo, add detail, reassign a comment's action item, or mark it resolved once addressed.
When NOT to Use:
To remove a comment entirely — use
clickup_delete_comment.To reply within a thread rather than editing — use
clickup_create_threaded_comment.
Returns:
A confirmation string naming the updated comment, or an Error ... string
on failure.
Examples: params = {"comment_id": "446750", "comment_text": "Resolved — see PR #42.", "resolved": True}
Error Handling: 404 means the comment id is wrong; 403 can mean you don't own the comment and lack edit permission.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses REST API call (PUT /comment/{comment_id}), return type, and error codes (404, 403). Annotations provide readOnlyHint false and destructiveHint false; description adds API details and error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized: overview, API call, usage guidance, return, example, error handling. All sentences are informative and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all necessary aspects: purpose, when/not to use, error handling, return value. An output schema exists, so return description is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already has detailed descriptions for all parameters (e.g., 'comment_id', 'comment_text', 'resolved'). The description example shows usage but doesn't add significant new meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool edits a comment's text, reassigns it, or toggles resolved state. It distinguishes from siblings like clickup_delete_comment and clickup_create_threaded_comment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections with examples and alternatives (e.g., deletion or threaded replies).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_update_folderAIdempotent
Rename a Folder and/or toggle its status-override setting.
Calls PUT /folder/{folder_id}. Setting override_statuses=True moves
this Folder (and Lists inside it, unless a List overrides further) from
inheriting the Space's status workflow to a Folder-level custom one;
this endpoint only flips the flag — inspect the resulting statuses with
clickup_get_folder. Note: the status definitions themselves cannot be
set through the public API (same limitation as Space statuses, verified
live for Spaces) — define custom statuses in the ClickUp UI.
When to Use:
To rename a Folder.
To turn Folder-level status overrides on or off.
When NOT to Use:
To change a single List's statuses — that is scoped to the List/Space tools, not this endpoint.
Returns:
A confirmation string with the Folder's new name, or an Error ... string.
Examples: params = {"folder_id": "456", "name": "Q3 Launches (Renamed)", "override_statuses": True}
Error Handling:
404 means folder_id doesn't exist or isn't accessible; 400 means the
name is missing/invalid.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the endpoint only flips a flag, that status definitions cannot be set via API, and gives a recommendation to inspect results with another tool. This adds significant context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections for use cases, examples, and error handling. Every sentence is informative, and the content is front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the status-override feature, the description adequately explains the behavior, limitations, and error codes. The presence of an output schema means return values are not the description's responsibility, but it still mentions the return format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides clear descriptions for each parameter (100% coverage as seen in the schema). The tool description adds marginal extra context about the status override behavior, but the schema already covers the basic semantics, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool renames a Folder and/or toggles its status-override setting. It names the specific HTTP endpoint and distinguishes from sibling tools by noting that List-level status changes require different tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections are present, with a concrete example and clear guidance to avoid misuse for List-level statuses.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_update_goalAIdempotent
Update an existing Goal's name, due date, description, owners, or color.
Owners are changed incrementally via add_owners/rem_owners rather
than a full replacement list.
When to Use:
Renaming a Goal, pushing its due date, or changing who owns it.
When NOT to Use:
Editing a Key Result's progress — use
clickup_edit_key_result.
Returns: A confirmation string with the Goal's fields after the update.
Examples: params = {"goal_id": "e53a033c-1146-4b58-b498-7ec39b5661c2", "add_owners": [123]}
Error Handling: 404 means the goal_id does not exist; 400 means a field value was rejected (e.g. malformed color or due_date).
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, idempotentHint=true, destructiveHint=false. Description adds incremental owner behavior, return value (confirmation string), and error handling (404, 400). Could mention auth needs or side effects, but sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured: purpose, incremental note, usage guidance, returns, example, error handling. Every section is concise and useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all necessary aspects for a medium-complexity update tool: when to use, alternatives, parameter behavior, return value, error codes. Output schema exists to further detail return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema already provides descriptions for each parameter. Description adds value by explaining that owners are changed incrementally via add_owners/rem_owners, which is not fully captured in schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it updates an existing Goal's fields (name, due date, description, owners, color). Differentiates from clickup_edit_key_result in the 'When NOT to Use' section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit When to Use and When NOT to Use sections with a direct sibling alternative (clickup_edit_key_result). Also notes incremental owner semantics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_update_listAIdempotent
Update a List's name, description, dates, priority, assignee, or color.
Only fields you explicitly set are sent — omitted fields are left
unchanged by ClickUp. Supports markdown_content for a formatted
description (in place of plain content), and unset_status to clear
the List's color designation entirely.
When to Use:
Renaming a List, changing its description, due date, priority, or owner, or changing/clearing its color.
When NOT to Use:
Changing a Task's own status — that is a Task Status, unrelated to a List's color-only
statusfield.
Returns:
A confirmation string with the updated List's name and id, or an
Error ... string.
Examples: params = {"list_id": "901300123456", "name": "Sprint 25"} params = {"list_id": "901300123456", "markdown_content": "## Updated scope", "priority": 1} params = {"list_id": "901300123456", "unset_status": True}
Error Handling: 404 means list_id does not exist; 400 usually means an invalid field value (e.g. an out-of-range priority).
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that only explicitly set fields are sent, leaving others unchanged (idempotent behavior). Mentions support for 'markdown_content' and 'unset_status', and describes the return format (confirmation string or error). Annotations already indicate readOnlyHint=false and destructiveHint=false, which the description reinforces and adds detail. However, does not explicitly state that the schema is non-exhaustive (openWorldHint=true), though that is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections: main purpose, usage guidelines, return type, three concrete examples, and error handling. Every sentence provides value without redundancy. Front-loaded with the most important information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the main modifiable fields, provides examples, and handles errors. Given the tool complexity (many optional fields) and the presence of an output schema (not shown), the description is sufficient but could optionally mention that only the listed fields are modifiable and that others (e.g., metadata) are not controlled here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already contains descriptions for each field, so the description's value is in contextual grouping (e.g., 'markdown_content' as an alternative to 'content', 'unset_status' to clear color) and practical hints like using Unix epoch for due_date. This adds useful guidance beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Update a List's name, description, dates, priority, assignee, or color,' clearly specifying the verb (Update) and resource (List) with the set of modifiable attributes. This distinguishes it from sibling tools like create_list (creation), get_list (read-only), and delete_list (deletion).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes dedicated 'When to Use' and 'When NOT to Use' sections. Explicitly states use cases (renaming, changing description, etc.) and excludes unrelated operations like changing a Task's status. Also clarifies that the 'status' field is just a color, preventing confusion with task statuses.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_update_privacy_and_accessAIdempotent
Set the privacy of an object and grant/revoke user or group access (Enterprise).
Flips an object private/public and/or edits its ACL. Each entries item sets
a permission level for a user or group: 1=read, 3=comment, 4=edit, 5=create,
or null to remove that principal's access. Works across ClickUp object types
(task, list, folder, space, doc, dashboard, view, goal, …) via the
object_type/object_id pair.
Note: Enterprise plan only — returns 403 on other plans. Sharing an item may incur seat/billing charges.
When to Use:
To make a List private and grant a group edit access.
To revoke a user's access to a Doc (
permission_level: null).
When NOT to Use:
To invite someone to the whole Workspace — use the guests/users tools.
Returns: A confirmation of the privacy change and each access entry applied.
Examples:
params = {"object_type": "list", "object_id": "901300", "private": true, "entries": [{"kind": "group", "id": "88", "permission_level": 4}]}
params = {"object_type": "doc", "object_id": "8cb", "entries": [{"kind": "user", "id": "182", "permission_level": null}]}
Error Handling:
403 → not Enterprise or insufficient rights; 404 → unknown object. Errors
return an Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=false, destructiveHint=false), the description discloses Enterprise-only restriction (403), billing implications, permission level mapping (1=read, 3=comment, etc.), and error handling (403/404). This adds significant behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized into sections (main, when to use, when not, returns, examples, error handling), front-loads core purpose, and every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with nested ACL entries and privacy toggle, the description covers plan restrictions, billing, error codes, supported object types, and provides examples. Output schema exists, so return values are not needed. The description is comprehensive for agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage (by context signals), the description explains the entries structure, permission level mapping, and null usage for removal. It provides two examples illustrating parameter combinations. However, workspace_id default behavior is not mentioned, and schema already has descriptions for some fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets privacy and grants/revokes access, with specific verb 'Set' and resource 'privacy of an object and grant/revoke user or group access'. It lists supported object types, distinguishing from sibling tools like workspace invitation tools via the 'When NOT to Use' section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections provide concrete examples (e.g., making a List private, revoking access) and direct the agent to alternative tools (guests/users tools) for workspace invitations, making usage boundaries very clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_update_spaceAIdempotent
Rename a Space, change its color/privacy, or toggle its ClickApp features.
Only fields you set are sent — omitted fields are left unchanged
server-side. Note: custom status workflows CANNOT be changed through the
public API (a statuses payload is silently ignored — verified live);
manage statuses in the ClickUp UI.
When to Use:
Renaming a Space or toggling ClickApps (due dates, time tracking, tags, …).
Making a Space private, or (Enterprise) setting
admin_can_manage.
When NOT to Use:
To change a Folder's or List's own status override (use the folders/lists tools).
To delete a Space (use
clickup_delete_space).To edit custom statuses — the public API cannot; do it in the ClickUp UI.
Returns:
A one-line confirmation naming the Space and which fields changed, or an Error ... string.
Examples: params = { "space_id": "90130012345", "name": "Engineering (EU)", "features": {"time_tracking": {"enabled": True}}, }
Error Handling: 400 means a malformed features payload; 404 means space_id is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behaviors beyond annotations: note about custom status workflows being silently ignored (verified live), and that only set fields are sent (omitted fields unchanged). Annotations already indicate readOnlyHint=false, destructiveHint=false, idempotentHint=true, and description adds valuable context without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with sections (main purpose, When to Use, When NOT to Use, Returns, Examples, Error Handling). It is slightly verbose but every sentence adds value. Front-loading the core purpose helps quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema (not shown), the description does not need to detail return values, but it still mentions the return format (one-line confirmation or error string). It covers error codes (400, 404) and provides a realistic example. This is complete for a mutation tool with nested features.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% (the description does not repeat schema parameter docs), but the description adds meaning by explaining how parameters are used (e.g., features toggles ClickApps, admin_can_manage is Enterprise-only, multiple_assignees is a boolean). The example demonstrates a typical parameter combination. While not exhaustive, it compensates adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states actions: 'Rename a Space, change its color/privacy, or toggle its ClickApp features.' It uses specific verbs and clearly identifies the resource (Space). It distinguishes from sibling tools like clickup_delete_space and folders/lists tools, ensuring the agent understands this tool's unique scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear 'When to Use' and 'When NOT to Use' sections, listing specific scenarios and alternative tools (e.g., 'use clickup_delete_space' for deletion, 'use the folders/lists tools' for status overrides). This guidance helps the agent select the correct tool and avoid misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_update_taskAIdempotent
Update fields on an existing task.
Calls PUT /task/{task_id}. Change the name, description (plain or markdown),
status, priority, dates, time estimate, points, parent, or archived flag. Add
or remove assignees and group assignees incrementally via the
add_assignees / remove_assignees (and group equivalents) lists — ClickUp
sends these as {"assignees": {"add": [...], "rem": [...]}}.
When to Use:
To edit an existing task or (re)assign people.
When NOT to Use:
To create a task — use
clickup_create_task.To move a task to a different List — use
clickup_move_task.For a single custom-field write,
clickup_set_custom_field_valueis more reliable than thecustom_fieldsbody here.
Returns: A confirmation string naming the task and the fields that changed.
Examples:
Reassign:
params = {"task_id": "86cxy1", "add_assignees": [123], "remove_assignees": [456]}Retitle + close:
params = {"task_id": "86cxy1", "name": "New title", "status": "complete"}
Error Handling: 400 often means an unknown status name; 404 means the task id is wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-readOnly non-destructive idempotent. Description adds that assignees are changed incrementally via add/remove lists, mentions the PUT endpoint, and lists common error codes. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections for usage, returns, examples, and errors. A few extra details but no wasted sentences. Could be slightly more concise but remains clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complex input schema, output schema availability, and annotations, the description covers usage guidance, error handling, and key behavioral quirks. Lacks explicit mention of rate limits or authentication, but those are implied by ClickUp context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has descriptions for all parameters. Description explains assignee additive behavior beyond schema, points out custom_fields reliability issue, and provides usage examples. Adds value despite not covering every parameter individually.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update fields on an existing task' and lists specific fields like name, description, status, etc. It distinguishes from sibling tools by explicitly naming when to use create_task, move_task, and set_custom_field_value instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to Use' and 'When NOT to Use' sections with clear alternatives: create_task for creation, move_task for moving list, and set_custom_field_value for single custom-field writes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_update_time_entryAIdempotent
Edit an existing time entry's description, tags, times, task, or billable flag.
Calls PUT /team/{team_id}/time_entries/{time_entry_id}.
When to Use:
Correcting a logged entry's start/end, re-tagging it, or reassociating it with a different task.
When NOT to Use:
To manage tags across the whole Workspace (rename/remove the tag itself) — use
clickup_rename_time_entry_tag/clickup_remove_time_entry_tagsinstead; this tool only changes which tags are on this entry.To stop a running timer — use
clickup_stop_time_entry.
Returns: A confirmation string, including the updated entry's detail when the API returns one.
Examples: params = {"team_id": "123", "time_entry_id": "abc", "tags": [{"name": "billing"}], "tag_action": "add"} params = {"team_id": "123", "time_entry_id": "abc", "start": 1700000000000, "end": 1700003600000}
Error Handling:
400 means start/end were given without their pair, or more than one
tag action was implied; 404 means the time_entry_id doesn't exist.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes the API call, return type (confirmation string), and error handling (400, 404). Complements annotations: non-destructive, idempotent update operation. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections: purpose, when to use/not, returns, examples, error handling. Every sentence adds value; no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers usage boundaries, error cases, and examples comprehensively. The output schema exists but is not needed due to the clear return description. Fully adequate for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds value beyond schema by showing example usage patterns and clarifying constraints like start/end pairing and tag_action rules. Schema already includes descriptions for most parameters, but the description provides real usage context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Edit an existing time entry's description, tags, times, task, or billable flag.' Specific verb and resource, and distinguishes from siblings by naming alternatives for tag management and timer stopping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists when to use (correcting logged entries) and when NOT to use, referencing sibling tools clickup_rename_time_entry_tag, clickup_remove_time_entry_tags, and clickup_stop_time_entry.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_update_time_estimates_by_userAIdempotent
Set or adjust specific assignees' time estimates on a task, leaving others unchanged.
Calls PATCH /v3/workspaces/{team_id}/tasks/{task_id}/time_estimates_by_user.
Note: Business Plan and above only — returns 400 if the Workspace isn't
entitled to per-assignee time estimates.
When to Use:
Tweaking one or two assignees' estimates without disturbing the rest of the breakdown.
When NOT to Use:
To wipe and fully re-specify the whole breakdown — use
clickup_replace_time_estimates_by_user.
Returns: A confirmation string with the new total estimate and the per-assignee breakdown that changed.
Examples: params = {"team_id": "123", "task_id": "abc123", "estimates": [{"assignee": 300001, "time": 5400000}]}
Error Handling:
400 means a payload/entitlement problem; 404 means the task doesn't
exist, or an assignee isn't currently assigned to it.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false. The description adds business plan requirement, error handling (400, 404), and that it is an update operation, which aligns with annotations and provides additional useful detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with one-line summary, endpoint, usage guidelines, returns, example, and error handling. Every sentence adds value and it is front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all essential aspects: purpose, differentiation from sibling, prerequisites (business plan), error cases, example usage, and return value. No gaps given the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides good parameter descriptions (e.g., estimates notes difference from replace tool). The description adds an example call and explains the return value, complementing the schema well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it sets or adjusts specific assignees' time estimates on a task, leaving others unchanged. It also differentiates from the sibling tool clickup_replace_time_estimates_by_user.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use ('Tweaking one or two assignees' estimates') and when not to use with an alternative tool mentioned, giving clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_update_user_groupAIdempotent
Rename a User Group and/or add/remove its members.
Calls PUT /group/{group_id} (ClickUp's endpoint slug is updateteam,
but group_id here addresses a User Group, never a Workspace —
do not pass a team_id in this field). Member changes use ClickUp's
{"add": [...], "rem": [...]} shape nested under members; name and
handle are replaced wholesale when provided.
When to Use:
To rename a group, change its @mention handle, or add/remove members without deleting and recreating the group.
When NOT to Use:
To create a brand-new group, use
clickup_create_user_group.To remove the group entirely, use
clickup_delete_user_group.
Returns: A confirmation string with the updated group's name, group_id, and resulting member count.
Examples: params = {"group_id": "4bfdfcec-6f4f-40a7-b0d6-22660d51870d", "name": "QA Team"} params = { "group_id": "4bfdfcec-6f4f-40a7-b0d6-22660d51870d", "add_member_ids": [123456], "remove_member_ids": [159753], }
Error Handling: 404 if group_id doesn't exist; 403 if the token lacks permission. Note: adding a view-only guest to a group can convert them to a paid guest (billing impact) — ClickUp's own docs warn about this.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint false, destructiveHint false, idempotentHint true), the description discloses endpoint details, member update shape, error codes (404, 403), and a billing warning for adding view-only guests. This adds significant behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections (purpose, when to use, when not to use, returns, examples, error handling). Every sentence adds value; no filler. It is front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (rename, handle, add/remove members, error handling, billing impact), the description covers all essential aspects. It references sibling tools and provides an output description. Nothing is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage for the top-level parameter, the description explains the meaning of group_id (not a team_id), clarifies how add_member_ids and remove_member_ids work via examples, and provides usage context beyond the schema's property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Rename a User Group and/or add/remove its members', providing a specific verb and resource. It differentiates from sibling tools like clickup_create_user_group and clickup_delete_user_group by outlining when to use and when not to use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes clear 'When to Use' and 'When NOT to Use' sections, explicitly naming alternatives (clickup_create_user_group, clickup_delete_user_group) and providing context for when this tool should be chosen.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_update_viewAIdempotent
Rename a view and/or replace its grouping/sorting/filters/columns/settings.
ClickUp's PUT /view/{view_id} replaces the entire view body — there is
no partial-update semantics. Call clickup_get_view first and use its
JSON config block as the starting point for every field this tool
exposes (including parent_id/parent_type), so unrelated config is not
silently reset to empty.
When to Use:
Renaming a view, or changing its grouping/sorting/filters/columns/settings.
When NOT to Use:
Moving a view to a different Space/Folder/List — ClickUp views cannot change Hierarchy level; delete and recreate instead (
clickup_delete_viewthe matching
clickup_create_*_view).
Returns:
A confirmation string with the updated view's id/name, or an
Error ... string.
Examples: params = { "view_id": "abc123", "name": "Sprint Board (renamed)", "type": "board", "parent_id": "901", "parent_type": 6, "grouping": {"field": "assignee"}, }
Error Handling: 404 means the view id is wrong; 400 usually means a malformed grouping/filters/sorting/columns/settings block.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the replacement semantics (no partial update) and error codes (404, 400). Annotations already indicate idempotent and non-destructive, but the description adds important context about the full-replacement behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections: introductory sentence, behavior note, usage guidelines, return value, example, and error handling. No wasted words, front-loaded with core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers key behavioral aspects (full replacement), prerequisites (call get_view), pitfalls (no hierarchy change), return type, and error handling. Output schema exists so return details are handled. Complete for agent usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While the input schema has detailed descriptions, the description adds value by explaining the need to resupply parent_id/parent_type and config blocks from get_view. It clarifies the full-replacement requirement beyond the schema's field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool renames a view and replaces its grouping/sorting/filters/columns/settings. It distinguishes from siblings like clickup_create_view and clickup_delete_view by specifying the update action and noting the API's full-replacement behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections. It advises using clickup_get_view first and warns against trying to move a view across hierarchy levels, directing to delete/recreate instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickup_update_webhookAIdempotent
Change a webhook's endpoint, event subscription, or delivery status.
Update any combination of the destination endpoint, the events list, and
the status. Setting status='active' re-enables a webhook ClickUp
suspended after repeated delivery failures. ClickUp treats these fields as a
full replacement, so to preserve the current endpoint/events while flipping
status, re-supply them (read the current values from clickup_get_webhooks).
When to Use:
To re-point a webhook at a new URL, or to broaden/narrow its events.
To reactivate a hook that stopped firing (
status='active').
When NOT to Use:
To register a brand-new webhook — use
clickup_create_webhook.To remove a webhook entirely — use
clickup_delete_webhook.
Returns: A confirmation naming the webhook id and the fields that changed.
Examples:
params = {"webhook_id": "e50...", "status": "active"}
params = {"webhook_id": "e50...", "endpoint": "https://x.io/hook2", "events": ["*"]}
Error Handling:
400 → invalid endpoint/event; 404 → unknown webhook id. Errors return an
Error ... string.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (non-read-only, idempotent, non-destructive), description reveals full replacement semantics, re-enable behavior for suspended webhooks, and error handling (400/404). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections for purpose, usage, returns, examples, and error handling. Every sentence is informative; no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers return format ('confirmation naming webhook id and changed fields'), error cases, prerequisites (use get_webhooks to read current values), and examples. Output schema exists but description still provides clarity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already describes parameters (events, status, endpoint, webhook_id). Description adds value by explaining replacement behavior and need to re-supply unchanged fields, though examples and prose reinforce schema info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Change a webhook's endpoint, event subscription, or delivery status' with specific verb and resource. Differentiates from siblings by naming clickup_create_webhook and clickup_delete_webhook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to Use' and 'When NOT to Use' sections with specific scenarios like re-pointing a webhook or reactivating a suspended one. Provides alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
166 tool updates
v0.1.1- First observed
clickup_add_chat_reaction - First observed
clickup_add_dependency - First observed
clickup_add_guest_to_folder - First observed
clickup_add_guest_to_list - First observed
clickup_add_guest_to_task - First observed
clickup_add_tag_to_task - First observed
clickup_add_task_link - First observed
clickup_add_task_to_list - First observed
clickup_add_time_entry_tags - First observed
clickup_create_chat_channel - First observed
clickup_create_chat_view_comment - First observed
clickup_create_checklist - First observed
clickup_create_checklist_item - First observed
clickup_create_direct_message - First observed
clickup_create_doc - First observed
clickup_create_entity_attachment - First observed
clickup_create_folder - First observed
clickup_create_folder_from_template - First observed
clickup_create_folder_view - First observed
clickup_create_folderless_list - First observed
clickup_create_goal - First observed
clickup_create_key_result - First observed
clickup_create_list - First observed
clickup_create_list_comment - First observed
clickup_create_list_from_template_in_folder - First observed
clickup_create_list_from_template_in_space - First observed
clickup_create_list_view - First observed
clickup_create_location_chat_channel - First observed
clickup_create_page - First observed
clickup_create_space - First observed
clickup_create_space_tag - First observed
clickup_create_space_view - First observed
clickup_create_task - First observed
clickup_create_task_attachment - First observed
clickup_create_task_comment - First observed
clickup_create_task_from_template - First observed
clickup_create_team_view - First observed
clickup_create_threaded_comment - First observed
clickup_create_time_entry - First observed
clickup_create_user_group - First observed
clickup_create_webhook - First observed
clickup_delete_chat_channel - First observed
clickup_delete_chat_message - First observed
clickup_delete_chat_reaction - First observed
clickup_delete_checklist - First observed
clickup_delete_checklist_item - First observed
clickup_delete_comment - First observed
clickup_delete_dependency - First observed
clickup_delete_folder - First observed
clickup_delete_goal - First observed
clickup_delete_key_result - First observed
clickup_delete_list - First observed
clickup_delete_space - First observed
clickup_delete_space_tag - First observed
clickup_delete_task - First observed
clickup_delete_task_link - First observed
clickup_delete_time_entry - First observed
clickup_delete_user_group - First observed
clickup_delete_view - First observed
clickup_delete_webhook - First observed
clickup_edit_checklist - First observed
clickup_edit_checklist_item - First observed
clickup_edit_guest_on_workspace - First observed
clickup_edit_key_result - First observed
clickup_edit_page - First observed
clickup_edit_space_tag - First observed
clickup_edit_user_on_workspace - First observed
clickup_get_bulk_tasks_time_in_status - First observed
clickup_get_chat_channel - First observed
clickup_get_chat_channel_followers - First observed
clickup_get_chat_channel_members - First observed
clickup_get_chat_channels - First observed
clickup_get_chat_message_reactions - First observed
clickup_get_chat_message_replies - First observed
clickup_get_chat_message_tagged_users - First observed
clickup_get_chat_messages - First observed
clickup_get_chat_subtypes - First observed
clickup_get_chat_view_comments - First observed
clickup_get_custom_roles - First observed
clickup_get_custom_task_types - First observed
clickup_get_doc - First observed
clickup_get_doc_page_listing - First observed
clickup_get_doc_pages - First observed
clickup_get_entity_attachments - First observed
clickup_get_filtered_team_tasks - First observed
clickup_get_folder - First observed
clickup_get_folder_custom_fields - First observed
clickup_get_folder_templates - First observed
clickup_get_folder_views - First observed
clickup_get_folderless_lists - First observed
clickup_get_folders - First observed
clickup_get_goal - First observed
clickup_get_goals - First observed
clickup_get_guest - First observed
clickup_get_list - First observed
clickup_get_list_comments - First observed
clickup_get_list_custom_fields - First observed
clickup_get_list_members - First observed
clickup_get_list_templates - First observed
clickup_get_list_views - First observed
clickup_get_lists - First observed
clickup_get_page - First observed
clickup_get_running_time_entry - First observed
clickup_get_shared_hierarchy - First observed
clickup_get_space - First observed
clickup_get_space_custom_fields - First observed
clickup_get_space_tags - First observed
clickup_get_space_views - First observed
clickup_get_spaces - First observed
clickup_get_task - First observed
clickup_get_task_comments - First observed
clickup_get_task_members - First observed
clickup_get_task_templates - First observed
clickup_get_task_time_in_status - First observed
clickup_get_tasks - First observed
clickup_get_team_custom_fields - First observed
clickup_get_team_views - First observed
clickup_get_threaded_comments - First observed
clickup_get_time_entries - First observed
clickup_get_time_entry - First observed
clickup_get_time_entry_history - First observed
clickup_get_time_entry_tags - First observed
clickup_get_user - First observed
clickup_get_user_groups - First observed
clickup_get_view - First observed
clickup_get_view_tasks - First observed
clickup_get_webhooks - First observed
clickup_get_workspace_plan - First observed
clickup_get_workspace_seats - First observed
clickup_health_check - First observed
clickup_invite_guest_to_workspace - First observed
clickup_invite_user_to_workspace - First observed
clickup_merge_tasks - First observed
clickup_move_task - First observed
clickup_query_audit_logs - First observed
clickup_remove_custom_field_value - First observed
clickup_remove_guest_from_folder - First observed
clickup_remove_guest_from_list - First observed
clickup_remove_guest_from_task - First observed
clickup_remove_guest_from_workspace - First observed
clickup_remove_tag_from_task - First observed
clickup_remove_task_from_list - First observed
clickup_remove_time_entry_tags - First observed
clickup_remove_user_from_workspace - First observed
clickup_rename_time_entry_tag - First observed
clickup_replace_time_estimates_by_user - First observed
clickup_search_docs - First observed
clickup_send_chat_message - First observed
clickup_send_chat_reply - First observed
clickup_set_custom_field_value - First observed
clickup_start_time_entry - First observed
clickup_stop_time_entry - First observed
clickup_update_chat_channel - First observed
clickup_update_chat_message - First observed
clickup_update_comment - First observed
clickup_update_folder - First observed
clickup_update_goal - First observed
clickup_update_list - First observed
clickup_update_privacy_and_access - First observed
clickup_update_space - First observed
clickup_update_task - First observed
clickup_update_time_entry - First observed
clickup_update_time_estimates_by_user - First observed
clickup_update_user_group - First observed
clickup_update_view - First observed
clickup_update_webhook
TDQS
Tools follow a clear verb_noun pattern and descriptions explicitly state when to use and when not to use alternative tools. While there are many similar operations (e.g., multiple add_guest tools), the documentation makes them distinguishable.
Nearly all tools use the clickup_verb_noun format consistently. Minor variations like 'edit' vs 'update' exist but are predictable and follow the same pattern.
With 166 tools, the server is massively over-scoped. It covers nearly every ClickUp API endpoint, far exceeding the typical 3-15 tool range. This makes it unwieldy for agents and hard to navigate.
The tool set covers the full range of ClickUp entities and actions: tasks, lists, folders, spaces, docs, chat, time tracking, goals, custom fields, webhooks, etc. There are no obvious gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
- mcpOAuthnet.todoist
Official Todoist MCP server for AI assistants to manage tasks, projects, and workflows.
Marketo MCP server for AI. 130 tools to operate Marketo from Claude, Cursor, or ChatGPT.
Related MCP Servers
- AlicenseBqualityBmaintenanceLightweight ClickUp MCP server for task management with 37 tools and token-optimized responses to reduce API verbosity.37643MIT
- AlicenseNot gradedqualityBmaintenanceA self-hosted MCP server that enables AI agents to directly interact with your ClickUp workspace, including tasks, lists, folders, comments, time tracking, and more via 51 tools over SSE.143MIT
- AlicenseBqualityBmaintenanceA Model Context Protocol (MCP) server providing AI assistants with comprehensive ClickUp integration, covering the full API surface across 87 consolidated tools.87143MIT
- FlicenseNot gradedqualityDmaintenanceComplete Model Context Protocol server for ClickUp, enabling interaction with tasks, spaces, lists, docs, goals, time tracking, and more through 93 tools and 18 React MCP apps.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/trustxai/clickup-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server