Skip to main content
Glama

plane-ce-mcp

Unofficial MCP server for self-hosted Plane (Community Edition).

A Model Context Protocol server exposing Plane's project management API as MCP tools, built for people who run Plane themselves. Based on makeplane/plane-mcp-server (MIT). Not affiliated with Plane / makeplane.

Why this exists

The upstream server targets Plane Cloud. Run it against a self-hosted Community Edition instance and you hit missing "lite" endpoints, raw SDK stack traces on every 404, and no pages support. This project fixes what upstream didn't:

  • Central compatibility layer (plane_mcp/compat.py): every Plane API error becomes an actionable message - missing endpoint vs missing resource vs auth vs timeout. No raw SDK exceptions reach the MCP client.

  • Transparent endpoint fallbacks: lite endpoints absent on CE fall back to the full endpoints (projects, cycles, modules, project/workspace members), with the fallback logged for diagnosability.

  • PAT-only HTTP mode: the HTTP transport runs without any OAuth configuration - header auth alone (/http/api-key/mcp).

  • Pages tools on CE: list/retrieve/search/create pages via Plane's internal API (CE has no public pages API), with content truncation for LLM-sized outputs.

  • Documented CE vs Cloud differences: docs/plane-api-compat.md.

May still work against Plane Cloud - untested, unmaintained, not a goal.

Related MCP server: plane-mcp-server

Quick start

Requirements: Python 3.10+ and uv. No clone, no install - uvx runs the server straight from GitHub.

1. Get your credentials from Plane:

  • API key: Plane → Workspace Settings → API tokens → create token

  • Workspace slug: the part of your Plane URL after the host (https://plane.your-domain.tld/<slug>/)

2. Smoke-test the server (optional, confirms connectivity):

PLANE_API_KEY=<your-api-key> \
PLANE_WORKSPACE_SLUG=<your-workspace-slug> \
PLANE_BASE_URL=https://plane.your-domain.tld \
uvx --from git+https://github.com/Bl4nk44/plane-ce-mcp plane-ce-mcp stdio

Server starts and waits for MCP messages on stdin - Ctrl+C to exit. Errors at this point mean wrong URL or key, not a client problem.

3. Add to your MCP client (Claude Code, Claude Desktop, Cursor, ...):

{
  "mcpServers": {
    "plane": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/Bl4nk44/plane-ce-mcp", "plane-ce-mcp", "stdio"],
      "env": {
        "PLANE_API_KEY": "<your-api-key>",
        "PLANE_WORKSPACE_SLUG": "<your-workspace-slug>",
        "PLANE_BASE_URL": "https://plane.your-domain.tld"
      }
    }
  }
}

For Claude Code that's one command:

claude mcp add plane \
  -e PLANE_API_KEY=<your-api-key> \
  -e PLANE_WORKSPACE_SLUG=<your-workspace-slug> \
  -e PLANE_BASE_URL=https://plane.your-domain.tld \
  -- uvx --from git+https://github.com/Bl4nk44/plane-ce-mcp plane-ce-mcp stdio

PLANE_BASE_URL must point at your instance's API - the default is Plane Cloud (https://api.plane.so), so self-host setups must set it.

Run from source

git clone https://github.com/Bl4nk44/plane-ce-mcp.git
cd plane-ce-mcp
uv pip install -e .
PLANE_API_KEY=... PLANE_WORKSPACE_SLUG=... PLANE_BASE_URL=... python -m plane_mcp stdio

HTTP transport (self-hosted, PAT auth)

Run the server next to your Plane instance (port 8211):

PLANE_BASE_URL=https://plane.your-domain.tld python -m plane_mcp http

Connect with a Personal Access Token - no OAuth setup required:

URL: http://<server>:8211/http/api-key/mcp

Headers:

  • Authorization: Bearer <PAT_TOKEN> (or x-api-key: <PAT_TOKEN>)

  • X-Workspace-slug: <SLUG>

{
  "mcpServers": {
    "plane": {
      "command": "npx",
      "args": ["mcp-remote@latest", "http://<server>:8211/http/api-key/mcp"],
      "headers": {
        "Authorization": "Bearer <PAT_TOKEN>",
        "X-Workspace-slug": "<SLUG>"
      }
    }
  }
}

An OAuth endpoint (/oauth/mcp) and a legacy SSE transport also exist for setups with a configured Plane OAuth app - see Configuration. Deployment recipes (Docker Compose, Caddy, Tailscale) live in deploy/ and docs/tailscale-deployment.md.

Configuration

Variable

Required for

Purpose

PLANE_BASE_URL

all (self-host: required)

Your Plane API URL (default: https://api.plane.so = Cloud)

PLANE_API_KEY

stdio

API key (workspace settings → API tokens)

PLANE_WORKSPACE_SLUG

stdio

Target workspace

PLANE_INTERNAL_BASE_URL

http/sse (optional)

Internal URL for server-to-server calls (e.g. http://plane-api:8000 inside Docker)

PLANE_INTERNAL_API_EMAIL / PLANE_INTERNAL_API_PASSWORD

pages tools

Plane account used by the internal-API adapter (CE has no public pages API); the account needs membership in the relevant projects

PLANE_TOOLSETS

optional (default: all)

Comma-separated tool groups to register: core,comments,pages,types,planning,admin,pql (or all). Loads fewer tool definitions into the client's context - e.g. core is the daily-driver set (~64 tools vs ~142). Call list_toolsets to see active/available groups.

PLANE_MAX_RESPONSE_KB

optional (default: 1024)

Size cap for list_work_items / list_archived_work_items responses. Over the limit the tool returns an actionable error instead of the payload, to protect the client's context window. 0 disables.

PLANE_MAX_RETRIES

optional (default: 2)

Retries after the first attempt for transient Plane API failures (429/503 for any call; 502/504/timeouts for read-only calls only, to avoid duplicate writes). 0 disables.

PLANE_RETRY_BASE_DELAY

optional (default: 0.5)

Base seconds for exponential backoff with jitter between retries (capped at 10s).

PLANE_PAGES_MAX_CONTENT_LENGTH

optional

Default truncation for retrieve_page content

REDIS_HOST / REDIS_PORT

http/sse (optional)

Token storage (falls back to in-memory)

PLANE_OAUTH_PROVIDER_*

http/sse OAuth only

OAuth client credentials and base URL

PLANE_OAUTH_ALLOWED_REDIRECT_URIS

http/sse OAuth (optional)

Comma-separated redirect URI patterns appended to the built-in allowlist

LOG_USER_INFO

optional (default: false)

When true, include user display name (PII) in logs alongside the opaque user id

LOG_PAYLOADS

optional (default: false)

When true, include tool-call payloads (may contain PII / full descriptions) in structured logs. Off by default; enable only for debugging.

Logging

The server emits structured JSON logs. Each tool call is logged with its tool name, duration, status, and (when available) the opaque user id and workspace slug. Endpoint fallbacks are logged when they trigger (which endpoint failed, which was used instead), so CE quirks are diagnosable from logs.

Health check

In HTTP mode the server exposes an unauthenticated GET /healthz returning {"status": "ok", "server_version": ...}. It reports the server's own liveness and does not call Plane, so a Plane outage never marks the MCP server unhealthy. The Docker image ships a HEALTHCHECK against it.

Available Tools

All tools use Pydantic models from the Plane SDK for type safety and validation.

Projects

Tool Name

Description

list_projects

List all projects in a workspace with optional pagination and filtering

create_project

Create a new project with name, identifier, and optional configuration

retrieve_project

Retrieve a project by ID

update_project

Update a project with partial data

delete_project

Delete a project by ID

get_project_worklog_summary

Get work log summary for a project

get_project_members

Get all members of a project

update_project_features

Update features configuration of a project

manage_project_archive

Archive or unarchive a project

Work Items

Tool Name

Description

list_work_items

List all work items in a project with optional filtering and pagination

create_work_item

Create a new work item with name, assignees, labels, and other attributes

retrieve_work_item

Retrieve a work item by ID with optional field expansion

retrieve_work_item_by_identifier

Retrieve a work item by project identifier and issue sequence number

update_work_item

Update a work item with partial data

delete_work_item

Delete a work item by ID

search_work_items

Search work items across a workspace with query string

count_work_items

Count work items across the workspace with optional grouping

list_archived_work_items

List archived work items in a project with optional PQL filtering

manage_work_item_archive

Archive or unarchive a work item

manage_work_item_assignee

Add or remove a single assignee without replacing the full list

manage_work_item_label

Add or remove a single label without replacing the full list

Cycles

Tool Name

Description

list_cycles

List cycles in a project (set archived=true for archived)

create_cycle

Create a new cycle with name, dates, and owner

retrieve_cycle

Retrieve a cycle by ID

update_cycle

Update a cycle with partial data

delete_cycle

Delete a cycle by ID

manage_cycle_work_items

Add and/or remove work items on a cycle

list_cycle_work_items

List work items in a cycle

transfer_cycle_work_items

Transfer work items from one cycle to another

manage_cycle_archive

Archive or unarchive a cycle

complete_cycle

Complete (close) a cycle by setting its end date to today

Modules

Tool Name

Description

list_modules

List modules in a project (set archived=true for archived)

create_module

Create a new module with name, dates, status, and members

retrieve_module

Retrieve a module by ID

update_module

Update a module with partial data

delete_module

Delete a module by ID

manage_module_work_items

Add and/or remove work items on a module

list_module_work_items

List work items in a module

manage_module_archive

Archive or unarchive a module

Initiatives

Tool Name

Description

list_initiatives

List all initiatives in a workspace

create_initiative

Create a new initiative with name, dates, state, and lead

retrieve_initiative

Retrieve an initiative by ID

update_initiative

Update an initiative with partial data

delete_initiative

Delete an initiative by ID

list_initiative_projects

List projects linked to an initiative

manage_initiative_projects

Link or unlink projects of an initiative

Intake Work Items

Tool Name

Description

list_intake_work_items

List all intake work items in a project with optional pagination

create_intake_work_item

Create a new intake work item in a project

retrieve_intake_work_item

Retrieve an intake work item by work item ID with optional field expansion

update_intake_work_item

Update an intake work item with partial data

delete_intake_work_item

Delete an intake work item by work item ID

Work Item Properties

Tool Name

Description

list_work_item_properties

List work item properties for a work item type

create_work_item_property

Create a new work item property with type, settings, and validation rules

retrieve_work_item_property

Retrieve a work item property by ID

update_work_item_property

Update a work item property with partial data

delete_work_item_property

Delete a work item property by ID

list_work_item_property_options

List options for a work item property

create_work_item_property_option

Create an option on a work item property

retrieve_work_item_property_option

Retrieve a single option from a work item property

update_work_item_property_option

Update an option on a work item property

delete_work_item_property_option

Delete an option from a work item property

get_work_item_property_value

Get the value(s) of a custom property on a work item

set_work_item_property_value

Set (create or update) the value of a custom property on a work item

delete_work_item_property_value

Delete the value(s) of a custom property on a work item

Milestones

Tool Name

Description

list_milestones

List all milestones in a project

create_milestone

Create a new milestone

retrieve_milestone

Retrieve a milestone by ID

update_milestone

Update a milestone by ID

delete_milestone

Delete a milestone by ID

manage_milestone_work_items

Add and/or remove work items on a milestone

list_milestone_work_items

List work items in a milestone

Labels

Tool Name

Description

list_labels

List all labels in a project

create_label

Create a new label

retrieve_label

Retrieve a label by ID

update_label

Update a label by ID

delete_label

Delete a label by ID

States

Tool Name

Description

list_states

List all states in a project

create_state

Create a new state

retrieve_state

Retrieve a state by ID

update_state

Update a state by ID

delete_state

Delete a state by ID

Work Item Comments

Tool Name

Description

list_work_item_comments

List comments for a work item

retrieve_work_item_comment

Retrieve a specific comment for a work item

create_work_item_comment

Create a comment for a work item

update_work_item_comment

Update a comment for a work item

delete_work_item_comment

Delete a comment for a work item

Tool Name

Description

list_work_item_links

List links for a work item

retrieve_work_item_link

Retrieve a specific link for a work item

create_work_item_link

Create a link for a work item

update_work_item_link

Update a link for a work item

delete_work_item_link

Delete a link for a work item

Work Item Types

Tool Name

Description

list_work_item_types

List all work item types in a project

create_work_item_type

Create a new work item type

retrieve_work_item_type

Retrieve a work item type by ID

update_work_item_type

Update a work item type by ID

delete_work_item_type

Delete a work item type by ID

import_work_item_types_to_project

Bulk-link workspace-level work item types to a project

resolve_work_item_type

Find or create a named type for a project, auto-handling workspace vs project scope and import

manage_work_item_type_properties

Attach or detach properties on a work item type in a single call

Work Item Relations

Tool Name

Description

list_work_item_relations

List relations for a work item

create_work_item_relation

Create relations for a work item

remove_work_item_relation

Remove a relation from a work item

Work Item Relation Definitions

Tool Name

Description

list_work_item_relation_definitions

List workspace custom relation definitions

create_work_item_relation_definition

Create a workspace relation definition

update_work_item_relation_definition

Update a relation definition

delete_work_item_relation_definition

Delete a relation definition

Work Item Activities

Tool Name

Description

list_work_item_activities

List activities for a work item

retrieve_work_item_activity

Retrieve a specific activity for a work item

Work Logs

Tool Name

Description

list_work_logs

List work logs for a work item

create_work_log

Create a work log for a work item

update_work_log

Update a work log for a work item

delete_work_log

Delete a work log for a work item

Pages

Tool Name

Description

list_pages

List pages - metadata only (workspace, or a project's if project_id given)

retrieve_page

Retrieve a page incl. content; optional max_length truncation (env default PLANE_PAGES_MAX_CONTENT_LENGTH)

search_pages

Search pages by title, optionally inside content (client-side, case-insensitive)

create_page

Create a workspace or project page

attach_page_to_work_item

Link a page to a work item

detach_page_from_work_item

Remove a page link from a work item

list_work_item_pages

List all pages linked to a work item

Work Item Attachments

Tool Name

Description

list_work_item_attachments

List all attachments for a work item

get_work_item_attachment_download_url

Get a presigned download URL for a work item attachment

read_work_item_attachment

Fetch an attachment's content so the LLM can read or analyze it

upload_work_item_attachment_from_url

Fetch a file from a public URL and attach it to a work item

delete_work_item_attachment

Delete an attachment from a work item

Estimates

Tool Name

Description

get_project_estimate

Get the estimate configuration for a project

create_project_estimate

Create a new estimate for a project

update_project_estimate

Update the estimate for a project

delete_project_estimate

Delete the estimate for a project

link_estimate_to_project

Link an estimate to a project, making it the active estimate system

list_project_estimate_points

List all valid estimate points for a project

create_project_estimate_points

Create estimate points for a project estimate

update_project_estimate_point

Update a single estimate point

delete_project_estimate_point

Delete a single estimate point

Roles

Tool Name

Description

list_roles

List role definitions in the workspace

retrieve_role

Retrieve a role definition by ID

PQL

Tool Name

Description

get_pql_reference

Return the Plane Query Language (PQL) syntax reference (also exposed as the resource://pql-reference MCP resource)

Workspaces

Tool Name

Description

get_workspace_members

Get all members of the current workspace

get_features

Get feature flags (workspace, or a project's if project_id given)

update_workspace_features

Update features of the current workspace

Users

Tool Name

Description

get_me

Get current authenticated user information

Instance

Tool Name

Description

get_instance_info

Get edition/version of the connected Plane instance and its known API limitations (e.g. Community Edition)

list_toolsets

List the tool groups (toolsets) this server supports and which are active

Total Tools: 142 tools across 24 categories (scripts/check_tool_docs.py keeps these tables in sync)

Development

# Install (uses uv)
uv pip install -e ".[dev]"

# Tests
pytest

# Format + lint
ruff format plane_mcp/
ruff check plane_mcp/

Integration tests run against a live Plane instance - copy .env.test to .env.test.local with real values, then export $(cat .env.test.local | xargs) && pytest tests/ -v.

Attribution & License

MIT License - see LICENSE.

Based on makeplane/plane-mcp-server (MIT, © 2025 Plane MCP Server Contributors). This is an independent, unofficial project: not affiliated with, endorsed by, or supported by Plane / makeplane. "Plane" is a trademark of its respective owner.

Contributing

Contributions welcome - especially fixes for self-hosted Community Edition quirks. See CONTRIBUTING.md.

Available Tools

142 tools
attach_page_to_work_itemB

Link a page to a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item page_id: UUID of the page to link

Returns: WorkItemPage link object

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes
project_idYes
work_item_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
pageNo
issueNo
projectNo
workspaceNo
created_atNo
created_byNo
updated_atNo

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false, destructiveHint=false, idempotentHint=false. The description adds no behavioral traits beyond 'link'. It does not explain idempotency behavior (if already linked), permissions, or effects. Minimal additional value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two clear sentences plus Args/Returns. No redundant text. Efficient, though could be slightly more structured with bullet points.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 covers basic purpose and parameters. However, it lacks behavioral context (idempotency, error states) and prerequisites. Adequate for a simple operation but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It lists parameters with trivial 'UUID of the project/work item/page' but adds no meaningful semantics beyond the names. Should clarify roles like 'project containing the work item'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Link a page to a work item' using a specific verb and resource. It distinguishes from sibling tools like 'detach_page_from_work_item' and 'list_work_item_pages'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides the basic purpose but no explicit guidance on when to use versus alternatives (e.g., 'detach_page_from_work_item'). It does not mention prerequisites or edge cases like whether linking is idempotent. Usage context is implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

complete_cycleA

Complete (close) a cycle by setting its end date to today.

Plane has no explicit "complete" action - a cycle is considered complete when its end_date is in the past. This tool sets end_date to today, effectively closing the cycle.

Args: project_id: UUID of the project cycle_id: UUID of the cycle to complete

Returns: Updated Cycle object

ParametersJSON Schema
NameRequiredDescriptionDefault
cycle_idYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameYes
projectNo
versionNo
end_dateNo
owned_byNo
timezoneNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
logo_propsNo
sort_orderNo
start_dateNo
updated_atNo
updated_byNo
view_propsNo
archived_atNo
descriptionNo
external_idNo
total_issuesNo
backlog_issuesNo
started_issuesNo
external_sourceNo
total_estimatesNo
cancelled_issuesNo
completed_issuesNo
unstarted_issuesNo
progress_snapshotNo
started_estimatesNo
completed_estimatesNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description details the mutation: setting end_date to today. Annotations already indicate readOnlyHint=false and openWorldHint=true. No additional behavioral traits (e.g., permissions, side effects) are disclosed beyond the core action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: a main sentence, explanatory context, then Args and Returns. It is concise but includes valuable explanation, which prevents a higher score for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with annotations and implied output schema, the description covers purpose, why it exists, and parameter roles. It lacks details on error conditions or prerequisites (e.g., if cycle already closed), but overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description adds basic parameter descriptions ('UUID of the project', 'UUID of the cycle to complete'), providing minimal meaning beyond the type. More detail (e.g., format, constraints) would improve the score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool's purpose: 'Complete (close) a cycle by setting its end date to today.' It also explains the context that Plane lacks an explicit 'complete' action, distinguishing it from sibling tools like update_cycle.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the use case for closing a cycle and the reason for this tool's existence. It implicitly differentiates from update_cycle but does not explicitly state when not to use it or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_work_itemsA
Read-only

Count work items across the workspace with optional grouping.

Use this for analytics - "how many urgent items?", "distribution by state?" - without fetching full work item payloads.

Args: pql: PQL filter to scope the count (e.g. 'priority = "urgent"'). group_by: Dimension to group counts by. Supported values: state_id, state__group, priority, project_id, type_id, labels__id, assignees__id, issue_module__module_id, release_work_items__release_id, cycle_id, milestone_id, created_by, target_date, start_date. sub_group_by: Second dimension for nested grouping (requires group_by).

Returns: grouped_by: The group_by field used (null if none). sub_grouped_by: The sub_group_by field used (null if none). total_count: Total matching work items. grouped_counts: Dict of group_key → {count} or {count, sub_grouped_counts} when sub_group_by is set. Keys are UUIDs for FK fields, plain strings for priority/state__group, ISO dates for target_date/start_date, "None" for unset values.

ParametersJSON Schema
NameRequiredDescriptionDefault
pqlNoOptional Plane Query Language (PQL) filter. Examples: `priority = "urgent" AND assignee = currentUser()`, `stateGroup IN openStates() AND isOverdue()`. UUID fields (project, assignee, state, label, cycle, module, type, milestone, createdBy) need UUIDs - call the relevant `list_*` tool first if you only have a name or short identifier (e.g. `LSS` → call `list_projects` and match `identifier` to get `id`). Call `get_pql_reference` for full PQL syntax before composing complex queries.
group_byNo
sub_group_byNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and openWorldHint=true; description confirms read-only nature and adds behavioral details about return structure (grouped_counts, sub_grouped_counts). The description 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with front-loaded purpose, followed by usage guideline, parameter details, and return format. Every sentence adds value; no unnecessary fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of grouping and nested grouping, the description fully explains all parameters and output structure (with output schema details). It is complete for an agent to effectively use the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema only describes pql (33% coverage), but description lists supported values for group_by and sub_group_by, and explains pql usage with examples. This compensates for schema gaps, adding significant meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool counts work items with optional grouping, and distinguishes it from fetching full payloads. It specifies the use case for analytics, 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to use for analytics without fetching full payloads, providing a clear when-to-use guidance. It contrasts with list_work_items, but lacks explicit when-not-to-use scenarios or alternatives like search_work_items.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_cycleB

Create a new cycle.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project name: Cycle name owned_by: UUID of the user who owns the cycle description: Cycle description start_date: Cycle start date (ISO 8601 format) end_date: Cycle end date (ISO 8601 format) external_source: External system source name external_id: External system identifier timezone: Cycle timezone

Returns: Created Cycle object

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
end_dateNo
owned_byYes
timezoneNo
project_idYes
start_dateNo
descriptionNo
external_idNo
external_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameYes
projectNo
versionNo
end_dateNo
owned_byNo
timezoneNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
logo_propsNo
sort_orderNo
start_dateNo
updated_atNo
updated_byNo
view_propsNo
archived_atNo
descriptionNo
external_idNo
total_issuesNo
backlog_issuesNo
started_issuesNo
external_sourceNo
total_estimatesNo
cancelled_issuesNo
completed_issuesNo
unstarted_issuesNo
progress_snapshotNo
started_estimatesNo
completed_estimatesNo

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate mutation (readOnlyHint=false, destructiveHint=false) and openWorldHint=true. The description adds only 'Returns: Created Cycle object' and parameter formats. It does not disclose side effects, validation rules, error scenarios, or permission requirements. Minimal behavioral context beyond what annotations imply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with Args and Returns sections, front-loading the action. It is concise despite listing many parameters, but the inclusion of 'workspace_slug' adds noise. Overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description lists parameters and return type, it lacks context on when to create a cycle, constraints (e.g., unique names), and the inconsistent workspace_slug parameter undermines completeness. With an output schema, return values are covered, but behavioral context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage, the description provides explanations for all 9 parameters, including format hints (e.g., ISO 8601 for dates, UUID for identifiers). However, it lists 'workspace_slug' which is not in the input schema, causing a discrepancy. The descriptions add value but are not fully consistent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create a new cycle' with a list of parameters. It distinguishes from sibling tools like retrieve_cycle, update_cycle, etc., but does not explicitly differentiate from other creation tools like create_project or create_state. The purpose is clear and specific enough for most agents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. No mention of prerequisites (e.g., needing a workspace slug) or context when create vs. manage_cycle_work_items should be used. The description lacks any usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_initiativeA

Create a new initiative in the workspace.

Args: name: Initiative name description_html: HTML description of the initiative start_date: Initiative start date (ISO 8601 format) end_date: Initiative end date (ISO 8601 format) logo_props: Logo properties dictionary state: Initiative state (DRAFT, PLANNED, ACTIVE, COMPLETED, CLOSED) lead: UUID of the user who leads the initiative

Returns: Created Initiative object

Raises: ToolError: if the workspace's initiatives feature is disabled. Native initiatives require the feature to be enabled in workspace settings. When disabled, create an "Initiative" work item instead - the error message gives the exact steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
leadNo
nameYes
stateNo
end_dateNo
logo_propsNo
start_dateNo
description_htmlNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
leadNo
nameYes
stateNo
end_dateNo
workspaceYes
created_atNo
deleted_atNo
logo_propsYes
start_dateNo
updated_atNo
descriptionNo
description_htmlNo
description_binaryNo
description_strippedNo

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a write operation (readOnlyHint: false) and not destructive (destructiveHint: false). The description adds valuable context about the ToolError when the feature is disabled, which is behavioral beyond annotations. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with a one-line summary, then Args, Returns, and Raises sections. It is concise—every sentence adds necessary information without redundancy. No extraneous text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, feature flag dependency, output schema exists), the description covers all necessary usage aspects: creation, parameter explanation, return value, error handling, and fallback. No gaps identified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, but the description provides clear, concise explanations for all 7 parameters in the Args section. Each parameter's meaning and format (e.g., ISO 8601 for dates, enum values for state) are described, adding significant value beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Create a new initiative in the workspace.' and distinguishes from sibling tools like list_initiatives, retrieve_initiative, etc., by specifying the creation action. The description also includes a fallback behavior when the feature is disabled, further clarifying its unique role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly describes when to use this tool and when not to: if the workspace's initiatives feature is disabled, the agent should instead create an 'Initiative' work item. The error message is said to contain exact steps, providing clear guidance on alternative actions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_intake_work_itemB

Create a new intake work item in a project.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project data: Intake work item data as a dictionary

Returns: Created IntakeWorkItem object

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
extraNo
inboxNo
issueNo
intakeNo
sourceNo
statusNo
projectNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
updated_atNo
updated_byNo
external_idNo
duplicate_toNo
issue_detailNo
snoozed_tillNo
source_emailNo
external_sourceNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false, consistent with creation. The description adds no further behavioral traits (e.g., permission requirements, side effects, or lifecycle details). With annotations present, the description provides minimal additional transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the main sentence but includes a docstring-style Args/Returns section. It is not overly long, but the inclusion of a non-existent parameter (workspace_slug) wastes some space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 2 required parameters and an output schema, the description is minimal. It explains the return type but does not elaborate on what an intake work item is or any constraints. For a create operation, it is moderately complete but could be improved with more context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description lists parameters workspace_slug, project_id, and data, but workspace_slug is not in the input schema (only project_id and data are required and defined). This error reduces clarity. Data is described as a dictionary, which aligns with the schema's object type. However, the schema coverage is 0%, so the description adds some meaning but contains a factual mistake.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Create a new intake work item in a project,' clearly identifying the action (create) and resource (intake work item). Among sibling tools like 'create_work_item', this distinguishes intake-specific creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, such as 'create_work_item' for regular work items. There are no usage prerequisites or exclusion scenarios mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_labelB

Create a new label.

Args: project_id: UUID of the project name: Label name color: Label color (hex color code) description: Label description parent: UUID of the parent label (for nested labels) sort_order: Sort order for the label external_source: External system source name external_id: External system identifier

Returns: Created Label object

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
colorNo
parentNo
project_idYes
sort_orderNo
descriptionNo
external_idNo
external_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameYes
colorNo
parentNo
projectNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
sort_orderNo
updated_atNo
updated_byNo
descriptionNo
external_idNo
external_sourceNo

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false (write operation) and destructiveHint=false. The description adds that it 'creates' and 'Returns: Created Label object,' which is consistent but provides minimal extra context about side effects, authentication requirements, or rate limits. No behavioral details beyond the obvious creation action 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a single introductory sentence followed by a bullet list of parameters with brief descriptions, and a return statement. It front-loads the purpose and uses space efficiently. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 8 parameters and an output schema (implied by 'Returns: Created Label object'), the description covers all parameters with sufficient detail. It does not explain the return format, but output schema likely handles that. The description is complete enough for an agent to understand the tool's purpose and required inputs, though it could mention potential side effects or constraints like uniqueness of label names.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description carries full burden. It lists all 8 parameters with clear, meaningful descriptions (e.g., 'project_id: UUID of the project', 'color: Label color (hex color code)'). This adds significant value beyond the schema's type-only definitions. Could be improved by noting which parameters are required, but that is partially covered by the schema's required list.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create a new label,' which is a specific verb+resource combination. It distinguishes itself from sibling tools like list_labels, retrieve_label, update_label, and delete_label by being the creation action. However, it could be improved by explicitly contrasting with manage_work_item_label or other label-related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is provided on when to use this tool versus alternatives like update_label or delete_label. The description only lists parameters, implying the need for a project_id and name, but does not state prerequisites or conditions under which creation is appropriate. Sibling tools are numerous but no exclusions or context are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_milestoneB

Create a new milestone.

Args: project_id: UUID of the project title: Milestone title target_date: Target date for the milestone (ISO 8601 format) external_source: External system source name external_id: External system identifier

Returns: Created Milestone object

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
project_idYes
external_idNo
target_dateNo
external_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
titleYes
created_atNo
updated_atNo
external_idNo
target_dateNo
external_sourceNo

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false and not destructive, but the description only repeats 'Create' without detailing side effects (e.g., does it trigger notifications? require specific permissions?). No behavioral context beyond what annotations imply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: a single sentence plus a clean list of parameters and return. Every element is functional with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the output schema exists (so return type is documented), the description omits important creation context: no mention of duplicate handling, required permissions, or whether the milestone is immediately associated with the project. It's minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must add meaning. It provides one-line comments for each parameter (e.g., 'UUID of the project') but lacks richer semantics like formatting constraints, validation rules, or relationships between parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Create a new milestone' with a specific verb (create) and resource (milestone). This clearly distinguishes it from sibling tools like update_milestone, retrieve_milestone, and list_milestones.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives (e.g., create_work_item for task milestones). No prerequisites, exclusions, or context about project relationships are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_moduleA

Create a new module.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project name: Module name description: Module description start_date: Module start date (ISO 8601 format) target_date: Module target/end date (ISO 8601 format) status: Module status (backlog, planned, in-progress, paused, completed, cancelled) lead: UUID of the user who leads the module members: List of user IDs who are members of the module external_source: External system source name external_id: External system identifier

Returns: Created Module object

ParametersJSON Schema
NameRequiredDescriptionDefault
leadNo
nameYes
statusNo
membersNo
project_idYes
start_dateNo
descriptionNo
external_idNo
target_dateNo
external_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
leadNo
nameYes
statusNo
projectNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
logo_propsNo
sort_orderNo
start_dateNo
updated_atNo
updated_byNo
view_propsNo
archived_atNo
descriptionNo
external_idNo
target_dateNo
total_issuesNo
backlog_issuesNo
started_issuesNo
external_sourceNo
cancelled_issuesNo
completed_issuesNo
description_htmlNo
description_textNo
unstarted_issuesNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a non-destructive write operation. The description adds no behavioral context beyond the obvious fact that it creates a module. It does not address authorization, rate limits, or side effects, but the annotations provide a baseline safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-organized. It starts with a clear one-sentence purpose, followed by a bulleted list of parameters with brief descriptions, and ends with the return value. Every line adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All parameters are thoroughly documented, and the return type is mentioned. However, the description lacks usage context such as prerequisites or relationships with other tools. Given the existence of an output schema (not shown), the return description is sufficient, but overall completeness is slightly hindered by missing usage guidelines.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by providing meaningful explanations for all 10 parameters. It includes allowed values for status, ISO 8601 format for dates, and clarifies types (UUID, list). This is essential for correct parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Create a new module,' clearly specifying the verb and resource. It lists all parameters with their purposes, making the tool's function apparent. However, it does not explicitly differentiate from sibling create tools like create_cycle or create_initiative, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, nor does it specify when not to use it. The agent must infer usage solely from the tool name and parameter list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_pageA

Create a page.

Creates a project page if project_id is given, otherwise a workspace-level page.

Args: name: Page name description_html: Page content in HTML format project_id: UUID of the project. Omit to create a workspace page. access: Access level for the page (integer) color: Page color is_locked: Whether the page is locked archived_at: Archive timestamp (ISO 8601 format) view_props: View properties dictionary logo_props: Logo properties dictionary external_id: External system identifier external_source: External system source name

Returns: Created Page object

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
colorNo
accessNo
is_lockedNo
logo_propsNo
project_idNo
view_propsNo
archived_atNo
external_idNo
external_sourceNo
description_htmlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
anchorNo
owned_byNo
projectsNo
workspaceNo
created_atNo
updated_atNo
descriptionNo
description_htmlNo
description_binaryNo
description_strippedNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate write (readOnlyHint=false) and non-destructive (destructiveHint=false). Description adds behavioral details about page location and lists all parameters, adding context 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with a clear first line and a bullet-like parameter list. Slightly verbose but each sentence adds value; could be tightened without losing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 11 parameters and an output schema mentioned, the description covers the main behavior and parameter purposes. Does not detail return format, but output schema is present. 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.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description provides essential meaning for all 11 parameters (e.g., 'Project name', 'Page content in HTML format', 'UUID of the project. Omit to create a workspace page.'), making it highly informative beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly identifies the action ('Create a page') and distinguishes between creating a project page or workspace-level page based on project_id. This differentiates from sibling tools like update_page or delete_page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context: include project_id for a project page, omit for workspace page. Does not explicitly state when not to use or list alternatives, but the guidance is sufficient for an agent to decide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_projectB

Create a new project.

Args: workspace_slug: The workspace slug identifier name: Project name identifier: Project identifier (e.g., "MP" for "My Project") description: Project description project_lead: UUID of the project lead user default_assignee: UUID of the default assignee user emoji: Emoji for the project cover_image: Cover image URL or asset ID module_view: Enable module view cycle_view: Enable cycle view issue_views_view: Enable issue views view page_view: Enable page view intake_view: Enable intake view guest_view_all_features: Allow guests to view all features archive_in: Days until auto-archive close_in: Days until auto-close timezone: Project timezone external_source: External system source name external_id: External system identifier is_issue_type_enabled: Enable issue types

Returns: Created Project object

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
emojiNo
close_inNo
timezoneNo
page_viewNo
archive_inNo
cycle_viewNo
identifierYes
cover_imageNo
descriptionNo
external_idNo
intake_viewNo
module_viewNo
project_leadNo
external_sourceNo
default_assigneeNo
issue_views_viewNo
is_issue_type_enabledNo
guest_view_all_featuresNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameYes
emojiNo
networkNo
close_inNo
estimateNo
timezoneNo
icon_propNo
is_memberNo
page_viewNo
workspaceNo
archive_inNo
created_atNo
created_byNo
cycle_viewNo
deleted_atNo
identifierYes
logo_propsNo
sort_orderNo
updated_atNo
updated_byNo
archived_atNo
cover_imageNo
descriptionNo
external_idNo
intake_viewNo
is_deployedNo
member_roleNo
module_viewNo
project_leadNo
total_cyclesNo
default_stateNo
total_membersNo
total_modulesNo
cover_image_urlNo
external_sourceNo
default_assigneeNo
description_htmlNo
description_textNo
issue_views_viewNo
cover_image_assetNo
is_issue_type_enabledNo
guest_view_all_featuresNo
is_time_tracking_enabledNo

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate writes (readOnlyHint false) but description does not disclose any additional behavioral traits (e.g., side effects, permissions, rate limits). Major inconsistency: description lists workspace_slug parameter not present in input schema, causing potential confusion.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Structured as a list of arguments following a clear one-line purpose. Reasonably concise for 19 parameters, though could be slightly tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose and parameters, but lacks context on side effects (openWorldHint true). Inconsistency with workspace_slug reduces completeness. Output schema exists so return description is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Description provides brief explanations for each parameter (e.g., 'Project identifier (e.g., MP for My Project)'), adding value over bare schema (0% coverage). However, workspace_slug is described but missing from schema, and defaults are not mentioned despite schema showing null defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Create a new project' with specific verb and resource. Differentiates from sibling tools like update_project and delete_project by indicating creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. Does not mention prerequisites or context for selecting this tool over update_project or list_projects.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_project_estimateA

Create a new estimate for a project.

Args: project_id: UUID of the project name: Name of the estimate (e.g., "Story Points", "T-Shirt Sizes") type: Estimate type - "categories", "points", or "time" description: Optional description last_used: Whether this becomes the active estimate (default True) external_id: External system identifier external_source: External system source name

Returns: Created Estimate object

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
typeNo
last_usedNo
project_idYes
descriptionNo
external_idNo
external_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameYes
typeNo
projectNo
last_usedNo
workspaceNo
created_atNo
created_byNo
updated_atNo
updated_byNo
descriptionNo
external_idNo
external_sourceNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate mutability (readOnlyHint=false) but description adds minimal behavioral context beyond what annotations provide. The default value of last_used=true is noted, but other side effects are omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with Args and Returns sections, and the main purpose is front-loaded. Could be more concise by omitting redundant parameter details already in the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers basic creation but misses guidance on when to use this vs. create_project_estimate_points, and does not fully explain the 'type' parameter or external system fields. Output schema exists but is not detailed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description provides essential meaning for parameters (e.g., 'UUID of the project', 'Name of the estimate...'). However, it lacks detail on the 'type' parameter values and implications of external_id/source.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create a new estimate for a project' with a specific verb and resource, distinguishing it from sibling tools like create_project_estimate_points, update_project_estimate, and delete_project_estimate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like create_project_estimate_points. The description lists parameters but does not provide context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_project_estimate_pointsA

Create estimate points for a project estimate.

Each point dict may have: value (required, max 20 chars), key (int), description, external_id, external_source.

Example: points=[ {"value": "1", "key": 0}, {"value": "2", "key": 1}, {"value": "3", "key": 2}, {"value": "5", "key": 3}, {"value": "8", "key": 4}, ]

Args: project_id: UUID of the project estimate_id: UUID of the estimate points: List of point definitions

Returns: List of created EstimatePoint objects

ParametersJSON Schema
NameRequiredDescriptionDefault
pointsYes
project_idYes
estimate_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate write operation (readOnlyHint=false). Description adds context on point dict fields and example but doesn't disclose behavior like duplicate key handling or overwriting. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear header, bullet points, example, and explicit args. Could be slightly more concise, but no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Missing context about prerequisites (e.g., estimate must exist) and behavior when points already exist. Output schema exists but is not elaborated, which is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but description compensates by detailing point dict fields, providing an example, and listing required args, adding significant meaning beyond the minimal schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Create estimate points for a project estimate' and distinguishes from sibling tools like create_project_estimate and update_project_estimate_point by specifying it creates point definitions within an estimate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance relative to siblings. The example implies usage, but prerequisites (e.g., estimate must exist) and alternatives are not mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_stateA

Create a new state.

Args: project_id: UUID of the project name: State name color: State color (hex color code) description: State description sequence: State sequence order group: State group (e.g., backlog, unstarted, started, completed, cancelled) is_triage: Whether this is a triage state default: Whether this is the default state external_source: External system source name external_id: External system identifier

Returns: Created State object

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
colorYes
groupNo
defaultNo
sequenceNo
is_triageNo
project_idYes
descriptionNo
external_idNo
external_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameYes
colorYes
groupNo
defaultNo
projectNo
sequenceNo
is_triageNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
updated_atNo
updated_byNo
descriptionNo
external_idNo
external_sourceNo

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description only says 'create', which is consistent with annotations but adds no behavioral context beyond the annotations themselves. It does not mention idempotency, side effects, permissions, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear one-sentence purpose, a parameter list, and a return description. It is front-loaded and each line adds value, though the parameter list could be more compact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 10 parameters and an output schema, the description covers the essential purpose and parameter meanings. It does not explain relationships or constraints further, but for a creation tool this is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by listing all 10 parameters with brief but meaningful explanations (e.g., 'project_id: UUID of the project', 'color: State color (hex color code)'). This adds value beyond the schema types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create a new state.' with a list of parameters and return type. This verb+resource combination is unambiguous and distinct from sibling tools like list_states, update_state, and delete_state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use this tool versus alternatives. It lacks explicit context on prerequisites, when not to use it, or comparisons to related tools like update_state.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_work_itemA

Create a new work item.

Args: project_id: UUID of the project name: Work item name (required) assignees: List of user IDs to assign to the work item labels: List of label IDs to attach to the work item type_id: UUID of the work item type point: Story point value description_html: HTML description of the work item description_stripped: Plain text description. Convenience only - it is wrapped into HTML and stored as description_html (Plane derives description_stripped server-side). Ignored if description_html is set. priority: Priority level (urgent, high, medium, low, none) start_date: Start date (ISO 8601 format) target_date: Target/end date (ISO 8601 format) sort_order: Sort order value is_draft: Whether the work item is a draft external_source: External system source name external_id: External system identifier parent: UUID of the parent work item state: UUID of the state estimate_point: Estimate point value type: Work item type identifier

Returns: Created WorkItem object

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
typeNo
pointNo
stateNo
labelsNo
parentNo
type_idNo
is_draftNo
priorityNo
assigneesNo
project_idYes
sort_orderNo
start_dateNo
external_idNo
target_dateNo
estimate_pointNo
external_sourceNo
description_htmlNo
description_strippedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
typeNo
pointNo
stateNo
parentNo
projectNo
type_idNo
is_draftNo
priorityNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
sort_orderNo
start_dateNo
updated_atNo
updated_byNo
archived_atNo
external_idNo
sequence_idNo
target_dateNo
completed_atNo
estimate_pointNo
external_sourceNo
description_htmlNo
description_binaryNo
description_strippedNo

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate non-read-only (writes) and non-destructive. The description adds no behavioral context beyond stating it creates a work item. No mention of permissions, side effects, or rate limits. With annotations present, the description falls short of adding significant behavioral insight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with an Args block and clear line-by-line parameter definitions. It is front-loaded with the purpose. While lengthy due to many parameters, every sentence adds information, earning its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (19 parameters, output schema exists), the description adequately explains parameters and return type. However, it does not differentiate from other creation tools (e.g., create_intake_work_item) or mention when to use this specific tool, leaving a minor gap in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description provides extensive explanations for each parameter, including types, requiredness, and special behavior (e.g., description_stripped being ignored if description_html is set). This adds substantial value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with 'Create a new work item,' which clearly states the verb and resource. It distinguishes itself from siblings like update_work_item and delete_work_item by focusing on creation, and the parameter list clarifies the scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives (e.g., create_intake_work_item), nor does it provide exclusions or prerequisites. Usage is implied by the purpose but lacks explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_work_item_commentB

Create a comment for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item comment_html: Comment content in HTML format comment_json: Comment content in JSON format access: Access level for the comment (INTERNAL or EXTERNAL) external_source: External system source name external_id: External system identifier

Returns: Created WorkItemComment object

ParametersJSON Schema
NameRequiredDescriptionDefault
accessNo
project_idYes
external_idNo
comment_htmlNo
comment_jsonNo
work_item_idYes
external_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
actorNo
issueNo
accessNo
projectNo
edited_atNo
is_memberNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
updated_atNo
updated_byNo
attachmentsNo
external_idNo
comment_htmlNo
external_sourceNo
comment_strippedNo

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=false and destructiveHint=false, but the description adds minimal behavioral context beyond stating it creates a comment. It does not disclose idempotency, rate limits, or what happens with conflicting parameters like comment_html and comment_json.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured as a docstring with a clear first sentence stating purpose, followed by a parameter list. It is concise without unnecessary words. The parameter list is needed due to zero schema coverage, so it earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 7 parameters, output schema, and is a mutation in a complex API, the description is incomplete. It does not explain parameter interactions (e.g., comment_html vs comment_json), required permissions, or validation rules. Lacks context for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 basic meanings for all 7 parameters (e.g., 'UUID of the project', 'Access level for the comment (INTERNAL or EXTERNAL)'). However, it lacks details on constraints, usage patterns, or parameter interactions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 'comment for a work item'. It aligns with the tool name and distinguishes from sibling CRUD operations like update, delete, list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives (e.g., update_work_item_comment for editing). It does not mention prerequisites or exclusion criteria. Sibling names imply usage but description lacks explicit context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_work_item_propertyA

Create a new work item property.

Scope resolution:

  • project_id + work_item_type_id → type-scoped project property (legacy)

  • project_id only → project-level property (not yet linked to a type)

  • neither → workspace-level property

Args: display_name: Display name for the property property_type: TEXT | DATETIME | DECIMAL | BOOLEAN | OPTION | RELATION | URL | EMAIL | FILE | FORMULA project_id: UUID of the project. Omit for workspace-level property. work_item_type_id: UUID of the work item type - omit to create at project level relation_type: ISSUE | USER - required when property_type=RELATION description: Property description is_required: Whether the property is required default_value: Default value(s) for the property settings: Required for TEXT/DATETIME. TEXT: {"display_format": "single-line"|"multi-line"|"readonly"} DATETIME: {"display_format": "MMM dd, yyyy"|"dd/MM/yyyy"|"MM/dd/yyyy"|"yyyy/MM/dd"} is_active: Whether the property is active is_multi: Whether the property supports multiple values validation_rules: Validation rules dictionary external_source: External system source name external_id: External system identifier options: List of {name, color?, is_default?} dicts - for OPTION type

Returns: Created WorkItemProperty object

ParametersJSON Schema
NameRequiredDescriptionDefault
optionsNo
is_multiNo
settingsNo
is_activeNo
project_idNo
descriptionNo
external_idNo
is_requiredNo
display_nameYes
default_valueNo
property_typeYes
relation_typeNo
external_sourceNo
validation_rulesNo
work_item_type_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
optionsNo
projectNo
is_multiNo
settingsNo
is_activeNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
issue_typeNo
logo_propsNo
sort_orderNo
updated_atNo
updated_byNo
descriptionNo
external_idNo
is_requiredNo
display_nameYes
default_valueNo
property_typeYes
relation_typeNo
external_sourceNo
validation_rulesNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false and destructiveHint=false, so the tool creates something. The description adds behavioral context beyond annotations: it explains scope resolution, parameter dependencies (e.g., relation_type required for RELATION), and return type ('Returns Created WorkItemProperty object'). No contradictions with annotations. It does not mention side effects like idempotency (idempotentHint=false), but that is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a one-line summary, scope resolution in bullet-like format, and a parameter list. It is fairly long but every sentence adds value given the complexity (15 parameters, scope resolution). It is front-loaded with the main purpose. Could be slightly more concise, but it is efficient for the information density.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (15 parameters, scope variations, multiple property types), the description covers essential aspects: scope resolution, parameter dependencies, required combinations, and return type. An output schema exists, so return values need not be detailed further. It is complete enough for correct agent usage, though error conditions or rate limits are not mentioned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description carries full burden. It provides detailed explanations for all 15 parameters, including type options (e.g., property_type enum values), structure (e.g., settings JSON format, options list of dicts), and usage constraints (e.g., relation_type required when property_type=RELATION). This adds significant meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a clear verb and resource: 'Create a new work item property.' It explicitly distinguishes from sibling tools like update, delete, list, retrieve by focusing on creation. The scope resolution section further clarifies the purpose by detailing how the property is scoped (type-scoped, project-level, workspace-level), which differentiates it from others.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use which parameters (e.g., omit work_item_type_id for project-level, relation_type required for RELATION type). It also explains required conditions for parameters like settings for TEXT/DATETIME. However, it does not explicitly state when to use this tool versus alternatives, but the sibling context and clear scope resolution serve as implicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_work_item_property_optionA

Create an option on a work item property.

Args: property_id: UUID of the work item property name: Display name for the option project_id: UUID of the project. Omit for workspace scope. description: Option description color: Hex color string e.g. "#FF5733" is_default: Whether this is the default option external_source: External system source name external_id: External system identifier

Returns: Created WorkItemPropertyOption object

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
colorNo
is_defaultNo
project_idNo
descriptionNo
external_idNo
property_idYes
external_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameYes
parentNo
projectNo
propertyNo
is_activeNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
is_defaultNo
logo_propsNo
sort_orderNo
updated_atNo
updated_byNo
descriptionNo
external_idNo
external_sourceNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false, idempotentHint=false, destructiveHint=false. The description adds the return value ('Created WorkItemPropertyOption object') but does not disclose side effects beyond creation, such as whether the property must exist or what happens if an option with the same name already exists. The behavioral disclosure is adequate but minimal given annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a well-structured docstring with Args and Returns sections. Every sentence adds information about parameters or return value. It is not overly verbose but could be slightly more concise by omitting redundant parameter names. Overall, it is efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is relatively simple. With an output schema present, the description does not need to detail return fields. It covers all parameters and the return object. However, it lacks information on prerequisites (e.g., does the property need to be of option type?) or error scenarios. For a create operation, this is almost complete but not fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 brief but meaningful descriptions for all 8 parameters (e.g., 'UUID of the work item property', 'Hex color string e.g. "#FF5733"'). While not extensive, this adds essential meaning beyond the raw schema, effectively covering all parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create an option on a work item property') and the resource. It distinguishes itself from sibling tools like 'create_work_item_property' (creates the property itself) and 'update_work_item_property_option' (updates an existing option), showing specific verb-resource pairing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance is provided. The description lists required parameters (property_id and name) but does not contrast with alternatives like updating or deleting options. The purpose is clear from the name but fails to provide explicit usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_work_item_relationA

Relate a work item to one or more targets.

Always call list_work_item_relation_definitions first and match the user's wording to an entry there. If it is a built_in_dependencies value, pass it as relation_type. If it is a custom_definitions entry, pass that definition's id as relation_definition_id and the matched outward/inward label as relation_definition_label (the label sets directionality).

Args: project_id: UUID of the project. work_item_id: UUID of the source work item. work_item_ids: UUIDs of the target work items. relation_type: A built_in_dependencies value, or None for a custom relation. relation_definition_id: UUID of the relation definition (custom relations). relation_definition_label: Definition's outward or inward label (custom relations).

Returns: List of created WorkItemWithRelationType objects.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
work_item_idYes
relation_typeNo
work_item_idsYes
relation_definition_idNo
relation_definition_labelNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate non-read-only, non-idempotent, non-destructive behavior. The description adds context about the relationship creation process and return of created objects, which is transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a clear summary and well-organized paragraphs, though slightly long; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all necessary aspects: prerequisites (list definitions), parameter handling, and return type, making it complete for a complex tool with 6 parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully explains each parameter in the Args section, including usage differences between relation_type and definition fields, adding significant meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'relate' and the resource 'work item to targets', and distinguishes itself from sibling tools like remove_work_item_relation and list_work_item_relations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs to call list_work_item_relation_definitions first and explains how to handle built-in vs custom relations, providing clear guidance on when and how to use the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_work_item_relation_definitionA

Create a new workspace relation definition.

A relation definition describes a named relationship type with an outward label (how the source item describes the target) and an inward label (how the target item describes the source).

Args: name: Unique name for this relation definition. outward: Label describing the relation from the source item's perspective. inward: Label describing the relation from the target item's perspective. is_active: Whether this definition is active and available for use. color: Hex color code for UI display.

Returns: Created WorkItemRelationDefinition object.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
colorNo
inwardNo
outwardNo
is_activeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
colorNo
inwardNo
outwardNo
is_activeNo
workspaceNo
created_atNo
is_defaultNo
sort_orderNo
updated_atNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false, so the mutation behavior is clear. The description adds that this is a create operation, which is consistent. It does not elaborate on potential side effects, such as whether definitions can be modified or deleted later, or any restrictions on uniqueness. The description adds minimal 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a one-line summary, a brief explanation of the resource, an 'Args' list with clear labels, and a 'Returns' line. Every sentence is informative and there is no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the moderate complexity (5 parameters, output schema exists), the description adequately covers the purpose, parameters, and return type. It could mention uniqueness constraints for the 'name' parameter, but overall it is sufficient for the 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates well by listing all parameters in the 'Args' section and explaining each: name (unique name), outward/inward (labels from source/target perspective), is_active (availability for use), color (hex code for UI). This adds meaning beyond the property names and types in the schema. However, it does not specify format constraints (e.g., max length for name).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 'workspace relation definition'. It explains that a relation definition describes a named relationship type, distinguishing it from creating an actual relation instance (a sibling tool). The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (to create a relation definition) but does not explicitly state when not to use it or provide alternatives. It lacks guidance on prerequisites or context, relying on the tool name and sibling context. The agent would need to infer usage from the description of what a relation definition is.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_work_item_typeA

Create a new work item type.

To get a usable type for a project (e.g. "Epic"), prefer resolve_work_item_type, which finds-or-creates at the correct scope and never duplicates.

Args: name: Work item type name project_id: UUID of the project. Omit for workspace-level type. description: Work item type description project_ids: List of project IDs this type applies to is_active: Whether the type is active external_source: External system source name external_id: External system identifier

Returns: Created WorkItemType object

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
is_activeNo
project_idNo
descriptionNo
external_idNo
project_idsNo
external_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameYes
levelNo
is_epicNo
is_activeNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
is_defaultNo
logo_propsNo
updated_atNo
updated_byNo
descriptionNo
external_idNo
project_idsNo
external_sourceNo

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate non-read-only, non-idempotent, non-destructive. The description adds that creation may cause duplicates (implied by recommending 'resolve_work_item_type'), but does not elaborate on other behavioral traits like permissions or side effects. Adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise single sentence for purpose, followed by a clear 'Args' section listing parameters. No fluff; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 7 parameters and an output schema present, the description covers essential guidance (usage alternative, parameter meanings). It does not explain return values, but the output schema likely handles that. Missing some behavioral nuances, but overall sufficient for selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, and the description lists all parameters with brief explanations (e.g., 'project_id: UUID of the project. Omit for workspace-level type.'). This adds meaning beyond the schema's type-only definitions, compensating for the low coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: 'Create a new work item type.' It also distinguishes from the sibling tool 'resolve_work_item_type' by advising when to use the alternative, making the purpose explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance: recommends 'resolve_work_item_type' over this tool for project-scoped types to avoid duplicates. This tells the agent when not to use this tool and suggests a better alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_work_logA

Create a work log for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item duration: Duration of work in minutes description: Description of the work performed

Returns: Created WorkItemWorkLog object

ParametersJSON Schema
NameRequiredDescriptionDefault
durationNo
project_idYes
descriptionNo
work_item_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
durationNo
logged_byNo
created_atNo
created_byNo
project_idNo
updated_atNo
updated_byNo
descriptionNo
workspace_idNo

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description does not elaborate on behavioral traits beyond what annotations provide. With readOnlyHint=false, the agent knows it's a write operation, but no details on permissions, side effects, or limits are mentioned. The description adds no extra 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and structured as a docstring with clear parameter documentation. It wastes no words, though it could be slightly more compact by omitting the 'Args' section pattern.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 (which documents return values), the description adequately covers the input side. It explains all required and optional parameters sufficiently for an agent to invoke the tool, though it lacks usage context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite having 0% schema description coverage, the description explicitly lists each parameter with a brief explanation (e.g., 'duration: Duration of work in minutes'), adding meaning beyond the raw type definitions in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('Create') and resource ('work log'), with the target context ('for a work item'). It is easily distinguishable from sibling tools like 'list_work_logs', 'update_work_log', and 'delete_work_log'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives, such as 'create_intake_work_item' or 'create_work_item'. There is no discussion of prerequisites, conditions, or typical scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_cycleC
DestructiveIdempotent

Delete a cycle by ID.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project cycle_id: UUID of the cycle

ParametersJSON Schema
NameRequiredDescriptionDefault
cycle_idYes
project_idYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and readOnlyHint=false. The description only restates 'Delete' without adding new behavioral details like cascading effects or permissions required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short but includes an extra argument (workspace_slug) not in the schema, wasting space. It could be more concise by aligning with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks information about return values, error conditions, and dependencies (e.g., cycle must exist). The inconsistency with the schema further undermines completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description includes workspace_slug as an argument, but it is not present in the schema. It does provide context for project_id and cycle_id as UUIDs, but the inconsistency reduces reliability.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Delete) and the resource (a cycle by ID). It effectively distinguishes from sibling cycle management tools like 'complete_cycle' and 'manage_cycle_work_items'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, such as archiving a cycle or transferring work items. There is no mention of prerequisites or constraints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_initiativeA
DestructiveIdempotent

Delete an initiative by ID.

Args: initiative_id: UUID of the initiative

Raises: ToolError: if the initiatives feature is disabled. When disabled, the initiative is an "Initiative" work item - the error gives the steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
initiative_idYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructive and idempotent behavior. The description adds specific error context when the feature is disabled, which is helpful 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences: purpose, parameter, and error case. All sentences add value, though parameter info could be integrated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, parameter, and a key error case. Lacks success return behavior, but given no output schema, it is reasonably complete for a simple delete tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage, but the description clarifies that 'initiative_id' is a UUID, adding meaning beyond the schema's bare type definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Delete an initiative by ID' with a clear verb and resource. It distinguishes from sibling tools like retrieve_initiative or update_initiative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives; no mention of prerequisites or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_intake_work_itemB
DestructiveIdempotent

Delete an intake work item by work item ID.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project work_item_id: UUID of the work item (use the issue field from IntakeWorkItem response, not the intake work item ID)

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
work_item_idYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, so the description's 'Delete' aligns. It adds detail about the expected identifier (issue field), but does not disclose side effects, permissions, or consequences beyond the action. With annotations covering the safety profile, the description provides moderate additional value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short but includes an Args block with a superfluous parameter (workspace_slug not in schema). This reduces efficiency. The core statement is concise but the extra detail is misleading, making it average.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete tool with no output schema and annotations covering safety, the description should clarify what an intake work item is and whether deletion is reversible. The presence of an erroneous parameter (workspace_slug) indicates incomplete specification. The note about work_item_id helps but overall completeness is lacking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must compensate. It describes project_id as UUID and work_item_id with a specific source. However, it incorrectly lists workspace_slug as an argument not present in the schema, causing confusion. This inconsistency undermines the semantics provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action and resource: 'Delete an intake work item by work item ID.' This distinguishes it from siblings like delete_work_item. The verb-resource pair is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a specific note about using the issue field for work_item_id, which guides correct invocation. However, it offers no explicit guidance on when to use this tool versus alternatives like delete_work_item or delete_intake_work_item itself. Context for tool selection is implied but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_labelB
DestructiveIdempotent

Delete a label by ID.

Args: project_id: UUID of the project label_id: UUID of the label

ParametersJSON Schema
NameRequiredDescriptionDefault
label_idYes
project_idYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description only repeats the delete action, which is already captured by the destructiveHint annotation. It adds no new behavioral context such as reversibility, impact on associated work items, permission requirements, or error conditions. Given annotations already convey destructiveness, the description fails to provide additional transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: one sentence for purpose and a minimal args list. Every part is necessary and no words are wasted. It is well structured with a clear separation of function and parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete tool with annotations covering idempotency and destructiveness, the description is mostly adequate. However, it omits important context such as whether deletion cascades, if the label must exist, or how to obtain the IDs. Missing details reduce completeness for an agent operating in a complex environment with many sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by listing both parameters (project_id and label_id) and briefly explaining each as a UUID. This adds meaning beyond the schema's type-only definitions, though it lacks further details like format constraints or examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Delete a label by ID', specifying the action (delete) and resource (label). While it doesn't explicitly distinguish from siblings, the verb itself differentiates it from create, update, and retrieve operations. It is concise and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like manage_work_item_label or update_label. There is no mention of prerequisites, scenarios, or conditions for deletion, leaving the agent to infer usage context from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_milestoneA
DestructiveIdempotent

Delete a milestone by ID.

Args: project_id: UUID of the project milestone_id: UUID of the milestone

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
milestone_idYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=false, destructiveHint=true, idempotentHint=true. The description adds no additional behavioral context such as cascading effects or reversibility.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: two short sentences plus parameter list. Every word is necessary and to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and simple delete action, description is adequate but could mention side effects or restrictions. Siblings like manage_milestone_archive provide alternatives not referenced.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage, so the description adds value by stating 'UUID of the project' and 'UUID of the milestone', clarifying the required IDs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 'milestone', distinguishing it from sibling tools like delete_project, delete_cycle, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives like manage_milestone_archive or other delete tools. The description provides no context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_moduleC
DestructiveIdempotent

Delete a module by ID.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project module_id: UUID of the module

ParametersJSON Schema
NameRequiredDescriptionDefault
module_idYes
project_idYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description merely repeats the action 'delete' without elaborating on consequences (e.g., cascading deletions, reversibility, or permission requirements). Annotations already indicate destructiveHint=true, but the description adds minimal value beyond that. It also incorrectly includes 'workspace_slug' in the args, which is not present in the input schema, creating confusion.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short but contains unnecessary 'Args:' formatting and an extraneous parameter. It could be more concise by directly stating the required parameters without the label.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is destructive (destructiveHint=true) and has no output schema, the description should explain what happens on success/failure, any dependencies, and the role of the missing workspace_slug. It fails to provide this context, making it incomplete for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It attempts to describe parameters but incorrectly includes 'workspace_slug', an argument not in the schema. While it correctly mentions 'project_id' and 'module_id' as UUIDs, the extra erroneous parameter misleads the agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Delete a module by ID', using a specific verb ('delete') and resource ('module'). This distinguishes it from sibling tools like create_module, retrieve_module, and update_module.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. It does not specify any preconditions, dependencies, or cases where deletion might be inappropriate (e.g., if the module has associated work items).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_projectC
DestructiveIdempotent

Delete a project by ID.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

TDQS

C2.6/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, but the description adds no behavioral context. Worse, it mentions 'workspace_slug' as an argument, contradicting the input schema which only has 'project_id'. This mismatch undermines transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short but includes an incorrect parameter (workspace_slug) not present in the schema, making it misleading. Conciseness is not an excuse for inaccuracy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

As a destructive tool, the description lacks context on consequences, error handling, or reversibility. The parameter error further reduces completeness. No output schema exists to compensate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. The description lists two parameters but one (workspace_slug) is not in the schema, and the other (project_id) is described only as 'UUID of the project', adding minimal meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Delete a project by ID' with a specific verb and resource, distinguishing it from siblings like retrieve_project, update_project, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance. The description only states the action, leaving the agent to infer usage from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_project_estimateB
DestructiveIdempotent

Delete the estimate for a project.

Args: project_id: UUID of the project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds no behavioral context beyond the obvious action. Lacks details on irreversibility, permissions, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is very short with no unnecessary repetition. However, it could be better structured or include a brief note on behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and multiple sibling tools, the description lacks completeness. Does not explain post-deletion state or how to verify success. Minimal for a destructive action.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must compensate. It adds 'UUID of the project' which provides type clarity beyond the schema's 'string'. However, it is minimal and does not explain constraints like required format or existence.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Delete the estimate for a project', which is a specific verb and resource. It distinguishes from sibling tools like get_project_estimate, create_project_estimate, update_project_estimate, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. Does not mention prerequisites or context (e.g., estimate must exist). No exclusions or when-not-to-use information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_project_estimate_pointB
DestructiveIdempotent

Delete a single estimate point.

Args: project_id: UUID of the project estimate_id: UUID of the estimate estimate_point_id: UUID of the estimate point to delete

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
estimate_idYes
estimate_point_idYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide destructiveHint=true and readOnlyHint=false. The description adds no additional behavioral context such as irreversibility, permission requirements, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is short and front-loaded with the action. However, it repeats parameter names in a list format, which is acceptable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete operation with no output schema, the description lists required parameters and is complete enough. It could mention that deletion is irreversible.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description adds minimal value by stating each parameter is a UUID. This clarifies the expected format beyond the parameter name but lacks additional constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Delete a single estimate point', indicating the action and resource. It distinguishes among sibling delete tools by specifying 'estimate point'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives like delete_project_estimate or delete_work_item. No context about prerequisites or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_stateC
DestructiveIdempotent

Delete a state by ID.

Args: project_id: UUID of the project state_id: UUID of the state

ParametersJSON Schema
NameRequiredDescriptionDefault
state_idYes
project_idYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructive and idempotent; description adds no extra context about side effects or permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very short, but lacks substance; could include more useful details without verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and siblings offering related operations, description fails to provide sufficient context for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%; description mislabels project_id as 'UUID of the state' and adds no meaning beyond parameter names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Delete a state by ID', specifying verb and resource. However, it does not differentiate from other delete tools among siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives (e.g., archive), nor prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_work_itemC
DestructiveIdempotent

Delete a work item by ID.

Args: project_id: UUID of the project work_item_id: UUID of the work item

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
work_item_idYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds no extra context about side effects, such as whether deletion is hard or soft, or cascading impacts.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise with a single line and an Args section. No wasted words, but could include more useful detail without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple destructive tool with no output schema, the description lacks information about return values, confirmation, or recovery. Given the annotations, the description could be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 only states parameter names and mentions 'UUID' implicitly, but no format examples, validation rules, or additional context beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Delete a work item by ID', which uses a specific verb and resource. Among many siblings with work item operations, this uniquely identifies the deletion function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., other delete tools like delete_work_item_relation_definition). No mention of prerequisites or conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_work_item_attachmentA
DestructiveIdempotent

Delete an attachment from a work item.

Use list_work_item_attachments to get the attachment_id.

Args: project_id: UUID of the project work_item_id: UUID of the work item attachment_id: UUID of the attachment to delete

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
work_item_idYes
attachment_idYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the destructive nature is clear. The description adds the step to get attachment_id but does not disclose additional behavioral traits like irreversibility or permission needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the purpose, and includes only essential information. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple deletion tool with annotations, the description covers the action and ID retrieval. However, it lacks information about return value, success/error handling, and any side effects, making it somewhat incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 adds basic type info ('UUID') for each parameter, which is helpful but minimal. Could include more detail on value constraints or sources.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete an attachment') and the resource ('from a work item'). It is specific and distinguishes itself from sibling attachment tools like list, upload, download.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises using list_work_item_attachments to get the attachment_id, which is a helpful prerequisite. Does not explicitly mention when not to use, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_work_item_commentA
DestructiveIdempotent

Delete a comment for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item comment_id: UUID of the comment

ParametersJSON Schema
NameRequiredDescriptionDefault
comment_idYes
project_idYes
work_item_idYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the bar is lower. The description adds no additional behavioral context, such as that the deletion is permanent or requires specific permissions. It neither contradicts nor enriches 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: one line for the action and a list of arguments. Every sentence is necessary and efficiently conveys the tool's purpose and required inputs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete operation, the description, combined with annotations and schema, provides near-complete information. It lacks mention of return value or error scenarios, but these are typical for delete tools and not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description adds value by specifying that each parameter is a UUID. However, the parameter names are already self-explanatory, and the description only adds 'UUID of the ...' which is minimal but helpful.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Delete a comment for a work item,' specifying the verb and resource. Among siblings like delete_work_item and delete_work_item_relation_definition, it uniquely identifies the action of deleting a work item comment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when or when not to use this tool. There is no mention of prerequisites, permissions, or alternatives. The description simply states the action without any usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_work_item_propertyA
DestructiveIdempotent

Delete a work item property by ID.

Args: work_item_property_id: UUID of the property project_id: UUID of the project. Omit for workspace scope. work_item_type_id: UUID of the work item type - omit to use project-level endpoint

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNo
work_item_type_idNo
work_item_property_idYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and readOnlyHint=false. Description adds scoping nuance but no new behavioral traits beyond what annotations convey. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise (one sentence plus Args list) and front-loaded. Could remove 'Args:' label, but overall efficient with no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Basic usage is clear, but lacks details on return values, error handling, or behavior when property doesn't exist. Without output schema, agent may need to infer. Adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but description enriches parameter meaning: 'UUID of the property', 'Omit for workspace scope', and 'omit to use project-level endpoint'. This compensates for missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The statement 'Delete a work item property by ID' clearly specifies the action (delete) and the resource (work item property). It distinguishes from sibling tools like delete_work_item_property_value and delete_work_item_relation_definition.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides guidance on when to omit optional parameters: 'Omit for workspace scope' for project_id and 'omit to use project-level endpoint' for work_item_type_id. However, no explicit when-not-to-use or alternatives compared to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_work_item_property_optionA
DestructiveIdempotent

Delete an option from a work item property.

Args: property_id: UUID of the work item property option_id: UUID of the option project_id: UUID of the project. Omit for workspace scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
option_idYes
project_idNo
property_idYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true, but description only repeats the delete action without disclosing potential side effects or scope limitations beyond parameter descriptions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: one purpose sentence followed by bullet-style parameter descriptions. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple deletion tool with annotations, but lacks error conditions, prerequisites (e.g., property must exist), or behavior when option is in use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema coverage, description adds UUID explanations for each parameter and notes project_id can be omitted for workspace scope, providing meaningful context beyond field names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (delete) and the resource (option from work item property), distinguishing it from sibling tools like delete_work_item_property or delete_work_item_property_value.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. Does not mention prerequisites or cases where other deletion tools might be preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_work_item_property_valueA
DestructiveIdempotent

Delete the value(s) of a custom property on a work item.

For multi-value properties, deletes all values for that property.

Args: project_id: UUID of the project work_item_id: UUID of the work item property_id: UUID of the work item property

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
property_idYes
work_item_idYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide destructiveHint=true and idempotentHint=true. The description adds valuable context: it deletes 'value(s)' and for multi-value properties, all values are deleted. This goes beyond annotations, but it doesn't mention error cases or success response. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the main action. The multi-value behavior note is important. The Args list is somewhat redundant with the schema but provides extra context. No wasted sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the destructive nature (annotations) and absence of output schema, the description should clarify success/failure behavior, error conditions (e.g., property not found), and idempotency. It only covers the multi-value nuance. The agent is left wondering what happens upon execution.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage, the description bears the burden. It adds labels like 'UUID of the project' etc., providing basic semantic mapping. However, it doesn't add constraints like format validation, immutability, or relationships. For 3 parameters, this is adequate but minimal.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool deletes value(s) of a custom property on a work item, specifying it's for custom properties and clarifying behavior for multi-value properties. This distinguishes it from siblings like set_work_item_property_value (set) and delete_work_item_property (delete property definition).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (when you want to delete a property value) but does not explicitly guide when to use this over alternatives, nor does it mention prerequisites (e.g., property must exist) or when not to use it. The clarification about multi-value behavior is helpful but not comprehensive guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_work_item_relation_definitionA
DestructiveIdempotent

Delete a workspace relation definition.

Args: definition_id: UUID of the relation definition to delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
definition_idYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true. The description adds no additional behavioral context, such as whether deletion cascades or if underlying relations must be empty first. It simply restates the name's action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences with no fluff. The verb-resource pattern is front-loaded, and the parameter is documented efficiently. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (single parameter, no output schema), the description covers the basics but leaves gaps. For a destructive and idempotent tool, it does not address side effects or prerequisites (e.g., whether the definition must be unused). It is adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 documents the parameter 'definition_id' as 'UUID of the relation definition to delete,' adding purpose beyond the schema. However, it omits format specifics or constraints beyond the term 'UUID', leaving some ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete') and the resource ('workspace relation definition'), leaving no ambiguity. It effectively distinguishes the tool from siblings like create, update, and list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when deletion of a relation definition is needed, but provides no explicit guidance on when to use versus alternatives, no prerequisites, and no exclusions. For a destructive tool, context about requirements (e.g., no existing relations) would be helpful.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_work_item_typeA
DestructiveIdempotent

Delete a work item type by ID.

Args: work_item_type_id: UUID of the work item type project_id: UUID of the project. Omit for workspace scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNo
work_item_type_idYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide destructiveHint=true and idempotentHint=true. The description does not add behavioral details beyond 'Delete', such as potential side effects, prerequisites, or error scenarios.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: one action sentence followed by clear parameter explanations. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple delete operation. Annotations cover safety and idempotence. Missing details like failure modes, but acceptable given tool simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema description coverage, the description explains both parameters: work_item_type_id as UUID and project_id as UUID with scope clarification. This adds meaning beyond the schema structure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Delete a work item type by ID', using a specific verb and resource. It distinguishes from sibling tools like delete_work_item (deletes a work item) and other delete operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. It does not mention conditions, when-not, or provide context for choosing delete_work_item_type over other delete or update tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_work_logC
DestructiveIdempotent

Delete a work log for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item work_log_id: UUID of the work log

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
work_log_idYes
work_item_idYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description only repeats the word 'delete' from the destructive hint annotation. It fails to disclose important behavioral traits such as irreversibility, cascading effects on related data, required permissions, or idempotency behavior beyond what annotations already provide, adding no new context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise with a single line and a bullet list. However, it could be better structured by grouping parameters or adding a sentence about return value. It is not verbose but lacks sufficient detail for a deletion tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and three required parameters, the description does not explain what the tool returns upon success or what errors may occur. It omits confirmation of deletion or any side effects, leaving the agent uncertain about the outcome.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description merely lists parameter names without explaining their hierarchical relationships or formats. For example, it doesn't clarify that project_id is the parent of work_item_id, which would help the agent construct correct invocations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it deletes a work log for a work item, using specific verb and resource. It distinguishes itself from sibling tools like create_work_log and update_work_log by its destructive nature, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as update_work_log or list_work_logs. There is no mention of prerequisites, conditions for deletion, or when not to use it, leaving the AI agent to infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detach_page_from_work_itemA
DestructiveIdempotent

Remove a page link from a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item work_item_page_id: UUID of the work item page link (not the page ID)

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
work_item_idYes
work_item_page_idYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds value by clarifying that 'work_item_page_id' is the link ID, not the page ID. However, it does not discuss side effects, permissions, or return behavior beyond the removal action. Annotations already indicate destructive and idempotent, so the description adds moderate contextual information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: one sentence for the action followed by a clean bullet list of three arguments. Every sentence is purposeful 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.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the action and parameters are described, the description is incomplete regarding the output/return behavior, which is important since there is no output schema provided. It does not specify what happens on success (e.g., returns a boolean or void) or error conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates well by explaining each parameter's role (e.g., 'UUID of project', 'UUID of the work item page link (not the page ID)'). This adds essential meaning beyond the bare schema, though format details are omitted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Remove a page link from a work item') and distinguishes it from related siblings like 'attach_page_to_work_item' and 'list_work_item_pages'. It specifies the exact resource and operation, 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide guidance on when to use this tool versus alternatives, nor does it mention prerequisites (e.g., needing the link ID from list_work_item_pages). No explicit 'when to use' or 'when not to use' context is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_featuresA
Read-only

Get feature flags.

Returns a project's features if project_id is given, otherwise the workspace's features.

Args: project_id: UUID of the project. Omit for workspace features.

Returns: ProjectFeature when project_id is given, otherwise WorkspaceFeature.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true. The description adds conditional behavior (returns different types based on project_id), which is useful beyond annotations. No additional behavioral traits like auth or rate limits are needed for such a simple read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with three sentences plus Arg/Returns. The first sentence immediately states the action. No wasted words, and the structure is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter) and the presence of an output schema, the description provides sufficient information. It specifies return types and conditions, making it complete for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description explains the parameter: 'UUID of the project. Omit for workspace features.' This adds meaning beyond the schema, making it very clear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get feature flags' and distinguishes between project-level and workspace-level based on the presence of project_id. This differentiates it from sibling tools like update_project_features and update_workspace_features.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use the parameter (with project_id for project features, without for workspace features). It does not explicitly mention when not to use, but the context of sibling tools provides alternative update tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_instance_infoA
Read-only

Get edition/version info and known API limitations of the connected Plane instance.

Use this to understand up-front which tool families are unavailable (e.g. pages, epics/work-item types, initiatives, estimates and milestones on Community Edition) instead of discovering them through 404 errors.

Returns: Dict with base_url, edition (e.g. "PLANE_COMMUNITY"), version, compat_reference, and - for Community Edition - unavailable_features.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety and variability. The description adds specific return fields (base_url, edition, version, compat_reference, unavailable_features) and the behavioral benefit of avoiding 404 errors, enriching 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and well-structured: purpose sentence, usage guideline, and return format. It is front-loaded with the core action. Could be slightly trimmed in the return dict list, but overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no params, has output schema), the description fully covers what the tool does, why to use it, and what it returns. It is self-contained and leaves no gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are 0 parameters, so baseline is 4. The description adds no parameter info because none exist, but it is not expected to. It correctly focuses on the tool's output and purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get edition/version info and known API limitations of the connected Plane instance.' It uses a specific verb ('Get') and resource ('edition/version info and known API limitations'), distinguishing it from siblings that operate on projects, work items, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly advises to 'Use this to understand up-front which tool families are unavailable... instead of discovering them through 404 errors.' This provides a clear when-to-use and a rationale for using before other tools, with no ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_meA
Read-only

Get current user information.

Returns: UserLite object containing current user information

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
emailNo
avatarNo
last_nameNo
avatar_urlNoAvatar URL
first_nameNo
display_nameNo

TDQS

A4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds no behavioral context beyond the annotations (readOnlyHint, openWorldHint). It does not mention authentication requirements, side effects, or any dynamic behavior, leaving the agent to infer from the tool name and annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is exceptionally concise—two sentences that convey the purpose and return type without unnecessary words. 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, annotations present, output schema exists), the description is adequately complete. It does not explain the UserLite object, but the output schema covers that, so no further detail is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so the input schema fully covers parameter semantics. The description provides no additional parameter details, but with zero parameters, the baseline of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves information about the current user. It uses a specific verb ('Get') and resource ('current user information'), and it is distinct from sibling tools that operate on projects, work items, or other entities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The tool is self-explanatory for retrieving current user info; no alternatives exist among siblings. While no explicit when-to-use or when-not-to-use guidance is provided, the context is straightforward, making it clear 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.

get_pql_referenceA
Read-only

Return the Plane Query Language (PQL) syntax reference.

Call this when composing the pql filter for list_work_items, list_archived_work_items, list_cycle_work_items, list_module_work_items, or count_work_items.

Args: detail: "full" (default) returns the comprehensive reference with all operators, functions, common mistakes, and worked examples. "brief" returns the compact field/operator/function quick reference (lighter payload for simple queries).

Returns: Dict with detail (which version was returned) and reference (the PQL syntax text).

ParametersJSON Schema
NameRequiredDescriptionDefault
detailNofull

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only and open-world. Description adds concrete details: return format (dict with 'detail' and 'reference'), behavior of detail parameter (full vs brief). 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise, front-loaded with purpose, then usage, then parameter/return details. Every sentence is informative with no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given simple single-parameter tool with existing output schema, the description covers purpose, usage, parameter behavior, and return structure. Complete for agent decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage, so description fully explains the single parameter. Clearly defines the two enum values and their meanings (comprehensive vs compact reference), adding value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb 'Return' and specific resource 'PQL syntax reference'. Explicitly lists the sibling tools that use PQL filters, distinguishing its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to call the tool ('when composing pql filter for...'), providing clear context. Lacks explicit 'when not to use' or alternative tools, but the directive is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_project_estimateA
Read-only

Get the estimate configuration for a project.

Returns the active estimate system including its ID, which is required to call list_project_estimate_points.

Args: project_id: UUID of the project

Returns: Estimate object with id, name, and type fields

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameYes
typeNo
projectNo
last_usedNo
workspaceNo
created_atNo
created_byNo
updated_atNo
updated_byNo
descriptionNo
external_idNo
external_sourceNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds value by detailing the return object (id, name, type) and mentioning the requirement for calling another tool. No contradictions; it supplements the 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with three short paragraphs: purpose, Args, Returns. No redundant information, and the structure is clear and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has few parameters and an output schema, the description is complete. It explains the return fields and connects to another tool, fully covering what an agent needs to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only defines project_id as a string, but the description adds 'UUID of the project', providing type context beyond the schema. With schema description coverage at 0%, this extra detail is helpful for correct parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get the estimate configuration for a project.' It specifies the return value (active estimate system with ID) and links to a related tool (list_project_estimate_points), distinguishing it from siblings like create/update/delete estimate tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: use this tool to retrieve estimate configuration, and the returned ID is required for list_project_estimate_points. It doesn't explicitly state when not to use, but the read-only nature and sibling list imply it's not for modification, making it adequately clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_project_membersA
Read-only

List members of a project (filterable, paginated).

Optional filters first_name/last_name/email/display_name (case-insensitive contains), role_slug (exact), is_active, is_bot - combined with AND.

Args: project_id: UUID of the project. cursor: Prior response's next_cursor; omit for first page. per_page: Results per page (1-1000, default 100). order_by: Sort field; prefix '-' for descending.

Returns: Paginated envelope: results (members incl. role, role_slug, is_active, is_bot) + total_count, next_cursor, next_page_results.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
cursorNo
is_botNo
order_byNo
per_pageNo
is_activeNo
last_nameNo
role_slugNo
first_nameNo
project_idYes
display_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
resultsYes
grouped_byNo
extra_statsNo
next_cursorYes
prev_cursorYes
total_countYes
total_pagesYes
total_resultsYes
sub_grouped_byNo
next_page_resultsYes
prev_page_resultsYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=true (read-only). The description adds detailed behavioral context beyond annotations: filterable, paginated, case-insensitive contains for string filters, exact match for role_slug, and pagination envelope in returns. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: a one-line summary, optional filters grouping, and an Args section with each parameter's role. It is concise, front-loaded, and every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the moderate complexity (filtering, pagination), the description covers input, filters, pagination mechanics, and output format (paginated envelope with members, total_count, next_cursor, next_page_results). No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite the context signal indicating 0% schema coverage, the description explicitly lists all parameters with their behavior (e.g., 'case-insensitive contains', 'omit for first page', '1-1000, default 100', sort prefix '-'). Adds significant meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with 'List members of a project (filterable, paginated)', clearly stating the action, resource, and capabilities. It distinguishes from sibling tools like 'get_workspace_members' which lists workspace-level members.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the use of optional filters with AND logic and cursor-based pagination. It implicitly guides when to use (to list project members), but lacks explicit when-not guidance or direct comparison to similar tools like get_workspace_members.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_project_worklog_summaryC
Read-only

Get work log summary for a project.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project

Returns: List of ProjectWorklogSummary objects containing work item IDs and durations

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds no behavioral details beyond stating it returns a summary. Furthermore, it includes 'workspace_slug' in the Args list which is not present in the input schema, creating confusion about the actual required parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short but includes unnecessary detail about arguments that are not reflected in the schema, making it slightly misleading. It could be improved by aligning with the actual schema and removing extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description mentions a return type (list of ProjectWorklogSummary objects), which is useful. However, the inconsistency between described args and schema reduces completeness. With only one required parameter and an output schema available (implied), the description is mostly adequate but slightly flawed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, so the description is the sole source of parameter meaning. It explains project_id as 'UUID of the project', which adds basic context. However, it also mentions workspace_slug which is not in the schema, and provides no explanation for its usage or why it appears in the Args but not the required parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Get work log summary for a project', clearly specifying the verb (Get), resource (work log summary), and scope (project). This distinguishes it from sibling tools like list_work_logs which return individual logs, while this returns a summary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as list_work_logs. The description simply states what it does and lists arguments, but offers no context about prerequisites, typical use cases, or situations where this tool is preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_work_item_attachment_download_urlA
Read-only

Get a presigned download URL for a work item attachment.

Returns a time-limited URL (typically valid ~1 hour) that can be opened directly in a browser or downloaded with any HTTP client - no Plane authentication required on the URL itself.

Use list_work_item_attachments first to get attachment IDs and names.

Args: project_id: UUID of the project work_item_id: UUID of the work item attachment_id: UUID of the attachment

Returns: Dict with: download_url (presigned S3 URL), attachment_id, name.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
work_item_idYes
attachment_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds that the URL is presigned for ~1 hour and requires no Plane authentication, which provides useful behavioral context beyond annotations. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured with a clear title, a short paragraph, and labeled Args/Returns sections. Every sentence is informative without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 an output schema (implied by the return description), the description covers purpose, prerequisites, behavior, parameters, and return format completely. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, but the description compensates fully by naming each parameter and specifying they are UUIDs. This adds meaning beyond the raw schema types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it gets a presigned download URL for a work item attachment, using a specific verb and resource. It distinguishes itself from sibling tools like read_work_item_attachment, upload, delete, and list by focusing on URL generation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs the user to 'Use list_work_item_attachments first to get attachment IDs and names,' providing clear when-to-use guidance. It also notes that the URL is time-limited and requires no authentication, aiding correct invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_work_item_property_valueA
Read-only

Get the value(s) of a custom property on a work item.

Use list_work_item_properties to find the property_id for a given property name (e.g. "Acceptance Criteria").

Args: project_id: UUID of the project work_item_id: UUID of the work item property_id: UUID of the work item property

Returns: Single WorkItemPropertyValueDetail for non-multi properties, or list of WorkItemPropertyValueDetail for multi-value properties

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
property_idYes
work_item_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true (safe read) and openWorldHint=true (possible unknown properties). The description adds value by specifying the return format (single vs list based on property type) and requiring three UUIDs, but does not mention permissions or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, with a short purpose statement, a helpful tip, and cleanly separated Args and Returns sections. Every sentence serves a purpose, and the key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (3 required parameters, simple read operation) and the presence of an output schema, the description provides sufficient context: it explains the input, the return type variation, and references a companion tool. No gaps are evident.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by listing each parameter with a brief explanation (e.g., 'UUID of the project'), adding meaning beyond the schema's simple string type. It does not provide constraints or examples, but is adequate for a 3-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves the value(s) of a custom property on a work item, with a specific verb and resource. It distinguishes from sibling tools like list_work_item_properties (to find property IDs) and set_work_item_property_value (write operation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly directs users to use list_work_item_properties to find the property_id, providing clear context on the prerequisites. It also explains the return type varies by property type, but does not explicitly exclude alternative tools or scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_workspace_membersA
Read-only

List members of the current workspace (filterable, paginated).

Optional filters first_name/last_name/email/display_name (case-insensitive contains), role_slug (exact), is_active, is_bot - combined with AND.

Args: cursor: Prior response's next_cursor; omit for first page. per_page: Results per page (1-1000, default 100). order_by: Sort field; prefix '-' for descending.

Returns: Paginated envelope: results (members incl. role, role_slug, is_active, is_bot) + total_count, next_cursor, next_page_results.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
cursorNo
is_botNo
order_byNo
per_pageNo
is_activeNo
last_nameNo
role_slugNo
first_nameNo
display_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
resultsYes
grouped_byNo
extra_statsNo
next_cursorYes
prev_cursorYes
total_countYes
total_pagesYes
total_resultsYes
sub_grouped_byNo
next_page_resultsYes
prev_page_resultsYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, and the description adds value by detailing filter behavior, pagination, and return structure, which 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, well-structured with Args and Returns sections, and every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 the detailed explanation of return values (paginated envelope with member fields), the description is complete and informative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema coverage, the description explains the purpose and behavior of key parameters (cursor, per_page, order_by) and filter fields with case-insensitivity and exact match details, adding meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists workspace members with filtering and pagination, distinguishing it from sibling tools like get_project_members.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context on how to use filters, pagination, and sorting, but does not explicitly state when not to use 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.

import_work_item_types_to_projectA

Bulk-link workspace-level work item types to a project.

Imports one or more workspace-scoped work item types into a project so that they become available for use within that project.

For the common case of getting one named type usable in a project, prefer resolve_work_item_type, which finds-or-creates and imports in one step.

Args: project_id: UUID of the project work_item_type_ids: List of workspace-level work item type UUIDs to import

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
work_item_type_idsYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-readOnly, non-destructive, open-world. Description adds the import behavior but does not disclose potential side effects (e.g., existing type behavior, reversibility). It adds parameter details but not deeper 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with a one-line summary, then detailed explanation, then parameter list. Some redundancy (e.g., 'Bulk-link...to a project' followed by 'Imports...'), but overall clear and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 what the tool does and what parameters are needed. It covers the core functionality and distinguishes from siblings, though missing edge cases or error conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so burden is on description. The 'Args' section explains 'project_id: UUID of the project' and 'work_item_type_ids: List of workspace-level work item type UUIDs to import', adding meaning beyond the schema's bare types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'bulk-link workspace-level work item types to a project' and explains the purpose of making them available within the project. It distinguishes from the sibling tool resolve_work_item_type, making its specific role clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises 'For the common case of getting one named type usable in a project, prefer resolve_work_item_type', providing clear when-to-use and when-not-to-use guidance relative to an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_archived_work_itemsA
Read-only

List archived work items in a project with optional PQL filtering.

Args: project_id: UUID of the project pql: PQL filter expression. Omit to list all archived items. order_by: Field to sort by; prefix with - for descending (default -archived_at). per_page: Results per page, 1-100 (default 100). cursor: Pagination cursor from a previous response's next_cursor. expand: Comma-separated related fields to expand. fields: Comma-separated sparse fieldset.

Returns: Paginated envelope with results, total_count, next_cursor, prev_cursor.

ParametersJSON Schema
NameRequiredDescriptionDefault
pqlNoOptional Plane Query Language (PQL) filter. Examples: `priority = "urgent" AND assignee = currentUser()`, `stateGroup IN openStates() AND isOverdue()`. UUID fields (project, assignee, state, label, cycle, module, type, milestone, createdBy) need UUIDs - call the relevant `list_*` tool first if you only have a name or short identifier (e.g. `LSS` → call `list_projects` and match `identifier` to get `id`). Call `get_pql_reference` for full PQL syntax before composing complex queries.
cursorNo
expandNo
fieldsNo
order_byNo
per_pageNo
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds value by specifying pagination details (next_cursor, prev_cursor), default sorting (by archived_at), and that results are returned in a paginated envelope. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured as a docstring with Args and Returns sections. It is clear and informative, though the PQL example is somewhat lengthy. It front-loads the purpose effectively.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 still details the return structure (paginated envelope with total_count, next_cursor, prev_cursor). It covers all parameters and provides enough 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.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite low schema description coverage (14%), the description provides defaults and meanings for all 7 parameters (project_id, pql, order_by, per_page, cursor, expand, fields). It includes PQL examples and explains sorting syntax, adding significant value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List archived work items in a project with optional PQL filtering.' It uses a specific verb (list) and resource (archived work items), distinguishing it from siblings like 'list_work_items' (non-archived) and 'search_work_items'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides default behaviors and parameter guidance (e.g., 'Omit to list all archived items') but does not explicitly state when to use this tool versus alternatives like 'list_work_items' or 'search_work_items'. The context of archived vs. active is implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_cyclesA
Read-only

List cycles in a project. Active (non-archived) cycles by default.

Args: project_id: UUID of the project archived: Set True to list archived cycles instead of active ones. status: Filter active cycles by status - "current" (running now), "upcoming" (starts later), "completed" (ended), "draft" (no dates), or "incomplete" (not yet finished). Ignored when archived is True. cursor: Pagination cursor from a previous response's next_cursor (form "{per_page}:{page}:{offset}"). Omit for the first page. per_page: Number of results per page (1-1000, default and max 1000). order_by: Field to order results by. Prefix with '-' for descending.

Returns: Paginated envelope: results (lite cycles) + total_count, next_cursor, next_page_results.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNo
statusNo
archivedNo
order_byNo
per_pageNo
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description fully discloses behavior: default active cycles, pagination mechanics, status filter details, and return envelope structure. This adds significant value beyond annotations (readOnlyHint, openWorldHint) and does not contradict them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with a clear purpose sentence followed by a bullet-like parameter list. It is slightly verbose but well-organized and front-loads key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 6 parameters and the presence of an output schema, the description covers purpose, parameters, pagination, and return envelope. It does not cover error handling or rate limits, but the annotations and sibling context provide adequate completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description provides detailed explanations for all 6 parameters, including defaults, accepted values for status, cursor format, and ordering syntax. This significantly compensates for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 'cycles in a project', with a default scope of active cycles. This differentiates it from siblings like 'list_work_items' or 'list_projects'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the default behavior and parameter options for filtering (archived, status), which guides when to use non-default options. However, it does not explicitly state when not to use this tool or recommend alternatives among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_cycle_work_itemsA
Read-only

List work items in a cycle with optional PQL filtering.

Args: project_id: UUID of the project cycle_id: UUID of the cycle pql: PQL filter expression. See field description for syntax. Omit to list all items in the cycle. order_by: Field to sort by; prefix with - for descending. per_page: Results per page, 1-100 (default 25). cursor: Pagination cursor from a previous response's next_cursor. expand: Comma-separated related fields to expand. fields: Comma-separated sparse fieldset.

Returns: Paginated envelope with results, total_count, next_cursor, prev_cursor.

ParametersJSON Schema
NameRequiredDescriptionDefault
pqlNoOptional Plane Query Language (PQL) filter. Examples: `priority = "urgent" AND assignee = currentUser()`, `stateGroup IN openStates() AND isOverdue()`. UUID fields (project, assignee, state, label, cycle, module, type, milestone, createdBy) need UUIDs - call the relevant `list_*` tool first if you only have a name or short identifier (e.g. `LSS` → call `list_projects` and match `identifier` to get `id`). Call `get_pql_reference` for full PQL syntax before composing complex queries.
cursorNo
expandNo
fieldsNo
cycle_idYes
order_byNo
per_pageNo
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and openWorldHint=true. The description adds behavioral context: returns paginated envelope with results, total_count, next_cursor, prev_cursor. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Structured with Args and Returns, each parameter explained in one line. No fluff, every sentence adds value. Appropriate length for 8 parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given output schema exists, return values are explained via 'Returns' section. Covers all parameters, pagination, filtering, and dependencies like project_id and cycle_id. Fully adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 13%, but the description explains all 8 parameters in detail, including PQL examples and pagination semantics, adding significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List work items in a cycle with optional PQL filtering', specifying the verb (list), resource (work items in a cycle), and distinguishing from siblings like list_work_items which may not be cycle-specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides guidance on optional parameters like pql, order_by, pagination, and hints at using get_pql_reference for complex queries. Does not explicitly exclude alternatives, but the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_initiative_projectsA
Read-only

List projects linked to an initiative.

Args: initiative_id: UUID of the initiative params: Optional query parameters (e.g., per_page, cursor)

Returns: List of linked Project objects

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
initiative_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds no additional behavioral traits beyond parameter descriptions, so minimal extra value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence for purpose followed by concise parameter and return descriptions. No wasted words, well front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers inputs and basic purpose. With output schema present, return description is adequate. Could mention pagination behavior explicitly, but overall sufficient for a simple list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description explains initiative_id as 'UUID of the initiative' and params with examples (per_page, cursor). This adds meaningful context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List projects linked to an initiative' with a specific verb and resource. It distinguishes from siblings like list_initiatives (lists initiatives) and manage_initiative_projects (likely manages linking).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when needing to list projects for an initiative but does not explicitly state when to use vs alternatives, nor mention any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_initiativesA
Read-only

List all initiatives in a workspace.

Args: params: Optional query parameters as a dictionary (e.g., per_page, cursor)

Returns: List of Initiative objects

Raises: ToolError: if the initiatives feature is disabled. When disabled, initiatives are "Initiative" work items - the error gives the steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=true and openWorldHint=true, and the description adds that a ToolError is raised when the initiatives feature is disabled. However, it does not discuss pagination behavior or potential large response sizes beyond the open world hint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise but includes a docstring-like breakdown (Args, Returns, Raises) that adds structure. The main sentence is front-loaded, though the docstring format is slightly verbose for a tool description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 covers the error case and implies pagination via parameter examples. It is reasonably complete but could mention pagination behavior explicitly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The parameter 'params' has 0% schema description coverage, but the description elaborates with 'Optional query parameters as a dictionary (e.g., per_page, cursor)', adding meaningful context beyond the empty schema definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all initiatives in a workspace,' specifying the verb (list), resource (initiatives), and scope (all in workspace). It is distinct from siblings like create, retrieve, update, delete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is provided. The description does not mention when to use this tool versus alternatives such as list_initiative_projects or retrieve_initiative, nor does it specify prerequisites or limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_intake_work_itemsB
Read-only

List all intake work items in a project.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project params: Optional query parameters as a dictionary (e.g., per_page, cursor)

Returns: List of IntakeWorkItem objects

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the agent knows it's a safe read operation. The description adds no further behavioral traits beyond the parameter list, but the read-only nature is consistent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with Args and Returns sections, but it includes 'workspace_slug' which is not in the schema, wasting space and potentially misleading. The description is otherwise reasonably concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 does not need to explain return values. However, the inconsistency with 'workspace_slug' and lack of pagination or filtering details beyond 'params' makes the description incomplete for a list tool. More guidance on when to use this over list_work_items would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaning by mentioning 'workspace_slug' as an argument, but this parameter is not present in the input schema, causing inconsistency. The description of 'params' as optional query parameters (per_page, cursor) adds some value, but the schema coverage is 0% and the extra invalid parameter reduces reliability.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all intake work items in a project,' which is a specific verb+resource+scope. It distinguishes itself from sibling tools like list_work_items by specifying 'intake' work items.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for listing intake work items in a project, but does not explicitly state when to use this tool versus alternatives like list_work_items, nor does it provide any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_labelsA
Read-only

List all labels in a project.

Args: project_id: UUID of the project params: Optional query parameters as a dictionary

Returns: List of Label objects

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint: true and openWorldHint: true. The description only adds 'Returns: List of Label objects', which does not significantly add behavioral context beyond the annotations. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with a clear purpose statement followed by Args and Returns sections. Every sentence serves a purpose, and there is no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 an output schema, the description covers the main purpose and return type. However, it does not mention pagination or filtering options, which could be relevant for a list operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description adds some meaning by stating 'project_id: UUID of the project' and 'params: Optional query parameters as a dictionary'. However, it does not specify what query parameters are allowed, leaving ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all labels in a project' with a specific verb and resource. It distinguishes from sibling tools like 'create_label', 'retrieve_label', 'update_label', and 'delete_label' by focusing on listing all labels.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides the context 'in a project' but does not explicitly state when to use this tool over alternatives like 'retrieve_label' or 'manage_work_item_label'. Usage is implied but not guided with exclusions or when-not scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_milestonesA
Read-only

List all milestones in a project.

Args: project_id: UUID of the project params: Optional query parameters as a dictionary

Returns: List of Milestone objects

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint and openWorldHint. Description confirms read-only listing and return of Milestone objects. No contradictions, but minimal added behavioral insight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Short and front-loaded with purpose and args. Efficient, no superfluous text. Could be slightly more structured but overall concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return value is covered. Annotations handle safety. Description adequately explains purpose and parameters, but lacks depth on params behavior given openWorldHint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema coverage at 0%, description explains project_id as UUID and params as optional dictionary. Lacks specifics on allowed keys or usage, but covers basic meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'List all milestones in a project' with specific verb and resource. Distinguishes from retrieve_milestone and other milestone functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Does not explicitly state when to use or not use this tool versus alternatives. Provides no exclusions or context for choosing among sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_milestone_work_itemsC
Read-only

List work items in a milestone.

Args: project_id: UUID of the project milestone_id: UUID of the milestone params: Optional query parameters as a dictionary

Returns: List of MilestoneWorkItem objects in the milestone

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
project_idYes
milestone_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the read-only nature is known. The description adds no further behavioral context (e.g., pagination, sorting, error handling). The 'params' dictionary is vague and undocumented.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise with no wasted words; uses a clear docstring format. However, it could be even more efficient by omitting obvious parameter types if schema already provides, but it's acceptable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the description omits important details like filtering, sorting, pagination, and error scenarios. For a listing tool with many siblings, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description merely restates parameter types ('UUID', 'dictionary') without explaining accepted query parameters or constraints. Minimal value added over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List work items in a milestone' with specific verb and resource. It distinguishes from sibling tools like 'list_work_items' (which likely lists all work items) and 'manage_milestone_work_items' (which adds/removes).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like 'search_work_items' or 'list_cycle_work_items'. The description lacks when-not-to-use or alternative suggestions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_modulesA
Read-only

List modules in a project.

Args: project_id: UUID of the project archived: Set True to list archived modules instead of active ones. cursor: Pagination cursor from a previous response's next_cursor (form "{per_page}:{page}:{offset}"). Omit for the first page. per_page: Number of results per page (1-1000, default and max 1000). order_by: Field to order results by. Prefix with '-' for descending.

Returns: Paginated envelope: results (lite modules) + total_count, next_cursor, next_page_results.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNo
archivedNo
order_byNo
per_pageNo
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint and openWorldHint. Description adds behavioral details: pagination mechanism (cursor, per_page), ordering, and the difference between active and archived modules. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise, well-structured with separate Args and Returns sections. Every sentence adds value, no fluff. Front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers all parameters and return format (paginated envelope with results, total_count, next_cursor, next_page_results). Output schema exists but description summarizes it adequately. With annotations, no gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 0% description coverage, so the description fully compensates by providing clear semantics for all 5 parameters: project_id, archived, cursor, per_page, order_by. Each parameter is explained with type and usage notes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'List modules in a project' – specific verb and resource. Distinguishes from sibling list tools (e.g., list_work_items, list_cycles) by focusing on modules. The description also clarifies default behavior (active modules) and the use of the archived parameter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context: used to list modules in a project, with options like archived filter and pagination. Does not explicitly state when not to use or compare to alternatives, but the purpose is unambiguous and the parameter descriptions guide correct invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_module_work_itemsA
Read-only

List work items in a module with optional PQL filtering.

Args: project_id: UUID of the project module_id: UUID of the module pql: PQL filter expression. See field description for syntax. Omit to list all items in the module. order_by: Field to sort by; prefix with - for descending. per_page: Results per page, 1-100 (default 25). cursor: Pagination cursor from a previous response's next_cursor. expand: Comma-separated related fields to expand. fields: Comma-separated sparse fieldset.

Returns: Paginated envelope with results, total_count, next_cursor, prev_cursor.

ParametersJSON Schema
NameRequiredDescriptionDefault
pqlNoOptional Plane Query Language (PQL) filter. Examples: `priority = "urgent" AND assignee = currentUser()`, `stateGroup IN openStates() AND isOverdue()`. UUID fields (project, assignee, state, label, cycle, module, type, milestone, createdBy) need UUIDs - call the relevant `list_*` tool first if you only have a name or short identifier (e.g. `LSS` → call `list_projects` and match `identifier` to get `id`). Call `get_pql_reference` for full PQL syntax before composing complex queries.
cursorNo
expandNo
fieldsNo
order_byNo
per_pageNo
module_idYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description fully discloses the read-only nature (consistent with readOnlyHint), pagination behavior, optional expansions, field selection, and the return envelope structure. It adds value beyond annotations by explaining PQL usage and UUID resolution.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear Args and Returns sections, but is slightly lengthy due to extensive PQL guidance. It is front-loaded with the main purpose and could be trimmed slightly, but remains effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (8 parameters, output schema exists), the description covers all aspects: required params, optional filters, pagination, expansions, and return values. It is complete and provides sufficient context for correct agent usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 13% schema description coverage, the description compensates fully by documenting all 8 parameters in the Args section, including default values, constraints (per_page 1-100), and detailed PQL syntax with examples. This adds significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists work items in a module with optional PQL filtering. It specifies the required parameters (project_id, module_id) and distinguishes from sibling tools like list_work_items which lists all work items without module scoping.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides detailed guidance on using PQL with examples, references to other tools (list_projects, get_pql_reference), and pagination with cursor. However, it does not explicitly state when not to use this tool versus alternatives, though the module context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_pagesA
Read-only

List pages.

Lists a project's pages if project_id is given, otherwise workspace-level pages. The list contains metadata only - description_html is null here by design; fetch a page's content with retrieve_page.

Args: project_id: UUID of the project. Omit to list workspace pages. params: Optional query parameters as a dictionary (e.g., per_page, cursor)

Returns: List of Page objects (metadata only, no page content)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
project_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint. Description adds that description_html is null by design and directs to retrieve_page for content, providing 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is well-structured with a clear first sentence, followed by explanations and examples. It is efficient but not overly terse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 the tool's simplicity, the description adequately covers the behavior (metadata only, no content) and parameter usage. It could mention pagination details but is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description explains both parameters: project_id (UUID, omit for workspace) and params (dictionary for pagination/cursor). This adds significant value, though params could be more detailed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists pages, distinguishes between project-level and workspace-level pages, and differentiates from retrieve_page for content retrieval. The verb 'list' and resource 'pages' are precise.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description provides clear context: use for listing metadata, omit project_id for workspace pages, and fetch content with retrieve_page. It implicitly guides when not to use (for content), though it could mention search_pages for filtering.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_project_estimate_pointsA
Read-only

List all valid estimate points for a project.

Use this to discover the available estimate point UUIDs before calling update_work_item with an estimate_point value. Each EstimatePoint has an id (UUID to pass to update_work_item) and a value (display label such as "1", "2", "3", "5", "8" or "XS", "S", "M", "L", "XL").

Workflow: 1. Call get_project_estimate to get the estimate_id 2. Call list_project_estimate_points with that estimate_id 3. Pick the EstimatePoint whose value matches the user's intent 4. Pass that EstimatePoint.id to update_work_item(estimate_point=...)

Args: project_id: UUID of the project estimate_id: UUID of the estimate (from get_project_estimate)

Returns: List of EstimatePoint objects, each with id and value fields

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
estimate_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description claims to list 'ALL valid estimate points', but the annotation openWorldHint=true suggests the result may not be exhaustive, creating a contradiction. Annotations already indicate read-only, but the description does not address the open-world behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose, numbered workflow steps, parameter list, and return description. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the workflow, prerequisites, and return structure (list of EstimatePoint with id/value). Given the output schema exists, it is sufficient, though it could add error handling or validation notes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It identifies both parameters (project_id, estimate_id) and explains that estimate_id comes from get_project_estimate, but provides no additional constraints, format, or examples beyond basic UUID mention.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all valid estimate points for a project, distinguishes from sibling CRUD tools (create/update/delete), and explains the output structure with id and value.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly describes when to use (before update_work_item with estimate_point), provides a 4-step workflow, and mentions prerequisite of having estimate_id from get_project_estimate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_projectsA
Read-only

List projects in a workspace (lite, paginated).

Trimmed fields: id, identifier, name, description, emoji, icon_prop, cover_image, cover_image_url, archived_at. For full detail use retrieve_project.

Args: cursor: Prior response's next_cursor; omit for first page. per_page: Results per page (1-1000, default 1000). order_by: Sort field; prefix '-' for descending.

Returns: Paginated envelope: results + total_count, next_cursor, next_page_results (page again while next_page_results is true).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNo
order_byNo
per_pageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
resultsYes
grouped_byNo
extra_statsNo
next_cursorYes
prev_cursorYes
total_countYes
total_pagesYes
total_resultsYes
sub_grouped_byNo
next_page_resultsYes
prev_page_resultsYes

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint; description adds pagination behavior, trimmed field list, sort order with '-' prefix for descending, and return envelope structure. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise: one-line summary, list of trimmed fields, parameter descriptions, return format. Every sentence adds clear value without redundancy. Well-structured with bullet-like formatting.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given tool complexity (pagination, trimmed fields, 3 optional params), output schema exists, and description covers all: parameter defaults, pagination envelope, and referral to sibling for full details. Complete and self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but description fully explains each parameter: cursor (omit for first page), per_page (range 1-1000, default 1000), order_by (sort field with prefix for direction). Adds critical meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'List projects in a workspace (lite, paginated)' with specific verb and scope. Distinguishes from sibling 'retrieve_project' by noting trimmed fields and directing to that tool for full detail.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use this tool (listing projects with trimmed fields) and when to use alternative ('For full detail use retrieve_project'). Also explains pagination usage with cursor and per_page.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_rolesA
Read-only

List role definitions in the workspace.

namespace="workspace" → Owner/Admin/Member/Guest; "project" → project-role defs shared across all projects (Admin/Contributor/Commenter/Guest); omit for both. slug is stable but NOT globally unique (admin/guest exist in both namespaces) - key by (namespace, slug).

Args: namespace: "workspace" or "project"; omit for both. per_page: Results per page (server default 20). cursor: Prior response's next_cursor.

Returns: Paginated envelope: results (name, slug, namespace) + pagination fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNo
per_pageNo
namespaceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
resultsYes
grouped_byNo
extra_statsNo
next_cursorYes
prev_cursorYes
total_countYes
total_pagesYes
total_resultsYes
sub_grouped_byNo
next_page_resultsYes
prev_page_resultsYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint. The description adds details on pagination (cursor, per_page) and a crucial behavioral note about slug uniqueness, which goes 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief yet comprehensive, structured with clear sections for Args and Returns, and front-loads the main purpose. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 covers return values. It explains pagination and a key behavioral note. For a straightforward list tool, it is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description explains namespace values, cursor usage ('Prior response's next_cursor'), and a default for per_page. This compensates well for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists role definitions and explains the namespace parameter's effect on which roles are returned. It distinguishes itself from the sibling 'retrieve_role' implicitly by being a list operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides context on when to use the namespace parameter (workspace vs project vs both). Does not explicitly state when not to use or compare to alternatives, but the usage is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_statesA
Read-only

List all states in a project.

Args: project_id: UUID of the project params: Optional query parameters as a dictionary

Returns: List of State objects

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint true and openWorldHint true, so the description's statement of returning a List of State objects adds some context but doesn't disclose pagination, sorting, or other behaviors. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, with three short sentences that directly convey the purpose and parameters. Every sentence adds value, and the key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 an output schema (implied by 'Returns: List of State objects'), the description covers the basic purpose and parameters. However, it lacks details on pagination or filtering behavior for the list, which is a common need for such tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at 0%, the description adds meaning by explaining project_id as a UUID and params as optional query parameters as a dictionary. However, it doesn't specify available query parameter keys or values, leaving the agent to guess the full range of options.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 'all states in a project', which is specific and distinguishes it from sibling tools like retrieve_state (single state) or create_state. It leaves no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like retrieve_state for a single state or list_projects for projects. It lacks context on prerequisites or filtering, leaving the agent to infer usage without explicit help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_toolsetsA
Read-only

List the tool groups (toolsets) this server knows and which are active.

Toolsets are selected with the PLANE_TOOLSETS env var (comma-separated, or "all"). A client that only needs a subset can set it to load fewer tool definitions into its context window.

Returns: Dict with active (toolset names currently registered) and available (every toolset name the server supports).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description's additional details about returning active and available toolsets add useful behavioral context without contradicting annotations. It does not mention any destructive or side effects, which is appropriate given the read-only hint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a brief one-line purpose, a paragraph with contextual usage, and a clear 'Returns:' section. Every sentence adds value, with no redundant or vague phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters, annotations covering safety, and an implied output schema, the description is fully complete. It explains the purpose, selection mechanism, and return format, leaving no gaps for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and 100% schema description coverage, so baseline is 4 per guidelines. The description does not need to add parameter info, and it correctly omits such, focusing instead on the return structure and env var context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists tool groups (toolsets) that the server knows and which are active. It uses a specific verb 'List' and a resource 'tool groups (toolsets)', and distinguishes itself from sibling CRUD tools by being a meta-level discovery tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains how toolsets are selected via the PLANE_TOOLSETS env var and provides context for clients to reduce context window usage. While it does not explicitly mention when to use vs. alternatives, the tool is unique among siblings, so the guidance is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_work_item_activitiesB
Read-only

List activities for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item params: Optional query parameters as a dictionary

Returns: List of WorkItemActivity objects

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
project_idYes
work_item_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint and openWorldHint, which are not contradicted. The description adds that it returns a list of WorkItemActivity objects, but provides no further 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with clear Args and Returns sections. It avoids unnecessary words, though the Returns section may be redundant given the output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with an output schema, the description covers the basics but lacks details on ordering, filtering, pagination, or what constitutes an 'activity'. With only 3 parameters and no enums, it is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. The description merely lists the parameters in the Args section without adding meaning beyond type and required status (e.g., no explanation of 'params' format or allowed keys).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List activities for a work item', specifying verb and resource. It requires project_id and work_item_id, and distinguishes from sibling tools like 'retrieve_work_item_activity' (single activity).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. There is no mention of when not to use it or what distinguishes it from similar list tools like 'list_work_item_comments' or 'retrieve_work_item_activity'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_work_item_attachmentsA
Read-only

List all attachments for a work item.

Returns metadata for each attachment. To get a downloadable link for a specific attachment, use get_work_item_attachment_download_url.

Args: project_id: UUID of the project work_item_id: UUID of the work item

Returns: List of attachments, each with: id, name, size, content_type, created_at, created_by.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
work_item_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds that it returns metadata, not file content, and suggests the download tool. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with 4 sentences, front-loading the purpose and return info. Every sentence adds value, and the structure is clear with separate sections for description, args, and returns.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool and existence of an output schema and annotations, the description covers the main behavior and parameters. It could mention pagination or empty results, but overall it's complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, so the description carries full burden. It explains both parameters as UUIDs for project and work item, adding context that the schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all attachments for a work item' with a specific verb and resource. It also distinguishes from sibling 'get_work_item_attachment_download_url' by noting its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly directs users to 'get_work_item_attachment_download_url' for a downloadable link, providing an alternative. However, it doesn't explicitly state when NOT to use this tool or mention limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_work_item_commentsB
Read-only

List comments for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item params: Optional query parameters as a dictionary

Returns: List of WorkItemComment objects

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
project_idYes
work_item_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, but description adds no behavioral details such as pagination, ordering, or authorization requirements. Minimal 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is short and includes args in a list format. Efficient, though could be slightly better structured with bullet points.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple list tool with output schema present, but misses important context like default ordering, pagination behavior, or any limits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%; description only states parameter types (UUID, dictionary) without explaining acceptable query parameters for 'params'. No mention of pagination or filtering.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List comments for a work item', using a specific verb and resource. It distinguishes from sibling tools like retrieve_work_item_comment (single retrieval) and comment CRUD tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., retrieve_work_item_comment for a single comment). No prerequisites or context provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_work_item_pagesA
Read-only

List all pages linked to a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item

Returns: List of WorkItemPage link objects

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
work_item_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and openWorldHint=true. The description adds that it returns a list of link objects, which is useful but does not disclose additional behavioral traits like pagination or ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the core action. At four lines, every sentence contributes meaning, though the Args/Returns formatting is slightly repetitive given the schema and output schema exist.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 an output schema, the description provides the essential purpose and parameters. However, it lacks details on response format, pagination, or ordering, which would be helpful for completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description names the two required parameters (project_id, work_item_id) and their roles. However, it adds no details on format or constraints beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 'pages linked to a work item'. It effectively distinguishes from sibling tools like 'list_pages' (all pages) and mutation tools like 'attach_page_to_work_item'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It specifies that the tool lists pages for a work item, implying use when you need pages associated with a specific work item. However, it does not explicitly state when not to use it or provide alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_work_item_propertiesA
Read-only

List custom work item properties.

Scope resolution (highest priority first):

  • no args → ALL workspace-level properties (one API call)

  • work_item_type_id only → workspace-level properties linked to that type

  • project_id only → all properties in that project (any type)

  • project_id + work_item_type_id → properties linked to that type in that project, falling back to project-flat then workspace if empty

For PQL filtering by name, prefer calling with NO args - one workspace-wide fetch beats iterating every work item type. Each result includes the display_name you can match in-memory before composing cf["<id>"] in PQL.

Each result includes:

  • id: property UUID - use as cf[""] in PQL filters

  • display_name: user-facing label (e.g. "Fed", "Acceptance Criteria")

  • property_type: TEXT | OPTION | DECIMAL | BOOLEAN | DATETIME | RELATION | URL | EMAIL

  • options: for OPTION type, each option has id + name; use option id in PQL

PQL workflow for filtering by custom property (efficient path):

  1. list_work_item_properties() → all workspace properties, one call

  2. find the property by display_name in-memory → property.id

  3. list_work_items(pql='cf["<property.id>"] = "<option.id>"')

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
project_idNo
work_item_type_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint and openWorldHint. The description adds substantial behavioral context: scope resolution fallback logic, efficiency advice, result structure (including fields like id, display_name, property_type, options), and a PQL workflow. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with sections for scope resolution, result fields, and PQL workflow. It is verbose but each section adds value. Front-loaded with purpose. Slightly long but effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (multiple parameter combinations, return structure, and PQL integration), the description covers scope rules, result fields, and a workflow example. Output schema exists, so return values are not required, but description still lists fields. Highly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It explains the effect of project_id and work_item_type_id combinations on scope. The 'params' parameter is not explained (it's a generic catch-all), but the overall parameter usage is well-covered. A minor gap but still strong.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with 'List custom work item properties,' a specific verb and resource. It then details scope resolution rules for different argument combinations, clearly distinguishing the behavior from sibling property-related tools like list_work_item_property_options and retrieve_work_item_property.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance: prefer no args for workspace-wide fetch, and outlines a clear PQL workflow. It explains when to use each argument combination but does not explicitly state when not to use the tool or list alternatives, though the context is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_work_item_property_optionsA
Read-only

List options for a work item property.

Args: property_id: UUID of the work item property project_id: UUID of the project. Omit for workspace scope. params: Optional query parameters

Returns: List of WorkItemPropertyOption objects

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
project_idNo
property_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint=true) already indicate no side effects. The description adds return type but does not disclose pagination, ordering, or any other behavioral details. The return type is helpful but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the main purpose, followed by parameter and return documentation. It is slightly verbose due to the structured format but remains clear and free of redundancy. Could be shortened slightly without losing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only 3 parameters (1 required), no nested objects, and an output schema, the description covers the essential functionality and return type. It could mention pagination or default behavior, but it is largely sufficient for a list operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides clear explanations for property_id and project_id (UUIDs, scope hint), which the schema lacks (no descriptions). params is only vaguely described as 'Optional query parameters', leaving it underdocumented. With 0% schema coverage, the description compensates well for required params.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List options for a work item property' clearly states the verb 'list' and the resource 'options', distinguishing it from sibling tools like create/update/delete options and retrieve single option. 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as retrieve_work_item_property_option (for single option) or list_work_item_properties (for properties). The description does not mention exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_work_item_relation_definitionsA
Read-only

List every relation type usable with create_work_item_relation.

Match the user's wording against an entry here before creating a relation. built_in_dependencies are fixed scheduling/blocking types; custom_definitions are workspace-specific, each with an outward and inward label. custom_definitions are also what create/update/delete_work_item_relation_definition manage.

Args: is_default: Filter custom definitions to default/non-default only. is_active: Filter custom definitions to active/inactive only.

Returns: built_in_dependencies: relation_type values for the dependency path. custom_definitions: workspace definitions; use the id plus the matched outward or inward label.

ParametersJSON Schema
NameRequiredDescriptionDefault
is_activeNo
is_defaultNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, indicating a safe read. The description adds context about the return structure (built_in_dependencies and custom_definitions) and the parameter filters. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections and parameter explanations. It is slightly lengthy but front-loads the primary purpose. 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the annotations and the presence of an output schema (not shown but referenced), the description covers purpose, parameters, and return structure. It lacks mention of pagination or error handling, but overall sufficient for a listing tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 0% description coverage, but the description fully explains both parameters: is_default and is_active, including their purpose (filtering custom definitions). This compensates entirely for the missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states it lists every relation type usable with create_work_item_relation, and distinguishes between built_in_dependencies and custom_definitions. It also advises the user to match wording before creating a relation, differentiating from related tools like list_work_item_relations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly indicates when to use this tool (before creating a relation) and explains the two categories and their management tools (create/update/delete_work_item_relation_definition). However, it does not explicitly contrast with sibling tools like list_work_item_relations, which list actual links.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_work_item_relationsA
Read-only

List every relation for a work item.

Args: project_id: UUID of the project. work_item_id: UUID of the work item.

Returns: dependencies: Built-in dependencies grouped by the six directions. custom: Custom relations grouped by definition label.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
work_item_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the tool is read-only. Description adds return structure (dependencies and custom groups), providing useful behavioral detail 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose, includes Args and Returns sections. No redundant words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple task and presence of output schema (as per context), the description fully covers the tool's behavior with the return keys. No gaps for typical use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters are described with their purpose ('UUID of the project', 'UUID of the work item'), adding meaning to the schema's bare type string. Schema coverage is 0%, so description compensates well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb 'List' and resource 'every relation for a work item'. Distinguishes from sibling tools like create_work_item_relation and list_work_item_relation_definitions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implicit usage (list all relations) but no explicit when-to-use or alternatives. Could mention when to use this vs list_work_item_links or relation definitions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_work_itemsA
Read-only

List work items with optional PQL filtering.

Omit project_id to list across the entire workspace. Pass project_id to scope results to a single project.

For UUID fields (assignee, state, label, cycle, module, type, milestone) call the relevant list tool first to get the UUID.

Args: project_id: UUID of the project. Omit for workspace-wide results. pql: PQL filter. See field description for syntax. order_by: Sort field; prefix - for descending (e.g. -created_at). per_page: 1-100, default 25. cursor: From previous response's next_cursor. expand: Comma-separated relations to expand (e.g. assignees,labels,state). fields: Sparse fieldset - id, name, sequence_id, priority, state, project, assignees, labels, type_id, description_html, start_date, target_date, created_at, updated_at, created_by, is_draft. Use project (not project_id) and description_html (there is no description field). Any field you omit or misname comes back null - a null here does NOT mean the item lacks that value; it means it was not requested. To read the description, include description_html; for the type, include type_id. external_id / external_source: Filter by external system.

Returns: results: Paginated list of work items. total_count: True DB total, not page-bounded - use for counts. next_cursor: Cursor for the next page. prev_cursor: Cursor for the previous page.

ParametersJSON Schema
NameRequiredDescriptionDefault
pqlNoOptional Plane Query Language (PQL) filter. Examples: `priority = "urgent" AND assignee = currentUser()`, `stateGroup IN openStates() AND isOverdue()`. UUID fields (project, assignee, state, label, cycle, module, type, milestone, createdBy) need UUIDs - call the relevant `list_*` tool first if you only have a name or short identifier (e.g. `LSS` → call `list_projects` and match `identifier` to get `id`). Call `get_pql_reference` for full PQL syntax before composing complex queries.
cursorNo
expandNo
fieldsNo
order_byNo
per_pageNo
project_idNo
external_idNo
external_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint and openWorldHint annotations, the description adds detailed behavioral context: pagination with cursor, default per_page, total_count semantics, sparse fieldset behavior (null means not requested), and external system filtering. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, usage guidance, args, returns) and is front-loaded with core purpose. While lengthy, each sentence adds value, and the bullet points improve readability. Minor redundancy in field descriptions but overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (9 parameters, pagination, filtering, sparse fields, external system integration) and the presence of an output schema, the description covers all necessary aspects: input parameters, return structure (results, total_count, cursors), and behavioral nuances. It is sufficiently complete for agent usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite low schema description coverage (11%), the description provides extensive parameter details: pql examples, order_by syntax, per_page range, cursor usage, expand comma-separated relations, fields list with null behavior, and external_id/source pairing. This adds significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists work items with optional PQL filtering, and distinguishes it from siblings by explaining how to scope results (workspace-wide vs single project) and how to resolve UUIDs using other list tools. This provides specific verb+resource scope differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to omit or include project_id, and instructs the agent to call relevant list tools for UUID fields. It also references get_pql_reference for complex queries. However, it does not explicitly differentiate from search_work_items or other filtering tools, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_work_item_typesA
Read-only

List work item types. Omit project_id for workspace-level types.

Each result's id is the work_item_type_id needed by list_work_item_properties to look up custom property and option UUIDs for PQL cf[] filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
project_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is known. The description adds valuable behavioral context: the id field is a key for another tool. No contradictions. It doesn't disclose rate limits or auth requirements, but annotations cover the main risks.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences. First states the core purpose, second provides a critical usage note. No wasted words. Front-loaded with the main action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool, the description covers the main purpose, parameter usage, and the significance of the output id. The presence of an output schema reduces the need to describe return format. Could mention that it returns an array, but overall complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 explains the project_id parameter (omit for workspace-level types) but does not explain the generic 'params' parameter, which is an anyOf object. This leaves ambiguity about what additional parameters might be passed. Thus partial but not full compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists work item types and distinguishes between workspace-level and project-specific types by instructing to omit project_id. It also explains the practical use of the id field for another tool, making the purpose specific and actionable. Among siblings like create_work_item_type, this is distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear guidance on when to omit project_id (workspace-level) and how the result is used downstream (list_work_item_properties). It could be improved by explicitly stating when to use this tool vs alternatives, but the context is sufficient for most agents.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_work_logsA
Read-only

List work logs for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item params: Optional query parameters as a dictionary

Returns: List of WorkItemWorkLog objects

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
project_idYes
work_item_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and openWorldHint=true. The description confirms read-only behavior by stating 'List work logs' and adds the return type (list of WorkItemWorkLog objects), which is beyond what annotations provide. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured as a Google-style docstring with clear Args and Returns sections. Every sentence is necessary and earns its place, with no extraneous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple list operation with read-only hints and an output schema (implied). The description covers the essential purpose and parameters. It doesn't address pagination, sorting, or permissible query parameters, but given the overall simplicity and annotation support, it is still fairly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds basic meaning for project_id ('UUID of the project') and work_item_id ('UUID of the work item'), which is not present in the schema (which only specifies type 'string'). However, the params parameter is described as 'Optional query parameters as a dictionary' with no further details, leaving ambiguity about allowed keys or formats. Schema description coverage is 0%, so the description partially compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List work logs for a work item.' which specifies the action (list) and the resource (work logs scoped to a work item). It effectively distinguishes from sibling tools that create, update, or delete work logs, as well as other list tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description names the required parameters (project_id and work_item_id) and mentions optional params, clearly indicating the context needed. It does not explicitly state when not to use this tool or name alternatives, but the sibling list (create_work_log, update_work_log, delete_work_log) provides implicit differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

manage_cycle_archiveA

Archive or unarchive a cycle.

Plane requires the cycle end_date to be in the past before archiving. When archive=True, this tool automatically sets end_date to today if the cycle is still active (end_date is missing or in the future), then archives it.

Args: project_id: UUID of the project cycle_id: UUID of the cycle archive: True to archive the cycle, False to unarchive it

Returns: True if the operation completed successfully

ParametersJSON Schema
NameRequiredDescriptionDefault
archiveYes
cycle_idYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint=false), the description discloses the automatic end_date setting behavior and that the operation returns True on success. It does not mention potential failure modes or side effects like unarchive reversing end_date changes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (6 sentences), front-loaded with the purpose, followed by preconditions, args, and return. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers core behavior, parameters, and return. Minor gaps: unarchive behavior is not elaborated (e.g., does it restore end_date?), and no differentiation from complete_cycle. Still adequate for a simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage, the description provides parameter explanations (project_id UUID, cycle_id UUID, archive boolean meaning) that add meaning beyond the bare schema, though not all edge cases are covered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Archive or unarchive a cycle', specifying the verb and resource. It distinguishes from sibling tools like list_cycles, create_cycle, etc., by focusing on archive state management.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains a precondition (end_date must be past before archiving) and auto-behavior (sets end_date to today if archive=True). However, it does not explicitly differentiate from the sibling complete_cycle tool or specify when not 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.

manage_cycle_work_itemsA

Add or remove work items on a cycle in a single call.

At least one of add_ids or remove_ids must be provided.

Args: project_id: UUID of the project cycle_id: UUID of the cycle add_ids: UUIDs of work items to add to the cycle remove_ids: UUIDs of work items to remove from the cycle

ParametersJSON Schema
NameRequiredDescriptionDefault
add_idsNo
cycle_idYes
project_idYes
remove_idsNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false, so the description's mention of add/remove is consistent. The description adds value by stating that both operations can be performed in a single call, which is a behavioral detail not captured by annotations. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: one line for purpose, a condition line, and a parameter list. Every sentence provides essential information, and the structure 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.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides necessary purpose and parameter semantics, but lacks information about return values (no output schema) and edge cases (e.g., what happens if both arrays are empty). For a simple add/remove tool, it is adequate but not fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description includes an Args section explaining each parameter's purpose and the requirement that at least one of add_ids or remove_ids be provided. This compensates for the lack of schema descriptions, though it could be slightly more specific about UUID format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'add or remove' and the resource 'work items on a cycle'. It distinguishes from siblings like list_cycle_work_items and transfer_cycle_work_items by focusing on single-call add/remove operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly requires that at least one of add_ids or remove_ids be provided, giving a clear usage condition. However, it does not elaborate on when to prefer this over siblings like transfer_cycle_work_items or manual calls to separate add/remove endpoints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

manage_initiative_projectsA

Link or unlink projects of an initiative. Use list_initiative_projects to read.

Args: initiative_id: UUID of the initiative action: "add" to link the projects, "remove" to unlink them project_ids: Project UUIDs to link/unlink

Returns: The initiative's linked projects after the operation

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
project_idsYes
initiative_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that it modifies the initiative-project relationship (consistent with readOnlyHint=false) and describes the return value. The openWorldHint=true annotation suggests potential side effects, which the description does not contradict.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, with a one-sentence purpose followed by clear Args and Returns sections. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the essential information: purpose, parameters, and return value. It does not explain edge cases (e.g., missing initiative) but is adequate for a mutation tool given the annotations and schema presence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining each parameter: initiative_id is a UUID, action specifies 'add' or 'remove', and project_ids are UUIDs of projects. This adds crucial meaning beyond the schema's type and enum definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (link/unlink) and the resource (initiative projects), and distinguishes from the read-only sibling tool list_initiative_projects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly mentions the alternative for reading (list_initiative_projects), providing context for when to use this tool. However, it could further clarify when not to use it or other alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

manage_milestone_work_itemsA

Add or remove work items on a milestone in a single call.

At least one of add_ids or remove_ids must be provided.

Args: project_id: UUID of the project milestone_id: UUID of the milestone add_ids: UUIDs of work items to add to the milestone remove_ids: UUIDs of work items to remove from the milestone

ParametersJSON Schema
NameRequiredDescriptionDefault
add_idsNo
project_idYes
remove_idsNo
milestone_idYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate write operation (readOnlyHint=false) and openWorldHint=true, but the description does not disclose potential side effects, required permissions, or behavior if both add and remove overlap. It adds minimal value beyond what annotations suggest.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: four lines including the Args list. Every sentence adds value, and the most important information (purpose and constraint) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description should explain return value or confirmation. It does not mention atomicity or error handling. Still, for a simple add/remove operation, the coverage is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by explaining each parameter's purpose (e.g., 'UUID of the project'). However, it does not specify format constraints (e.g., valid UUID) or limits on array sizes, leaving some ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (add or remove), the resource (work items on a milestone), and the scope (in a single call). It is specific and distinguishes the tool from siblings like manage_cycle_work_items and manage_module_work_items, even without explicit comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear constraint: 'At least one of add_ids or remove_ids must be provided.' However, it lacks guidance on when not to use this tool versus alternatives (e.g., when to use manage_cycle_work_items instead). No exclusions or context about prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

manage_module_archiveA

Archive or unarchive a module.

Args: project_id: UUID of the project module_id: UUID of the module archive: True to archive the module, False to unarchive it

ParametersJSON Schema
NameRequiredDescriptionDefault
archiveYes
module_idYes
project_idYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a write operation (readOnlyHint=false). The description adds no further behavioral context, such as side effects, permission requirements, or changes to module visibility.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with a clear two-line summary followed by a parameter list. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple toggle operation, the description covers the core purpose and parameters. However, it does not mention return values or success indicators, but given no output schema, this is acceptable. It could include more about the effect on the module.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description explains each parameter: project_id, module_id, and archive. This adds meaning beyond the schema types, though the explanations are brief.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Archive or unarchive' and the resource 'module', and it lists the required parameters. It distinguishes from siblings like manage_project_archive and manage_work_item_archive by focusing on modules.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like manage_project_archive or manage_module_work_items. It does not specify prerequisites or when it should not be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

manage_module_work_itemsA

Add or remove work items on a module in a single call.

At least one of add_ids or remove_ids must be provided.

Args: project_id: UUID of the project module_id: UUID of the module add_ids: UUIDs of work items to add to the module remove_ids: UUIDs of work items to remove from the module

ParametersJSON Schema
NameRequiredDescriptionDefault
add_idsNo
module_idYes
project_idYes
remove_idsNo

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false (modifies data) and openWorldHint=true. The description adds context that the operation is a single call and requires at least one ID array. It lacks details on idempotency or error behavior, but with annotations, this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences plus a bullet list, very concise. Every sentence adds unique value: the first states the main action, the second gives a constraint, and the list explains parameters. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 4 parameters, no output schema, and moderate annotations. The description covers the core functionality and parameter requirements. It could mention what happens if a work item is already present, but overall it is complete enough for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema coverage, the description provides a full docstring-style explanation for each parameter (project_id, module_id, add_ids, remove_ids) with types and purposes, adding significant meaning beyond the input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it adds or removes work items on a module in a single call. It uses specific verbs ('add', 'remove') and resource ('work items on a module'), and distinguishes from sibling tools like list_module_work_items (list-only) and manage_module_archive (archive).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly notes that at least one of add_ids or remove_ids must be provided, giving a clear usage constraint. However, it does not contrast with alternatives like other module tools or specify when to use add versus remove.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

manage_project_archiveA

Archive or unarchive a project.

Archived projects are hidden from active project lists but not deleted. All work items, cycles, and modules are preserved.

Args: project_id: UUID of the project archive: True to archive the project, False to unarchive it

ParametersJSON Schema
NameRequiredDescriptionDefault
archiveYes
project_idYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate a mutation (readOnlyHint=false) but the description adds valuable context: archived projects are hidden but not deleted, and all work items/cycles/modules are preserved. This goes beyond what annotations provide. Could still mention permissions or reversibility more explicitly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: a single-line summary, a few lines explaining behavior, then a clear Args section. Front-loaded with the verb, every sentence serves a purpose with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-parameter mutation tool with no output schema, the description covers purpose, parameters, and behavioral implications (hidden but not deleted, items preserved). It could optionally mention that archived projects can still be retrieved via retrieve_project, but not necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description's Args section compensates well, defining project_id as UUID and archive as boolean with clear semantics (True=archive, False=unarchive). This makes both parameters' purpose clear beyond their types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Archive or unarchive a project' with specific verb and resource. It distinguishes from sibling tools like delete_project or manage_work_item_archive by explaining that archived projects are hidden but not deleted and all work items/cycles/modules are preserved.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (to change archive status) but does not explicitly contrast with sibling tools like manage_work_item_archive, manage_cycle_archive, or manage_module_archive. No direct guidance on when to use this vs alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

manage_work_item_archiveA

Archive or unarchive a work item.

Only work items in a completed or cancelled state can be archived. Archived work items no longer appear in active work item lists.

Args: project_id: UUID of the project work_item_id: UUID of the work item archive: True to archive the work item, False to unarchive it

ParametersJSON Schema
NameRequiredDescriptionDefault
archiveYes
project_idYes
work_item_idYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a mutation (readOnlyHint=false). The description adds the state constraint and visibility effect, but does not detail other behavioral aspects like permissions or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (2 sentences plus bullet list), front-loaded with 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple mutation with 3 required params and no output schema, the description covers the action, preconditions, and param meanings. It could optionally mention return values or error conditions, but is fairly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully explains all three parameters: project_id and work_item_id as UUIDs, and archive as a boolean with clear meaning. This adds value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool archives or unarchives a work item, using specific verbs and resource. It is distinct from sibling tools like manage_cycle_archive or manage_module_archive.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a prerequisite (only completed/cancelled states) and a behavioral consequence (archived items no longer appear in active lists). However, it does not explicitly state when to use this tool vs alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

manage_work_item_assigneeA

Add or remove a single assignee on a work item without replacing the full list.

Provide add_user_id, remove_user_id, or both. If both are given the removal is applied first, then the addition. Already-assigned users in add_user_id are silently skipped.

Args: project_id: UUID of the project work_item_id: UUID of the work item add_user_id: UUID of the user to add as assignee remove_user_id: UUID of the user to remove from assignees

Returns: Updated WorkItem object

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
add_user_idNo
work_item_idYes
remove_user_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
typeNo
pointNo
stateNo
parentNo
projectNo
type_idNo
is_draftNo
priorityNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
sort_orderNo
start_dateNo
updated_atNo
updated_byNo
archived_atNo
external_idNo
sequence_idNo
target_dateNo
completed_atNo
estimate_pointNo
external_sourceNo
description_htmlNo
description_binaryNo
description_strippedNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses behavioral traits: removal applied first, silent skip for already-assigned users, and no full list replacement. Beyond annotations (readOnlyHint=false, openWorldHint=true), it clarifies side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Efficiently structured: summary sentence, then parameter list, behavior notes, and return value. No unnecessary words, front-loaded with key action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete given complexity: mutation tool with output schema noted, parameter semantics covered, behavioral nuances explained, and no missing context for selection among siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds full meaning for each parameter (UUID types), explains optionality and defaults, and describes combined usage. Schema has no descriptions, so description fully compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool adds or removes a single assignee without replacing the full list, distinguishing it from sibling tools like update_work_item that might modify other aspects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear instructions on providing parameters and order of operations (removal before addition). Lacks explicit alternatives for full list replacement, but context is adequate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

manage_work_item_labelA

Add or remove a single label on a work item without replacing the full list.

Provide add_label_id, remove_label_id, or both. If both are given the removal is applied first, then the addition. Already-attached labels in add_label_id are silently skipped.

Args: project_id: UUID of the project work_item_id: UUID of the work item add_label_id: UUID of the label to add remove_label_id: UUID of the label to remove

Returns: Updated WorkItem object

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
add_label_idNo
work_item_idYes
remove_label_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
typeNo
pointNo
stateNo
parentNo
projectNo
type_idNo
is_draftNo
priorityNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
sort_orderNo
start_dateNo
updated_atNo
updated_byNo
archived_atNo
external_idNo
sequence_idNo
target_dateNo
completed_atNo
estimate_pointNo
external_sourceNo
description_htmlNo
description_binaryNo
description_strippedNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant behavioral insight beyond annotations: it details the order of operations (removal first), idempotency (silent skip for already-attached), and the return type. Annotations only indicate mutability and potential side effects, so the description enriches transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a one-sentence purpose, then a paragraph on usage, followed by a clear list of parameters and return type. All information is front-loaded, and no sentences are extraneous.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers essential behavior (order of operations, idempotency) and parameter meanings. It does not elaborate on error cases or prerequisites, but given the output schema exists and the tool is straightforward, it is adequately 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description lists each parameter with a brief description (e.g., 'UUID of the project,' 'UUID of the label to add'), which adds meaning not present in the schema. However, the coverage is moderate—no validation details or constraints are mentioned, but it sufficiently explains the data expected.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Add or remove a single label on a work item without replacing the full list,' which clearly identifies the verb (add/remove) and resource (label on work item) and distinguishes it from sibling tools like update_work_item that replace the full list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage instructions: 'Provide add_label_id, remove_label_id, or both. If both are given the removal is applied first, then the addition. Already-attached labels in add_label_id are silently skipped.' This explicitly covers when to use each parameter and the behavior when both are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

manage_work_item_type_propertiesA

Attach or detach properties on a work item type in a single call.

At least one of attach_ids or detach_ids must be provided. Detach does not delete the property - it only removes the association.

Args: project_id: UUID of the project work_item_type_id: UUID of the work item type attach_ids: Property UUIDs to attach to the type detach_ids: Property UUIDs to detach from the type

Returns: List of attached property UUIDs if attach_ids was provided, else None

ParametersJSON Schema
NameRequiredDescriptionDefault
attach_idsNo
detach_idsNo
project_idYes
work_item_type_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral context beyond annotations: it explains that detach only removes association, not the property itself, and that the call is single. While annotations indicate openWorldHint, the description does not cover potential side effects or error conditions, but it aligns with the readOnlyHint being false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, starting with the core purpose, then key conditions, then a clarifying note about detach behavior, followed by an args section. Every sentence adds value, and the structure is logical.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 input requirements, parameter semantics, and return value. It does not miss critical information needed for an AI agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining each parameter: project_id, work_item_type_id, attach_ids (Property UUIDs), detach_ids (Property UUIDs). It also adds the constraint that at least one of attach_ids or detach_ids must be provided, which is not in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool attaches or detaches properties on a work item type in a single call. The verb 'attach/detach' and resource 'properties on work item type' are specific and distinguish it from sibling tools that manage properties or work item types individually.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides usage conditions: at least one of attach_ids or detach_ids must be provided, and clarifies that detach does not delete the property. It implicitly tells when to use this tool (managing associations) but does not explicitly state when not to use it or compare with alternatives like creating/deleting properties.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_work_item_attachmentA
Read-only

Fetch an attachment's content so the LLM can read or analyze it.

Supported file types: Images (returned as vision-readable image, max 5 MB): PNG, JPEG, GIF, WEBP Text (returned as a string, max 1 MB): TXT, MD, CSV, HTML, XML, YAML, JSON

Not supported (use get_work_item_attachment_download_url instead): PDF - requires a text-extraction library (not installed) DOCX/XLSX/PPTX - binary Office formats, require extraction Audio / Video - non-textual binary formats Generic binary - executables, archives, etc.

Args: project_id: UUID of the project work_item_id: UUID of the work item attachment_id: UUID of the attachment

Returns: Image object for image files, plain string for text files.

Raises: ValueError: If the file type is unsupported or the file exceeds the size limit for its category.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
work_item_idYes
attachment_idYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=true and openWorldHint=true, and the description adds valuable behavioral context: returns image objects or strings depending on file type, raises ValueError for unsupported types or size limits. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections (purpose, supported types, unsupported types, args, returns, raises). Front-loaded with main action and file type details. No redundant sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers all necessary aspects: supported/unsupported file types, size limits, return types, error conditions. Without an output schema, the description fully explains return values. For a fetch tool, it is comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage, but the description compensates by stating each parameter's role ('UUID of the project/work item/attachment'). Although not deeply detailed, it clarifies what each ID refers to, which is sufficient given their intuitive names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Fetch an attachment's content so the LLM can read or analyze it' and lists supported/unsupported file types. It explicitly references the sibling tool 'get_work_item_attachment_download_url' for unsupported types, differentiating its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use (supported file types) and when-not-to-use (unsupported types, with alternative tool named). Also includes size limits and error handling, giving clear guidance on usage boundaries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_work_item_relationA
DestructiveIdempotent

Remove ONE relation between two work items.

A built-in dependency and a custom relation are removed independently - removing one leaves the other intact. Set is_dependency from the relation the user named (see list_work_item_relations): True for a built-in dependency (blocking, blocked_by, start/finish ordering), False for a custom relation.

Args: project_id: UUID of the project. work_item_id: UUID of the source work item. related_work_item_id: UUID of the related work item. is_dependency: True to remove a built-in dependency, False to remove a custom relation.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
work_item_idYes
is_dependencyYes
related_work_item_idYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral details beyond annotations, such as that removing a built-in dependency and a custom relation are independent (removing one leaves the other intact). This aligns with annotations (destructiveHint=true, idempotentHint=true) and does not contradict them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: a brief summary, a behavioral note, and a clear args list. It is front-loaded with the primary purpose and structured for easy scanning. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 4 required parameters and no output schema. The description explains the action, behavior, and all parameters thoroughly. It also references list_work_item_relations for additional context, making it complete for a removal tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description fully compensates by explaining each parameter's meaning and usage, especially is_dependency (True for built-in dependency, False for custom relation). This provides essential context that the schema alone does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Remove ONE relation between two work items' and distinguishes between built-in dependencies and custom relations. Among siblings like create_work_item_relation and list_work_item_relations, this tool's purpose is distinct and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to set is_dependency True or False and references list_work_item_relations for context. It does not explicitly state when not to use or list alternatives, but the context is clear enough for correct usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_work_item_typeA

Find a work item type by name for a project, create it if missing, and guarantee it is usable inside that project. Use this to resolve the type_id for a typed work item such as an "Epic" or "Initiative" before calling create_work_item(type_id=...).

Handles workspace-level and project-level work item types automatically, so the caller never has to decide which mode the workspace is in:

  • If the workspace owns work item types, the type is found (or created) at the workspace level and imported into the project. Project-level creation is blocked in this mode, so importing is the only valid path.

  • Otherwise the type is found (or created) at the project level, enabling the project's work item types feature first if it is off.

Matching is exact (case-sensitive, whitespace-stripped); an existing type is never duplicated.

Prefer this over manually combining get_workspace_features, list_work_item_types, create_work_item_type, and import_work_item_types_to_project - it does all of that deterministically.

Args: project_id: UUID of the project the type must be usable in name: Work item type name, e.g. "Epic" or "Initiative"

Returns: The WorkItemType. Its id is the type_id for create_work_item.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameYes
levelNo
is_epicNo
is_activeNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
is_defaultNo
logo_propsNo
updated_atNo
updated_byNo
descriptionNo
external_idNo
project_idsNo
external_sourceNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only indicate mutation (readOnlyHint=false) and open world. Description goes far beyond: explains workspace vs project mode handling, automatic feature enabling, exact matching, no duplication. Covers behavior annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with paragraphs and bullet points. Front-loaded with purpose. Slightly verbose (e.g., repeats 'create it if missing' three times) but still efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given complexity (mode detection, creation vs import), the description covers all relevant behavior. Output schema exists so return value explanation is sufficient. No gaps for a tool this intricate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% coverage but description fully explains both parameters: project_id as UUID of the project, name as work item type name with examples. Adds meaning beyond type info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (resolve), resource (work item type), and outcome (find or create and make usable). It distinguishes from siblings like list_work_item_types or create_work_item_type by positioning itself as a combined deterministic operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use: before calling create_work_item to get type_id. Contrasts with manual alternative (combining multiple tools). Lacks a 'when not to use' statement, though context implies it replaces multiple steps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retrieve_cycleB
Read-only

Retrieve a cycle by ID.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project cycle_id: UUID of the cycle

Returns: Cycle object

ParametersJSON Schema
NameRequiredDescriptionDefault
cycle_idYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameYes
projectNo
versionNo
end_dateNo
owned_byNo
timezoneNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
logo_propsNo
sort_orderNo
start_dateNo
updated_atNo
updated_byNo
view_propsNo
archived_atNo
descriptionNo
external_idNo
total_issuesNo
backlog_issuesNo
started_issuesNo
external_sourceNo
total_estimatesNo
cancelled_issuesNo
completed_issuesNo
unstarted_issuesNo
progress_snapshotNo
started_estimatesNo
completed_estimatesNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true and openWorldHint=true, so the description's behavioral disclosure is adequate. It adds a return type hint but does not detail pagination, error behavior, or other side effects beyond what annotations imply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and structured as a docstring with Args and Returns sections. It is front-loaded with the main purpose. However, the inclusion of a non-existent parameter slightly detracts from conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 output schema and annotations, the description covers the basic purpose and parameters. However, it lacks context about what a cycle is and includes an erroneous parameter, limiting completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description lists 'workspace_slug' as an argument, but the input schema does not include it, which is misleading. It does provide type hints (UUID) for the two schema parameters, but schema coverage is 0%, so the description only partially compensates and introduces an error.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The tool name 'retrieve_cycle' and description 'Retrieve a cycle by ID' clearly state the action and resource. However, the description does not distinguish it from sibling retrieve tools like 'retrieve_project' or 'retrieve_module'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, nor are there any conditions or exclusions mentioned. The description is purely functional without usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retrieve_initiativeA
Read-only

Retrieve an initiative by ID.

Args: initiative_id: UUID of the initiative

Returns: Initiative object

Raises: ToolError: if the initiatives feature is disabled. When disabled, the initiative is an "Initiative" work item - the error gives the steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
initiative_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
leadNo
nameYes
stateNo
end_dateNo
workspaceYes
created_atNo
deleted_atNo
logo_propsYes
start_dateNo
updated_atNo
descriptionNo
description_htmlNo
description_binaryNo
description_strippedNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, which the description reinforces. It adds valuable context about a specific error case when the initiatives feature is disabled, including steps mentioned in the error. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with clear sections for Args, Returns, and Raises. Every sentence provides meaningful information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple retrieval with an output schema covering the return format. The description explains an error condition and provides enough context for an agent to use it correctly. Could optionally mention that the initiative is a work item type, but not required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema only defines 'initiative_id' as a string without format. The description adds that it is a 'UUID,' specifying the expected format. Since schema description coverage is 0%, this addition is important and goes beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Retrieve an initiative by ID,' specifying the action (retrieve) and resource (initiative). It distinguishes from siblings like 'retrieve_project' and 'list_initiatives' by focusing on a single initiative retrieval via ID.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you have an initiative ID and need the full object, but does not explicitly state when to use this over alternatives (e.g., list_initiatives when you need to search). No when-not or alternative guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retrieve_intake_work_itemB
Read-only

Retrieve an intake work item by work item ID.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project work_item_id: UUID of the work item (use the issue field from IntakeWorkItem response, not the intake work item ID) params: Optional query parameters as a dictionary (e.g., expand, fields)

Returns: IntakeWorkItem object

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
project_idYes
work_item_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
extraNo
inboxNo
issueNo
intakeNo
sourceNo
statusNo
projectNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
updated_atNo
updated_byNo
external_idNo
duplicate_toNo
issue_detailNo
snoozed_tillNo
source_emailNo
external_sourceNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations confirm read-only behavior, which is consistent with 'Retrieve'. Description does not elaborate on side effects or data scope beyond the return type. With readOnlyHint and openWorldHint, additional context missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured as a docstring with clear Args/Returns sections but includes an extra non-existent parameter. It is moderately concise but the error hurts efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema, return values are not needed, but the description lacks explanation of what 'intake work item' means versus regular work items. The workspace_slug mismatch indicates incomplete context for a new user.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must explain parameters. It adds guidance for work_item_id and mentions params, but incorrectly includes workspace_slug which is not in the schema. This error undermines the added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that it retrieves an intake work item by ID, specifying the action and resource. However, it mentions 'workspace_slug' as an argument that is not present in the input schema, which could cause some confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides guidance on using the 'issue field' for work_item_id, but does not explicitly differentiate from sibling tools like 'retrieve_work_item' or 'list_intake_work_items'. The implied usage context is present but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retrieve_labelA
Read-only

Retrieve a label by ID.

Args: project_id: UUID of the project label_id: UUID of the label

Returns: Label object

ParametersJSON Schema
NameRequiredDescriptionDefault
label_idYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameYes
colorNo
parentNo
projectNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
sort_orderNo
updated_atNo
updated_byNo
descriptionNo
external_idNo
external_sourceNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations include readOnlyHint=true and openWorldHint=true. The description describes a read operation (retrieve) which aligns with readOnlyHint. It adds that the return is a Label object, but does not discuss potential errors, permissions, or side effects. The description adds minimal behavioral context beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: one sentence for purpose, followed by a structured argument and return section. Every part is necessary, and the key information is front-loaded. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (retrieve by ID) and the existence of an output schema (indicated by context), the description covers the essential functional aspects. It does not mention error handling or not-found cases, but for a straightforward retrieval, this level is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no descriptions (0% coverage), but the description provides docstrings: 'project_id: UUID of the project' and 'label_id: UUID of the label', adding semantic meaning (the expected type UUID) beyond the schema's plain string type. This compensates for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Retrieve a label by ID' specifying the verb and resource. It also lists the required parameters (project_id, label_id). However, it does not explicitly differentiate from sibling tools like list_labels or other retrieve tools, but the purpose is clear enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. The description does not mention that this is for retrieving a single label by ID, while list_labels would be used for listing all labels. No explicit conditions or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retrieve_milestoneA
Read-only

Retrieve a milestone by ID.

Args: project_id: UUID of the project milestone_id: UUID of the milestone

Returns: Milestone object

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
milestone_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
titleYes
created_atNo
updated_atNo
external_idNo
target_dateNo
external_sourceNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the tool's safety is established. The description adds that it returns a 'Milestone object', which is useful behavioral context beyond the annotations. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: one sentence for purpose, followed by structured Args and Returns sections. Every word 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.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple retrieval tool with 2 parameters and an output schema, the description covers purpose, parameter meanings, and return type. Nothing is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by specifying each parameter as 'UUID of the project' and 'UUID of the milestone', adding format and purpose beyond the schema's bare string type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Retrieve a milestone by ID', using a specific verb and resource. It distinguishes from siblings like 'list_milestones' and 'create_milestone' by focusing on retrieval with a unique identifier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you have a specific milestone ID, but it does not explicitly contrast with alternatives (e.g., 'list_milestones') or state when not to use this tool. No exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retrieve_moduleC
Read-only

Retrieve a module by ID.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project module_id: UUID of the module

Returns: Module object

ParametersJSON Schema
NameRequiredDescriptionDefault
module_idYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
leadNo
nameYes
statusNo
projectNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
logo_propsNo
sort_orderNo
start_dateNo
updated_atNo
updated_byNo
view_propsNo
archived_atNo
descriptionNo
external_idNo
target_dateNo
total_issuesNo
backlog_issuesNo
started_issuesNo
external_sourceNo
cancelled_issuesNo
completed_issuesNo
description_htmlNo
description_textNo
unstarted_issuesNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, so the description's 'retrieve' is consistent. Description adds no extra behavioral details (e.g., idempotency, rate limits), but doesn't need to given annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is short and front-loaded, but includes an erroneous parameter (workspace_slug) that undermines accuracy. Conciseness is good, but the error reduces effectiveness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple retrieval tool with annotations and output schema, the description is mostly adequate. However, the mismatch between mentioned arguments and actual schema parameters leaves some incompleteness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description should clarify parameters. It incorrectly includes workspace_slug not in schema, and while it specifies UUIDs for project_id and module_id, it doesn't describe allowed formats or constraints comprehensively.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Retrieve a module by ID' with verb and resource. However, it mentions workspace_slug as an argument that is not in the input schema, causing slight confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like retrieve_project or other retrieve tools. No mention of context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retrieve_pageA
Read-only

Retrieve a page by ID, including its content (description_html).

Retrieves a project page if project_id is given, otherwise a workspace page. Page bodies can be large; pass max_length (or set the server-side PLANE_PAGES_MAX_CONTENT_LENGTH env default) to bound the returned content.

Args: page_id: UUID of the page project_id: UUID of the project. Omit for a workspace page. max_length: Maximum number of characters of content to return. When the content is longer, the response carries content_truncated=true and total_content_length with the full size.

Returns: Page object; when truncation applies, a dict with the page fields plus content_truncated and total_content_length.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes
max_lengthNo
project_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description adds valuable behavioral details: truncation behavior with max_length, the response fields content_truncated and total_content_length, and the difference between project and workspace pages. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement, followed by contextual details, and then an Args/Returns format. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (3 params, output schema exists), the description covers retrieval behavior, truncation, and the distinction between page types. It is complete 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.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description provides explicit and detailed semantics for all three parameters: page_id, project_id, and max_length. It explains their purposes and effects, fully compensating for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a page by ID including its content. It specifies the resource (page) and action (retrieve) and distinguishes between project and workspace pages, differentiating it from sibling tools like list_pages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use project_id for project pages and implies use of page_id. It does not explicitly contrast with alternative tools like list_pages or search_pages, but being the only retrieve_page tool, the usage context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retrieve_projectC
Read-only

Retrieve a project by ID.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project

Returns: Project object

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameYes
emojiNo
networkNo
close_inNo
estimateNo
timezoneNo
icon_propNo
is_memberNo
page_viewNo
workspaceNo
archive_inNo
created_atNo
created_byNo
cycle_viewNo
deleted_atNo
identifierYes
logo_propsNo
sort_orderNo
updated_atNo
updated_byNo
archived_atNo
cover_imageNo
descriptionNo
external_idNo
intake_viewNo
is_deployedNo
member_roleNo
module_viewNo
project_leadNo
total_cyclesNo
default_stateNo
total_membersNo
total_modulesNo
cover_image_urlNo
external_sourceNo
default_assigneeNo
description_htmlNo
description_textNo
issue_views_viewNo
cover_image_assetNo
is_issue_type_enabledNo
guest_view_all_featuresNo
is_time_tracking_enabledNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, which is consistent. Description adds that it returns a 'Project object'. No additional behavioral details like error handling or auth needs are provided, but for a simple read operation this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and structured with an Args section. However, the Args section contains a parameter not in the schema, making it technically inaccurate. Could be improved by removing workspace_slug. As is, it's still relatively concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return details are not needed. However, the inconsistency in parameters (workspace_slug) creates confusion. No mention of error cases or edge cases. For a retrieval tool, it should at least match the schema accurately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% so description must compensate. It adds that project_id is a UUID, which is helpful. However, it also lists workspace_slug as an argument which is not in the schema, introducing false information. This undermines reliability.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb 'Retrieve' and resource 'project by ID' clearly state the tool's purpose. However, the description mentions 'workspace_slug' which is not in the input schema, causing slight confusion. Among siblings like list_projects and update_project, this tool is clearly for single entity retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. Does not specify that it returns a full project object or that it is idempotent. Missing context about when to prefer this over list_projects or search tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retrieve_roleB
Read-only

Retrieve a role definition by ID.

Args: role_id: UUID of the role.

Returns: Role (name, slug, namespace).

ParametersJSON Schema
NameRequiredDescriptionDefault
role_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNo
slugNo
namespaceNo

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as read-only (readOnlyHint=true) and open-world (openWorldHint=true). The description adds no behavioral details beyond the basic retrieve action, such as required permissions or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise, front-loading the purpose in the first sentence, and using a structured Args/Returns format with no unnecessary text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple retrieval tool with one parameter and an output schema, the description is adequate. It mentions the return fields (name, slug, namespace), which adds value.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description adds minimal meaning by clarifying that role_id is a UUID. This is helpful but does not fully 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a role definition by ID, using a specific verb and resource. It distinguishes from sibling tools like list_roles (which lists all roles) and other retrieve tools for different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention that list_roles should be used to list all roles.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retrieve_stateA
Read-only

Retrieve a state by ID.

Args: project_id: UUID of the project state_id: UUID of the state

Returns: State object

ParametersJSON Schema
NameRequiredDescriptionDefault
state_idYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameYes
colorYes
groupNo
defaultNo
projectNo
sequenceNo
is_triageNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
updated_atNo
updated_byNo
descriptionNo
external_idNo
external_sourceNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description states that it returns a 'State object', but the exact structure is likely defined in the output schema. The annotations already indicate readOnlyHint and openWorldHint, so the description adds minimal behavioral context. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is remarkably concise, consisting of a single line of purpose and a brief parameter list. Every element is necessary and front-loaded; there is no superfluous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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. It sufficiently covers the two required parameters. For a simple retrieval tool with low parameter count, the description is complete enough, though it could mention that the state must exist or handle errors.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, but the description explicitly adds semantics by noting that 'project_id' is a 'UUID of the project' and 'state_id' is a 'UUID of the state', providing essential context beyond the schema's type definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Retrieve'), the resource ('state'), and the identifying parameters ('by ID'). It distinguishes from siblings like 'list_states' and 'create_state' by specifying retrieval of a single state via IDs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide explicit guidance on when to use this tool versus alternatives. It implies usage for fetching a specific state, but lacks comparison with 'list_states' or 'retrieve_state_by_identifier' (not present, but siblings include other retrieve tools). This is adequate but not exemplary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retrieve_work_itemB
Read-only

Retrieve a work item by ID.

Args: project_id: UUID of the project work_item_id: UUID of the work item expand: Comma-separated fields to expand (e.g., "assignees,labels,state") fields: Comma-separated fields to include in response external_id: External system identifier for filtering external_source: External system source name for filtering order_by: Field to order results by

Returns: WorkItemDetail object with expanded relationships

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNo
fieldsNo
order_byNo
project_idYes
external_idNo
work_item_idYes
external_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
typeNo
pointNo
stateNo
labelsNo
parentNo
projectNo
type_idNo
is_draftNo
priorityNo
assigneesNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
sort_orderNo
start_dateNo
updated_atNo
updated_byNo
archived_atNo
external_idNo
sequence_idNo
target_dateNo
completed_atNo
estimate_pointNo
external_sourceNo
description_htmlNo
description_binaryNo
description_strippedNo

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and openWorldHint=true. The description adds that the return type is 'WorkItemDetail object with expanded relationships', which provides helpful context beyond the annotations but does not discuss auth, rate limits, or other behaviors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with a one-line summary followed by parameter and return definitions. It is structured but could be further improved by using shorter descriptions for obvious parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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, the return value description is adequate. However, the description lacks guidance on when to use this tool versus related tools like 'list_work_items' or 'search_work_items', and does not address the openWorldHint implications.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description lists all parameters and provides meaning for 'expand' and 'fields' (comma-separated). While not exhaustive, it adds enough value to compensate for the missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Retrieve' and resource 'work item'. However, it does not differentiate from sibling 'retrieve_work_item_by_identifier', which may cause confusion about which tool to use for non-ID lookups.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'retrieve_work_item_by_identifier' or 'search_work_items'. It does not mention prerequisites or common use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retrieve_work_item_activityA
Read-only

Retrieve a specific activity for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item activity_id: UUID of the activity

Returns: WorkItemActivity object

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
activity_idYes
work_item_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
verbNo
actorNo
epochNo
fieldNo
issueNo
commentNo
projectYes
new_valueNo
old_valueNo
workspaceYes
created_atNo
deleted_atNo
updated_atNo
attachmentsNo
issue_commentNo
new_identifierNo
old_identifierNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, so the description's mention of 'Retrieve' is consistent. It adds the return type 'WorkItemActivity object' but does not disclose what happens if the activity is not found or any other 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with no wasted words, front-loading the purpose. Every part adds value, and the structure is clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and has an output schema, but the description does not explain what an activity is or mention potential error cases. Adequate for a simple retrieval but could be more informative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema coverage is 0%, but the description lists all three parameters and describes them as 'UUID of the project', etc., adding meaning beyond the bare schema types. However, it lacks additional details such as format constraints or examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Retrieve a specific activity for a work item', using a specific verb and resource. It distinguishes itself from the sibling 'list_work_item_activities' by specifying 'specific activity'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives like list_work_item_activities. The usage is implied (when you have an activity ID), but no exclusions or context are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retrieve_work_item_by_identifierA
Read-only

Retrieve a work item by its full identifier (project prefix + sequence number).

The identifier must be in PROJECT-N format where PROJECT is the project's identifier string and N is the sequence number. Both parts are required.

Valid sparse fields values include: id, name, sequence_id, priority, state, project, workspace, parent, assignees, labels, type_id, start_date, target_date, created_at, updated_at, created_by, updated_by, is_draft, external_source, external_id, estimate_point. Use project (not project_id) to get the project UUID.

If you need the project UUID from a short identifier like "SHO", use list_projects() instead - it returns id and identifier for every project.

Args: work_item_identifier: Full work item identifier in PROJECT-N format expand: Comma-separated fields to expand (e.g., "assignees,labels,state") fields: Comma-separated sparse fieldset (see valid values above) external_id: External system identifier for filtering external_source: External system source name for filtering order_by: Field to order results by

Returns: WorkItemDetail object with expanded relationships

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNo
fieldsNo
order_byNo
external_idNo
external_sourceNo
work_item_identifierYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
typeNo
pointNo
stateNo
labelsNo
parentNo
projectNo
type_idNo
is_draftNo
priorityNo
assigneesNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
sort_orderNo
start_dateNo
updated_atNo
updated_byNo
archived_atNo
external_idNo
sequence_idNo
target_dateNo
completed_atNo
estimate_pointNo
external_sourceNo
description_htmlNo
description_binaryNo
description_strippedNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only and open-world behavior. The description adds context by listing valid `fields` values, explaining the `expand` parameter, and noting that the return type is a WorkItemDetail object with expanded relationships. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: a concise summary followed by formatting notes, then a bulleted list of valid field values, then parameter descriptions, and finally return type. While a bit lengthy, the organization makes it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 but signaled), the description adequately covers the return type. All six parameters are described, including the required one. The description is complete enough for an AI 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the input schema has zero description coverage (0%), the description compensates well by explaining the format for `work_item_identifier`, enumerating valid `fields` values, and briefly describing the other parameters. Some parameters like `external_id` and `external_source` receive only basic descriptions, but overall adds substantial meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies retrieving a work item by its full identifier in PROJECT-N format. It clearly differentiates from the sibling tool `retrieve_work_item` by emphasizing the identifier format and providing an alternative for extracting project UUIDs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool and when not to: it explains that for obtaining a project UUID from a short identifier, `list_projects()` should be used instead. It also details the required format and valid field values.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retrieve_work_item_commentA
Read-only

Retrieve a specific comment for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item comment_id: UUID of the comment

Returns: WorkItemComment object

ParametersJSON Schema
NameRequiredDescriptionDefault
comment_idYes
project_idYes
work_item_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
actorNo
issueNo
accessNo
projectNo
edited_atNo
is_memberNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
updated_atNo
updated_byNo
attachmentsNo
external_idNo
comment_htmlNo
external_sourceNo
comment_strippedNo

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, indicating no side effects. The description adds no additional behavioral context beyond what annotations provide, such as rate limits or data freshness. It is consistent but does not add value 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is front-loaded with the main action, followed by a structured Args and Returns section. It is efficient and easy to parse, though the Args section could be more concise by integrating into the main sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a retrieval operation with readOnlyHint and an output schema (not shown), the description covers the essential information: what it retrieves, the required IDs, and the return type. No obvious gaps 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 0% description coverage (only types), but the description adds parameter names and a brief explanation ('UUID of the project', etc.). This compensation is helpful, and for retrieval, the parameter semantics are clear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Retrieve a specific comment for a work item.', using a specific verb and resource. It distinguishes from sibling tools like list_work_item_comments (which retrieves all comments) and create/update/delete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a single comment is needed by ID, but does not explicitly state when not to use it or mention alternatives like list_work_item_comments for fetching multiple comments. It provides clear context but lacks exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retrieve_work_item_propertyA
Read-only

Retrieve a work item property by ID.

Args: work_item_property_id: UUID of the property project_id: UUID of the project. Omit for workspace scope. work_item_type_id: UUID of the work item type - omit to use project-level endpoint

Returns: WorkItemProperty object

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNo
work_item_type_idNo
work_item_property_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
optionsNo
projectNo
is_multiNo
settingsNo
is_activeNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
issue_typeNo
logo_propsNo
sort_orderNo
updated_atNo
updated_byNo
descriptionNo
external_idNo
is_requiredNo
display_nameYes
default_valueNo
property_typeYes
relation_typeNo
external_sourceNo
validation_rulesNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description does not add behavioral context beyond what the annotations (readOnlyHint=true, openWorldHint=true) already provide. It does not mention any side effects, authorization requirements, rate limits, or output specifics. Since annotations cover the safety profile, a score of 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and well-structured. It uses a clear header for the action, followed by a minimal Args list and a Returns line. Every sentence serves a purpose with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description adequately explains parameters and return type, it lacks context about the nature of 'work item property' (e.g., property definition vs. property value). Given siblings like get_work_item_property_value, this omission could lead to incorrect tool selection. The presence of an output schema mitigates some completeness concerns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining each parameter: work_item_property_id as UUID, project_id with scope guidance, work_item_type_id with endpoint guidance. This adds valuable semantics beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Retrieve a work item property by ID.' It specifies the resource (work item property) and the method (retrieve by ID), making it distinct from siblings like list_work_item_properties or create_work_item_property.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides some usage guidance by indicating when to omit optional parameters (e.g., 'Omit for workspace scope', 'omit to use project-level endpoint'). However, it fails to explicitly mention when to prefer this tool over alternatives such as list_work_item_properties or get_work_item_property_value, which is a notable gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retrieve_work_item_property_optionA
Read-only

Retrieve a single option from a work item property.

Args: property_id: UUID of the work item property option_id: UUID of the option project_id: UUID of the project. Omit for workspace scope.

Returns: WorkItemPropertyOption object

ParametersJSON Schema
NameRequiredDescriptionDefault
option_idYes
project_idNo
property_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameYes
parentNo
projectNo
propertyNo
is_activeNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
is_defaultNo
logo_propsNo
sort_orderNo
updated_atNo
updated_byNo
descriptionNo
external_idNo
external_sourceNo

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds no behavioral details beyond the basic retrieval action, which is consistent with annotations. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured line with a clear purpose, followed by an Args/Returns section. 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.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple retrieval tool with annotations and an output schema, the description sufficiently covers the behavior and parameter usage. It explains how to use project_id (omit for workspace scope), which is important context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema description coverage, the description provides clear semantics for each parameter: 'property_id: UUID of the work item property', 'option_id: UUID of the option', 'project_id: UUID of project. Omit for workspace scope.' This adds significant value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Retrieve a single option from a work item property', which is a specific verb and resource. It distinguishes from siblings like 'list_work_item_property_options' by focusing on a single retrieval by IDs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like listing all options. The purpose implies use for a specific option, but no direct exclusion or alternative mention.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retrieve_work_item_typeA
Read-only

Retrieve a work item type by ID.

Args: work_item_type_id: UUID of the work item type project_id: UUID of the project. Omit for workspace scope.

Returns: WorkItemType object

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNo
work_item_type_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameYes
levelNo
is_epicNo
is_activeNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
is_defaultNo
logo_propsNo
updated_atNo
updated_byNo
descriptionNo
external_idNo
project_idsNo
external_sourceNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds minimal value beyond annotations. Annotations already declare readOnlyHint: true and openWorldHint: true, so no need to state that. The description notes 'Omit for workspace scope' for project_id, which adds context, but does not disclose other traits like permission requirements 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and well-structured. It uses a clear docstring format with a purpose sentence, Args section, and Returns section. Every sentence is necessary and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity, output schema exists (so no need to detail return), and annotations cover safety, the description is complete. It explains both parameters, including the optionality of project_id, and the return type.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by explaining both parameters: work_item_type_id is a UUID, project_id is a UUID with the note 'Omit for workspace scope'. This adds meaning beyond the schema, though no format or constraints are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Retrieve' and the resource 'work item type' with the method 'by ID'. It is specific and distinguishes from sibling tools like list_work_item_types (which lists all) and resolve_work_item_type (which likely resolves by name or other criteria).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, when to omit project_id, or when to use list_work_item_types instead. The only usage hint is implicit from the parameter description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_pagesA
Read-only

Search pages by title (and optionally content) with a simple case-insensitive substring match.

Plane has no server-side page search API, so this filters the page list client-side. With search_content=true each candidate page's content is fetched individually (capped at 30 pages) - slower but matches body text.

Args: query: Text to look for (case-insensitive substring). project_id: UUID of the project. Omit to search workspace pages (workspace pages are unavailable on Community Edition). search_content: Also search inside page content, not just titles. max_results: Maximum number of matches to return (default 20).

Returns: List of matches: id, name, project_id, match_field ("name" or "content") and a snippet of the surrounding text.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
project_idNo
max_resultsNo
search_contentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds significant behavioral context beyond annotations: explains no server-side API, client-side filtering, performance implications of search_content, and the 30-page cap. No contradiction with readOnlyHint and openWorldHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections (description, args, returns). Every sentence is informative and concise. No redundant or vague phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Provides all necessary context: purpose, limitations, input semantics, output format, and edge cases (Community Edition). The return format is described in detail, complementing the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining each parameter's semantics, including the special case for project_id (workspace pages vs. Community Edition). Adds meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches pages by title (and optionally content) with a case-insensitive substring match. It distinguishes from sibling tools like 'list_pages' and 'search_work_items' by specifying the exact resource and operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context on when to use: for searching pages by title/content. Notes the client-side limitation and the cap on content search, but does not explicitly mention alternatives (e.g., using 'list_pages' for a full list).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_work_itemsA
Read-only

Search work items by text across a workspace.

Matches on work item name, sequence id, and project identifier (not description). For structured filtering (priority, state, assignee, dates, etc.) use list_work_items with a PQL expression.

Args: query: Free-text string matched against name, sequence id, and project identifier expand: Comma-separated list of related fields to expand in response fields: Comma-separated list of fields to include in response external_id: External system identifier for filtering external_source: External system source name for filtering order_by: Field to order results by. Prefix with '-' for descending

Returns: WorkItemSearch object containing search results

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
expandNo
fieldsNo
order_byNo
external_idNo
external_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
issuesYes

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations include readOnlyHint=true and openWorldHint=true. Description complements by confirming read-only search behavior, listing matched fields, and indicating return type (WorkItemSearch object). 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is well-structured: starts with purpose and guidelines, then parameter descriptions. All sentences add value; no fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 6 parameters, an output schema, and many sibling tools, description covers search scope, parameter semantics, and return type. No gaps remain for an intelligent agent to misinterpret.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema description coverage, the description provides detailed explanations for all 6 parameters, including 'query' (matched fields), 'expand', 'fields', 'external_id', 'external_source', and 'order_by'. Adds clear meaning beyond JSON schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it searches work items by text across a workspace, matching on name, sequence id, and project identifier. Explicitly distinguishes from 'list_work_items' for structured filtering, making purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance: use for free-text search; for structured filtering (priority, state, assignee, dates, etc.) use 'list_work_items' with PQL. Also specifies matched fields, helping agent decide when to invoke.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_work_item_property_valueA
Idempotent

Set (create or update) the value of a custom property on a work item.

Acts as an upsert - creates the value if it does not exist, updates it if it does. For multi-value properties (is_multi=True), replaces all existing values with the new ones.

Value types by property type: TEXT/URL/EMAIL/FILE: string DATETIME: string (YYYY-MM-DD or YYYY-MM-DD HH:MM:SS) DECIMAL: int or float BOOLEAN: true or false OPTION/RELATION (single): UUID string OPTION/RELATION (multi, is_multi=True): list of UUID strings

Args: project_id: UUID of the project work_item_id: UUID of the work item property_id: UUID of the work item property value: The value to set (type depends on the property type - see above) external_id: Optional external identifier for syncing external_source: Optional external source name (e.g. "github", "jira")

Returns: Single WorkItemPropertyValueDetail for non-multi properties, or list of WorkItemPropertyValueDetail for multi-value properties

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes
project_idYes
external_idNo
property_idYes
work_item_idYes
external_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate mutation, idempotency, and non-destructiveness. Description adds important behavioral details: upsert semantics, multi-value replacement, and value type mappings. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is well-structured, starting with a clear action sentence, then covering upsert behavior, value types, and parameters. Slightly verbose with the code block for types, but overall efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 parameters, 4 required, output schema exists), the description covers all needed aspects: purpose, behavior, parameter details, and return type hint. It handles multi-value and type variations comprehensively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description compensates with detailed value type explanations for the 'value' parameter and lists all parameters with brief descriptions in the Args section. This adds significant meaning beyond the bare schema structure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Set (create or update) the value of a custom property on a work item' with specific verb and resource. It distinguishes from siblings like get_work_item_property_value and delete_work_item_property_value by specifying the upsert nature and value types for custom properties.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context on when to use the tool (creating or updating custom property values) and includes value type mappings. However, it does not explicitly mention when not to use it or point to alternative tools for reading or deleting property values, which would enhance guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transfer_cycle_work_itemsC

Transfer work items from one cycle to another.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project cycle_id: UUID of the source cycle new_cycle_id: UUID of the target cycle to transfer issues to

ParametersJSON Schema
NameRequiredDescriptionDefault
cycle_idYes
project_idYes
new_cycle_idYes

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate a write operation, which description confirms, but no details on whether items are moved or copied, or effects on source cycle. Description adds minimal 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Short but includes inaccurate extra parameter. Could be more concise and accurate without the misleading workspace_slug.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, and description lacks completeness: doesn't explain transfer semantics (move vs copy), required permissions, or whether all work items are affected. Important context missing for a mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, and description adds a workspace_slug parameter not in schema, causing confusion. The inline descriptions are brief and don't clarify format or constraints for the actual parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool transfers work items between cycles, using a specific verb and resource. However, it mentions a workspace_slug parameter not present in the schema, slighting clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives like manage_cycle_work_items or list_cycle_work_items. The description lacks usage context and exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_cycleB
Idempotent

Update a cycle by ID.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project cycle_id: UUID of the cycle name: Cycle name description: Cycle description start_date: Cycle start date (ISO 8601 format) end_date: Cycle end date (ISO 8601 format) owned_by: UUID of the user who owns the cycle external_source: External system source name external_id: External system identifier timezone: Cycle timezone

Returns: Updated Cycle object

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
cycle_idYes
end_dateNo
owned_byNo
timezoneNo
project_idYes
start_dateNo
descriptionNo
external_idNo
external_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameYes
projectNo
versionNo
end_dateNo
owned_byNo
timezoneNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
logo_propsNo
sort_orderNo
start_dateNo
updated_atNo
updated_byNo
view_propsNo
archived_atNo
descriptionNo
external_idNo
total_issuesNo
backlog_issuesNo
started_issuesNo
external_sourceNo
total_estimatesNo
cancelled_issuesNo
completed_issuesNo
unstarted_issuesNo
progress_snapshotNo
started_estimatesNo
completed_estimatesNo

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate idempotent and non-destructive mutation. The description says 'Update' but does not provide additional behavioral details such as partial update capability, side effects, or permission requirements beyond what is obvious from the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured as a docstring with an Args list, but it is verbose and includes redundant parameter listings that mirror the schema. Could be more concise by omitting obvious fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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) and annotations covering idempotency and safety, the description adequately explains parameter semantics and overall purpose. Missing error or edge-case information, but sufficient for a standard update tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The Args section adds meaningful context to each parameter (e.g., 'ISO 8601 format' for dates), which goes beyond the schema that only has types and defaults. With 0% schema coverage, the description fully compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with 'Update a cycle by ID' which clearly states the action (update) and resource (cycle). It distinguishes from sibling tools like create, retrieve, delete, and complete by the verb, but does not explicitly differentiate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like complete_cycle, or any prerequisites or context. The description only lists parameters without usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_initiativeA
Idempotent

Update an initiative by ID.

Args: initiative_id: UUID of the initiative name: Initiative name description_html: HTML description of the initiative start_date: Initiative start date (ISO 8601 format) end_date: Initiative end date (ISO 8601 format) logo_props: Logo properties dictionary state: Initiative state (DRAFT, PLANNED, ACTIVE, COMPLETED, CLOSED) lead: UUID of the user who leads the initiative

Returns: Updated Initiative object

Raises: ToolError: if the initiatives feature is disabled. When disabled, the initiative is an "Initiative" work item - the error gives the steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
leadNo
nameNo
stateNo
end_dateNo
logo_propsNo
start_dateNo
initiative_idYes
description_htmlNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
leadNo
nameYes
stateNo
end_dateNo
workspaceYes
created_atNo
deleted_atNo
logo_propsYes
start_dateNo
updated_atNo
descriptionNo
description_htmlNo
description_binaryNo
description_strippedNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate idempotent (idempotentHint: true) and non-destructive (destructiveHint: false). Description adds error behavior when feature disabled, but lacks details on permissions or side effects. Adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Structured as parameter list with returns and raises, front-loading purpose. Somewhat verbose with full parameter list repeated from schema. Adequate but could be more concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given annotations and output schema, description covers purpose, parameters, and errors. Lacks usage context and deeper behavioral details. Fairly complete for a mutation tool but not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Lists all parameters with names and types, adds format info (ISO 8601 for dates). However, schema coverage is 0% and description does not explain semantics beyond what is in the schema, e.g., logo_props structure is unclear. Baseline 3 due to low coverage and superficial help.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Explicitly states 'Update an initiative by ID', which clearly conveys the action and resource. Distinguishes from siblings like create_initiative, retrieve_initiative, and delete_initiative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use or when not to use. Context implied by name and sibling tools, but lacks clear comparisons or prerequisites, which is a gap given many sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_intake_work_itemA
Idempotent

Update an intake work item, including triage status.

Status values: -2 = pending (default/unreviewed) -1 = declined 0 = snoozed (requires snoozed_till date) 1 = accepted (converts intake item to active work item) 2 = duplicate (requires duplicate_to work item ID)

Args: project_id: UUID of the project work_item_id: UUID of the work item (use the issue field from IntakeWorkItem response, not the intake work item ID) status: Triage status (-2=pending, -1=declined, 0=snoozed, 1=accepted, 2=duplicate) snoozed_till: ISO 8601 date string, required when status=0 duplicate_to: UUID of the work item this duplicates, required when status=2 source: Source identifier source_email: Source email address

Returns: Updated IntakeWorkItem object

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNo
statusNo
project_idYes
duplicate_toNo
snoozed_tillNo
source_emailNo
work_item_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
extraNo
inboxNo
issueNo
intakeNo
sourceNo
statusNo
projectNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
updated_atNo
updated_byNo
external_idNo
duplicate_toNo
issue_detailNo
snoozed_tillNo
source_emailNo
external_sourceNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes beyond annotations by detailing the behavioral implications of status values (e.g., converting to active work item, requiring duplicate_to or snoozed_till). It also clarifies that work_item_id must be the issue field from IntakeWorkItem response, not the intake work item ID, a critical nuance.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately sized but well-structured with a general statement, a list of status values, an args list, and a returns line. It is clear and organized, though slightly lengthy; could be trimmed without losing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (7 parameters, conditional logic) and presence of an output schema, the description covers essential behaviors: status effects, parameter requirements, and the return type. It is complete for an agent to correctly invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining each parameter's meaning and conditional requirements (e.g., snoozed_till needed for status=0, duplicate_to for status=2). It adds value beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates an intake work item, including triage status. The status values are detailed, and it differentiates from sibling tools like create_intake_work_item and retrieve_intake_work_item by focusing on update operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the effect of each status, guiding when to use (e.g., converting to active work item, marking duplicate, snoozing). It does not explicitly list alternatives or when not to use, but the context is sufficient 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.

update_labelA
Idempotent

Update a label by ID.

Args: project_id: UUID of the project label_id: UUID of the label name: Label name color: Label color (hex color code) description: Label description parent: UUID of the parent label (for nested labels) sort_order: Sort order for the label external_source: External system source name external_id: External system identifier

Returns: Updated Label object

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
colorNo
parentNo
label_idYes
project_idYes
sort_orderNo
descriptionNo
external_idNo
external_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameYes
colorNo
parentNo
projectNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
sort_orderNo
updated_atNo
updated_byNo
descriptionNo
external_idNo
external_sourceNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false, idempotentHint=true, destructiveHint=false. The description adds no extra behavioral context (e.g., side effects on label relationships, permissions needed). With annotations, the bar is lower, but additional detail like 'only updates provided fields' would improve transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a one-line purpose, followed by a clear list of parameters with descriptions, ending with 'Returns: Updated Label object'. No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 9 parameters (2 required) and an existing output schema, the description covers all parameters and indicates the return type. Could mention that only non-null fields are updated (since defaults are null), but overall complete for an update operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description provides brief explanations for each of the 9 parameters in the Args block. This adds meaning beyond the schema's type-only definitions, guiding the user on what each parameter represents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description starts with 'Update a label by ID' - a clear verb+resource combination. The tool name and description align. It distinguishes from sibling tools like create_label, delete_label, retrieve_label, list_labels.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives like create_label or delete_label. The context of 'update' implies it's for modifying existing labels, but no when-not-to-use or prerequisites mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_milestoneB
Idempotent

Update a milestone by ID.

Args: project_id: UUID of the project milestone_id: UUID of the milestone title: Milestone title target_date: Target date for the milestone (ISO 8601 format) external_source: External system source name external_id: External system identifier

Returns: Updated Milestone object

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
project_idYes
external_idNo
target_dateNo
milestone_idYes
external_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
titleYes
created_atNo
updated_atNo
external_idNo
target_dateNo
external_sourceNo

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate idempotentHint=true and destructiveHint=false, but the description adds no extra behavioral context beyond stating the update operation. It doesn't clarify partial update semantics or nullification behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The docstring format is clear and front-loaded with the purpose, though the parameter list is somewhat verbose. It is logically structured with Args and Returns.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is sufficient for a simple update operation, but lacks specification on return format (output schema not shown) and patch behavior. Given the tool's moderate complexity and available annotations, it is minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description lists parameters with minimal explanations (e.g., 'title: Milestone title'). It provides basic type info but lacks details on constraints (e.g., that fields can be null). Baseline compensation is adequate but not rich.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Update a milestone by ID' and lists the specific parameters. It distinguishes itself from siblings like create_milestone, retrieve_milestone, and delete_milestone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, such as when to patch versus replace, or prerequisites like existing milestone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_moduleA
Idempotent

Update a module by ID.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project module_id: UUID of the module name: Module name description: Module description start_date: Module start date (ISO 8601 format) target_date: Module target/end date (ISO 8601 format) status: Module status (backlog, planned, in-progress, paused, completed, cancelled) lead: UUID of the user who leads the module members: List of user IDs who are members of the module external_source: External system source name external_id: External system identifier

Returns: Updated Module object

ParametersJSON Schema
NameRequiredDescriptionDefault
leadNo
nameNo
statusNo
membersNo
module_idYes
project_idYes
start_dateNo
descriptionNo
external_idNo
target_dateNo
external_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
leadNo
nameYes
statusNo
projectNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
logo_propsNo
sort_orderNo
start_dateNo
updated_atNo
updated_byNo
view_propsNo
archived_atNo
descriptionNo
external_idNo
target_dateNo
total_issuesNo
backlog_issuesNo
started_issuesNo
external_sourceNo
cancelled_issuesNo
completed_issuesNo
description_htmlNo
description_textNo
unstarted_issuesNo

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover mutability and safety. Description adds return type and parameter list but doesn't clarify partial update behavior or any side effects, which is typical for update operations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear opening sentence followed by a parameter list. It's reasonably concise but slightly longer due to the parameter listing, yet every sentence is informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of 11 parameters and the presence of an output schema, the description adequately covers what the tool does, what parameters mean, and what is returned. It doesn't cover error conditions or permission requirements, but these are less critical for an update tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description provides detailed explanations for all 11 parameters, including format hints (ISO 8601), status values, and user ID types, fully compensating for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Update a module by ID' with a full list of updatable fields, distinguishing it from sibling tools like retrieve_module (read), create_module (create), or delete_module (delete).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implicitly clear that this tool updates an existing module, but lacks explicit guidance on when to use vs alternatives or prerequisites like needing the module to exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_projectB
Idempotent

Update a project by ID.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project name: Project name description: Project description project_lead: UUID of the project lead user default_assignee: UUID of the default assignee user identifier: Project identifier emoji: Emoji for the project cover_image: Cover image URL or asset ID network: Project visibility (0=secret, 2=public) module_view: Enable module view cycle_view: Enable cycle view issue_views_view: Enable issue views view page_view: Enable page view intake_view: Enable intake view guest_view_all_features: Allow guests to view all features archive_in: Days until auto-archive close_in: Days until auto-close timezone: Project timezone external_source: External system source name external_id: External system identifier is_issue_type_enabled: Enable issue types is_time_tracking_enabled: Enable time tracking default_state: UUID of the default state estimate: Estimate configuration

Returns: Updated Project object

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
emojiNo
networkNo
close_inNo
estimateNo
timezoneNo
page_viewNo
archive_inNo
cycle_viewNo
identifierNo
project_idYes
cover_imageNo
descriptionNo
external_idNo
intake_viewNo
module_viewNo
project_leadNo
default_stateNo
external_sourceNo
default_assigneeNo
issue_views_viewNo
is_issue_type_enabledNo
guest_view_all_featuresNo
is_time_tracking_enabledNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameYes
emojiNo
networkNo
close_inNo
estimateNo
timezoneNo
icon_propNo
is_memberNo
page_viewNo
workspaceNo
archive_inNo
created_atNo
created_byNo
cycle_viewNo
deleted_atNo
identifierYes
logo_propsNo
sort_orderNo
updated_atNo
updated_byNo
archived_atNo
cover_imageNo
descriptionNo
external_idNo
intake_viewNo
is_deployedNo
member_roleNo
module_viewNo
project_leadNo
total_cyclesNo
default_stateNo
total_membersNo
total_modulesNo
cover_image_urlNo
external_sourceNo
default_assigneeNo
description_htmlNo
description_textNo
issue_views_viewNo
cover_image_assetNo
is_issue_type_enabledNo
guest_view_all_featuresNo
is_time_tracking_enabledNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate non-destructive, idempotent, non-read-only. Description adds return type but no extra behavioral details like default behavior for omitted parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Structured as a docstring with purpose first, but parameter list is lengthy. No unnecessary wording, but could be more concise by omitting obvious parameter names.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return info is covered. Parameter documentation is adequate for a simple update, but lacks context on usage scenarios or parameter interactions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

22 parameters described with one-line explanations, adding meaning beyond schema types. However, many descriptions are minimal and schema coverage is 0%, so description partially compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update a project by ID' and lists parameters. It distinguishes from create/delete, but not from update_project_features, a sibling that might overlap.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this vs alternatives like update_project_features. No when-not-to-use or exclusion criteria mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_project_estimateA
Idempotent

Update the estimate for a project.

Args: project_id: UUID of the project name: New name for the estimate description: New description external_id: External system identifier external_source: External system source name

Returns: Updated Estimate object

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
project_idYes
descriptionNo
external_idNo
external_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameYes
typeNo
projectNo
last_usedNo
workspaceNo
created_atNo
created_byNo
updated_atNo
updated_byNo
descriptionNo
external_idNo
external_sourceNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate that this tool is a safe mutation (idempotent, not destructive). The description adds the list of updatable fields (name, description, external_id, external_source) which is useful. However, it does not clarify behavior like partial updates, validation, or error cases. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: a single sentence stating the purpose, followed by a structured list of arguments and the return type. Every element is informative and no extraneous text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the basic purpose and parameter semantics. The output schema is present, so return structure is documented elsewhere. However, it lacks usage guidelines, prerequisites, and behavioral details like partial update behavior. Given the tool's simplicity, this is adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description carries the full burden. It provides one-line explanations for each parameter, adding meaning beyond type/nullability. For example, it clarifies that 'external_id' is an 'External system identifier' and 'external_source' is 'External system source name'. However, it lacks details like validation rules or format constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the action 'Update the estimate for a project', which is a specific verb+resource. Among siblings, there are separate tools for creating, deleting, and getting estimates, so this tool's purpose is clear and distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like create_project_estimate or delete_project_estimate. There is no mention of prerequisites (e.g., the estimate must already exist) or conditions under which updating is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_project_estimate_pointA
Idempotent

Update a single estimate point.

Args: project_id: UUID of the project estimate_id: UUID of the estimate estimate_point_id: UUID of the estimate point to update value: New display value (max 20 chars, e.g. "XL", "13") key: New sort key (integer) description: New description external_id: External system identifier external_source: External system source name

Returns: Updated EstimatePoint object

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNo
valueNo
project_idYes
descriptionNo
estimate_idYes
external_idNo
external_sourceNo
estimate_point_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
keyNo
valueYes
projectNo
estimateNo
workspaceNo
created_atNo
created_byNo
updated_atNo
updated_byNo
descriptionNo
external_idNo
external_sourceNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description adds that it returns an Updated EstimatePoint object, which is expected. No additional behavioral traits (e.g., permissions, error states) are disclosed 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured as a bullet list, starting with a concise one-line purpose. It is efficient and avoids redundancy, though it could be slightly more compact by omitting the 'Args:' and 'Returns:' labels.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 8 parameters, 3 required, and the presence of an output schema, the description covers the essential input semantics. However, it lacks guidance on error conditions, prerequisites, or when to use optional parameters, leaving some gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description lists all 8 parameters and adds meaningful context (e.g., value max 20 chars, key is integer). It does not explain optionality or inter-parameter relationships, but provides enough for basic understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update a single estimate point,' which is a specific verb-resource combination. It distinguishes this tool from siblings like create_project_estimate_points, delete_project_estimate_point, and list_project_estimate_points by focusing on the update operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide explicit guidance on when to use this tool versus alternatives (e.g., when to update vs. create an estimate point). Usage is implied by the verb 'update,' but no when-not-to-use or contextual cues are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_project_featuresA
Idempotent

Update features of a project.

Args: workspace_slug: The workspace slug identifier project_id: UUID of the project modules: Enable/disable modules feature cycles: Enable/disable cycles feature views: Enable/disable views feature pages: Enable/disable pages feature intakes: Enable/disable intakes feature work_item_types: Enable/disable work item types feature

Returns: Updated ProjectFeature object

ParametersJSON Schema
NameRequiredDescriptionDefault
pagesNo
viewsNo
cyclesNo
intakesNo
modulesNo
project_idYes
work_item_typesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
epicsNo
pagesNo
viewsNo
cyclesNo
intakesNo
modulesNo
workflowsNo
parallel_cyclesNo
project_updatesNo
work_item_typesNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate idempotentHint=true and destructiveHint=false, and the description adds little beyond confirming update behavior. No contradictions, but the description does not enrich understanding of side effects or safety 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is succinct with clear Args and Returns sections, every sentence adds value, and it is front-loaded with the main verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the output schema exists and parameters are described, the description claims a workspace_slug parameter that is absent from the input schema, indicating a mismatch. No guidance on authentication, rate limits, or prerequisites, making it incomplete for a mutation tool with boolean toggles.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description explains each parameter with a brief purpose (e.g., 'modules: Enable/disable modules feature'), adding meaning that the schema (types only) does not provide. However, workspace_slug is listed in the description but missing from the input schema, causing confusion.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update features of a project' and lists specific feature toggles (modules, cycles, etc.), distinguishing it from sibling tools like update_project (project metadata) and update_workspace_features (workspace-level).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for enabling/disabling project features but does not explicitly state when to use vs alternatives, nor provides prerequisites or exclusions. It is adequate but lacks explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_stateB
Idempotent

Update a state by ID.

Args: project_id: UUID of the project state_id: UUID of the state name: State name color: State color (hex color code) description: State description sequence: State sequence order group: State group (e.g., backlog, unstarted, started, completed, cancelled) is_triage: Whether this is a triage state default: Whether this is the default state external_source: External system source name external_id: External system identifier

Returns: Updated State object

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
colorNo
groupNo
defaultNo
sequenceNo
state_idYes
is_triageNo
project_idYes
descriptionNo
external_idNo
external_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameYes
colorYes
groupNo
defaultNo
projectNo
sequenceNo
is_triageNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
updated_atNo
updated_byNo
descriptionNo
external_idNo
external_sourceNo

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description adds no behavioral context beyond annotations; annotations already indicate mutation (readOnlyHint=false) and idempotency (idempotentHint=true), but description only restates the parameter list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise in the one-liner but includes a verbose parameter list; could be more compact without losing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple update operation given output schema exists, but lacks usage context and behavioral details beyond parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so description compensates by listing parameters with brief descriptions; provides some added value (e.g., color format, group examples) but mostly mirrors schema types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'Update' and the resource 'state by ID', and distinguishes from sibling tools like create_state, delete_state, and list_states.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool over alternatives; lacks context on when an update is appropriate versus creation or retrieval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_work_itemA
Idempotent

Update a work item by ID.

Args: project_id: UUID of the project work_item_id: UUID of the work item name: Work item name assignees: List of user IDs to assign to the work item labels: List of label IDs to attach to the work item type_id: UUID of the work item type point: Story point value description_html: HTML description of the work item description_stripped: Plain text description. Convenience only - it is wrapped into HTML and stored as description_html (Plane derives description_stripped server-side). Ignored if description_html is set. priority: Priority level (urgent, high, medium, low, none) start_date: Start date (ISO 8601 format) target_date: Target/end date (ISO 8601 format) sort_order: Sort order value is_draft: Whether the work item is a draft external_source: External system source name external_id: External system identifier parent: UUID of the parent work item state: UUID of the state estimate_point: Estimate point value type: Work item type identifier

Returns: Updated WorkItem object

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
typeNo
pointNo
stateNo
labelsNo
parentNo
type_idNo
is_draftNo
priorityNo
assigneesNo
project_idYes
sort_orderNo
start_dateNo
external_idNo
target_dateNo
work_item_idYes
estimate_pointNo
external_sourceNo
description_htmlNo
description_strippedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
typeNo
pointNo
stateNo
parentNo
projectNo
type_idNo
is_draftNo
priorityNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
sort_orderNo
start_dateNo
updated_atNo
updated_byNo
archived_atNo
external_idNo
sequence_idNo
target_dateNo
completed_atNo
estimate_pointNo
external_sourceNo
description_htmlNo
description_binaryNo
description_strippedNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false, idempotentHint=true, destructiveHint=false, which are consistent with an update operation. The description adds useful detail about description_stripped being a convenience that gets wrapped into HTML and ignored if description_html is set. 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a clear purpose, but the parameter list is verbose and could be more concise. Each parameter is listed with its type and description, which is thorough but lengthy. It could be shortened without losing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 20 parameters and an output schema, the description covers all inputs and notes the return type. It provides sufficient context for an agent to understand what fields can be updated and how they relate. The presence of an output schema reduces the need to describe return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description provides meaningful explanations for all 20 parameters, including relationships (e.g., description_stripped vs description_html), formats (ISO 8601 for dates), and allowed values (priority levels). This fully 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with 'Update a work item by ID.', clearly stating the action and resource. It distinguishes from sibling tools like create_work_item, delete_work_item, etc., by focusing on update.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when modifying an existing work item, but does not provide explicit guidance on when to use this tool versus alternatives like manage_work_item_assignee or manage_work_item_label. No exclusions or context are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_work_item_commentA
Idempotent

Update a comment for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item comment_id: UUID of the comment comment_html: Comment content in HTML format comment_json: Comment content in JSON format access: Access level for the comment (INTERNAL or EXTERNAL) external_source: External system source name external_id: External system identifier

Returns: Updated WorkItemComment object

ParametersJSON Schema
NameRequiredDescriptionDefault
accessNo
comment_idYes
project_idYes
external_idNo
comment_htmlNo
comment_jsonNo
work_item_idYes
external_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
actorNo
issueNo
accessNo
projectNo
edited_atNo
is_memberNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
updated_atNo
updated_byNo
attachmentsNo
external_idNo
comment_htmlNo
external_sourceNo
comment_strippedNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this tool modifies data (readOnlyHint=false) and is idempotent (idempotentHint=true). The description adds no further behavioral context such as authentication needs or side effects, so it meets the baseline but adds no extra value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, using a single paragraph with a clear list of arguments. It is well-structured and front-loaded with the purpose. Minor redundancy with schema type info does not significantly detract.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains all parameters and notes the return type, but lacks details on update behavior (e.g., partial vs full replacement), constraints, or validation rules. Given the output schema exists, return values are covered, but the description remains adequate with gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by listing all parameters with brief explanations (e.g., 'UUID of the project', 'Comment content in HTML format', 'Access level for the comment (INTERNAL or EXTERNAL)'), adding meaning beyond the bare schema types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update a comment for a work item', specifying the verb 'update' and the resource 'work item comment'. This distinguishes it from sibling tools like create, retrieve, list, and delete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no scenarios where it should not be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_work_item_propertyA
Idempotent

Update a work item property by ID.

Args: work_item_property_id: UUID of the property project_id: UUID of the project. Omit for workspace scope. work_item_type_id: UUID of the work item type - required when project_id is provided display_name: Display name for the property property_type: TEXT | DATETIME | DECIMAL | BOOLEAN | OPTION | RELATION | URL | EMAIL | FILE | FORMULA relation_type: ISSUE | USER - required when updating to RELATION description: Property description is_required: Whether the property is required default_value: Default value(s) for the property settings: Required when changing type to TEXT/DATETIME. TEXT: {"display_format": "single-line"|"multi-line"|"readonly"} DATETIME: {"display_format": "MMM dd, yyyy"|"dd/MM/yyyy"|"MM/dd/yyyy"|"yyyy/MM/dd"} is_active: Whether the property is active is_multi: Whether the property supports multiple values validation_rules: Validation rules dictionary external_source: External system source name external_id: External system identifier

Returns: Updated WorkItemProperty object

ParametersJSON Schema
NameRequiredDescriptionDefault
is_multiNo
settingsNo
is_activeNo
project_idNo
descriptionNo
external_idNo
is_requiredNo
display_nameNo
default_valueNo
property_typeNo
relation_typeNo
external_sourceNo
validation_rulesNo
work_item_type_idNo
work_item_property_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
optionsNo
projectNo
is_multiNo
settingsNo
is_activeNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
issue_typeNo
logo_propsNo
sort_orderNo
updated_atNo
updated_byNo
descriptionNo
external_idNo
is_requiredNo
display_nameYes
default_valueNo
property_typeYes
relation_typeNo
external_sourceNo
validation_rulesNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide idempotentHint and destructiveHint. The description adds conditionals (e.g., required when changing to RELATION) but lacks deeper behavioral context like auth needs or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is lengthy but well-structured as a docstring with line breaks. It could be more concise, but for 15 parameters, it is adequately organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 annotations, the description covers param behaviors and dependencies thoroughly. It lacks usage guidelines but is otherwise complete for a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description carries the full burden. It provides types, examples (e.g., settings format), and dependencies (e.g., relation_type required when updating to RELATION), adding significant value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Update' and the resource 'work item property', distinguishing it from siblings like create, retrieve, delete, and manage work item property tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives such as create or delete work item property. Only parameter dependencies are mentioned, not context of use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_work_item_property_optionA
Idempotent

Update an option on a work item property.

Args: property_id: UUID of the work item property option_id: UUID of the option project_id: UUID of the project. Omit for workspace scope. name: Display name for the option description: Option description color: Hex color string e.g. "#FF5733" is_default: Whether this is the default option external_source: External system source name external_id: External system identifier

Returns: Updated WorkItemPropertyOption object

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
colorNo
option_idYes
is_defaultNo
project_idNo
descriptionNo
external_idNo
property_idYes
external_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameYes
parentNo
projectNo
propertyNo
is_activeNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
is_defaultNo
logo_propsNo
sort_orderNo
updated_atNo
updated_byNo
descriptionNo
external_idNo
external_sourceNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate the tool is not read-only and not destructive, and the description adds no additional behavioral traits beyond what is implied by 'update.' The return type is mentioned but adds minimal new insight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a one-liner purpose, an Args list, and a Returns line. It is efficient but slightly verbose due to the full parameter list. Still, it earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 covers purpose, parameters, and return type. It lacks information about default behavior or when to omit project_id, but is largely 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.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage, the description fully compensates by providing clear, concise descriptions for all 9 parameters (e.g., 'UUID of the work item property,' 'Hex color string'). This adds essential meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update an option on a work item property,' using a specific verb and resource. It effectively distinguishes this tool from sibling tools like create or delete for the same entity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for updating existing options by listing parameters, but it lacks explicit guidance on when to use this tool versus create or other alternatives. No when-not-to-use or prerequisite context is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_work_item_relation_definitionA
Idempotent

Update an existing workspace relation definition.

Args: definition_id: UUID of the relation definition to update. name: New name for this definition. outward: Updated outward label. inward: Updated inward label. is_active: Updated active status. color: Updated hex color code.

Returns: Updated WorkItemRelationDefinition object.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
colorNo
inwardNo
outwardNo
is_activeNo
definition_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
colorNo
inwardNo
outwardNo
is_activeNo
workspaceNo
created_atNo
is_defaultNo
sort_orderNo
updated_atNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds no behavioral details beyond stating 'Update,' so it does not surpass what annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: one sentence for purpose, bullet-like parameter list, and return statement. No redundancy or unnecessary text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 adequate. It covers purpose, parameters, and return type. Minor improvement would be noting partial updates via optional parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While the schema has 0% description coverage, the description lists all 6 parameters with brief explanations (e.g., 'UUID of the relation definition to update'), adding meaning beyond type information. It lacks detailed constraints or examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update an existing workspace relation definition,' specifying a precise verb and resource. It distinguishes from sibling tools like create_work_item_relation_definition and delete_work_item_relation_definition.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the verb 'Update' and the tool name, but no explicit guidance is given on when to use versus alternatives, nor are any prerequisites or exclusions mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_work_item_typeA
Idempotent

Update a work item type by ID.

Args: work_item_type_id: UUID of the work item type project_id: UUID of the project. Omit for workspace scope. name: Work item type name description: Work item type description project_ids: List of project IDs this type applies to is_active: Whether the type is active external_source: External system source name external_id: External system identifier

Returns: Updated WorkItemType object

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
is_activeNo
project_idNo
descriptionNo
external_idNo
project_idsNo
external_sourceNo
work_item_type_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameYes
levelNo
is_epicNo
is_activeNo
workspaceNo
created_atNo
created_byNo
deleted_atNo
is_defaultNo
logo_propsNo
updated_atNo
updated_byNo
descriptionNo
external_idNo
project_idsNo
external_sourceNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false, idempotentHint=true, no destructiveness. The description adds 'Update' which is consistent, but provides no additional behavioral context like partial updates or permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with Args and Returns sections, front-loaded with main sentence. Slightly verbose due to repeating schema details, but necessary given no schema descriptions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers all 8 parameters and mentions return type. With an output schema present and simple update semantics, no major gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description adds value by explaining each parameter's purpose (e.g., 'Omit for workspace scope' for project_id, 'List of project IDs this type applies to' for project_ids).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update a work item type by ID', specifying the action and resource. It distinguishes from sibling tools like 'create_work_item_type' and 'delete_work_item_type'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, no prerequisites or context provided. The description only lists parameters and returns.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_work_logA
Idempotent

Update a work log for a work item.

Args: project_id: UUID of the project work_item_id: UUID of the work item work_log_id: UUID of the work log duration: Duration of work in minutes description: Description of the work performed

Returns: Updated WorkItemWorkLog object

ParametersJSON Schema
NameRequiredDescriptionDefault
durationNo
project_idYes
descriptionNo
work_log_idYes
work_item_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
durationNo
logged_byNo
created_atNo
created_byNo
project_idNo
updated_atNo
updated_byNo
descriptionNo
workspace_idNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are present (idempotentHint=true, destructiveHint=false), and the description adds context by listing updatable fields and confirming the return of an updated object, 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured as a docstring with args and returns, front-loaded with the purpose. Minor redundancy (repeating 'UUID of the') but overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 and annotations, the description adequately covers the update operation. It could mention partial update behavior or error cases, but openness is acceptable with openWorldHint=true.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by providing clear meanings for all 5 parameters: UUIDs for IDs, duration in minutes, and description text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the action ('Update') and resource ('a work log for a work item'), distinguishing it from sibling tools like 'create_work_log' and 'delete_work_log'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for modifying existing logs but does not explicitly state when to use this tool versus creating or deleting, nor does it mention prerequisites like the log must exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_workspace_featuresA
Idempotent

Update features of the current workspace.

Args: project_grouping: Enable/disable project grouping feature initiatives: Enable/disable initiatives feature teams: Enable/disable teams feature customers: Enable/disable customers feature wiki: Enable/disable wiki feature pi: Enable/disable PI (Program Increment) feature

Returns: Updated WorkspaceFeature object

ParametersJSON Schema
NameRequiredDescriptionDefault
piNo
wikiNo
teamsNo
customersNo
initiativesNo
project_groupingNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
piYes
wikiYes
teamsYes
customersYes
initiativesYes
project_groupingYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds only that it 'updates features', which is consistent but does not provide additional behavioral context such as scope of changes (e.g., affects all projects) or potential side effects. With annotations covering the safety profile, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, with a one-line summary, a list of parameters with explanations, and a return type statement. Every sentence serves a purpose and there is no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is an output schema and all parameters are optional, the description adequately explains the tool's purpose and parameters. However, it lacks usage context or guidance on when to use this tool versus siblings, which is a gap for completeness. Still, the tool is simple and the main details are covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, so the description carries the full burden. Each parameter is explained with 'Enable/disable [feature] feature', which adds clear meaning beyond the raw boolean/null type. However, it lacks details like default behavior or interaction between parameters, which could be useful. This is a solid addition but not exhaustive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update features of the current workspace', specifying the verb and resource. It distinguishes from sibling tools like 'update_project_features' by explicitly mentioning workspace. The argument list further clarifies the exact features affected.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as 'update_project_features' or other feature-related tools. There is no mention of prerequisites, typical use cases, or exclusions, leaving the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_work_item_attachment_from_urlA

Fetch a file from a public URL and attach it to a work item.

The MCP server downloads the file server-side and uploads it to Plane via the standard three-step presigned S3 flow. The source URL must be publicly accessible without authentication and must not resolve to a private/internal network address.

Args: project_id: UUID of the project work_item_id: UUID of the work item url: Publicly accessible URL of the file to attach (e.g. a GitHub raw URL, public S3 link, or direct download link) name: Override the filename. Defaults to the filename in the URL path.

Returns: Created attachment metadata: id, name, size, content_type.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
nameNo
project_idYes
work_item_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false (write operation) and destructiveHint=false. The description adds valuable context: the server downloads the file server-side and uploads via a presigned S3 flow. It also notes the URL must be public and not internal. This goes beyond what annotations provide, though it could mention that the operation is not idempotent (consistent with the hint).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a brief intro, a process explanation, then parameter details, and return info. It is concise but includes necessary details. The docstring format is slightly verbose for an MCP tool but still efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (file upload from URL via S3 flow), the description is fairly complete. It explains the process, parameter details, and return value. The output schema exists, so return values are further documented. Potential missing details like error handling or size limits are minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage for parameters. The description compensates fully by documenting each parameter in the 'Args' section: project_id and work_item_id as UUIDs, url with examples (GitHub raw, public S3), and name as an optional override with a default. This adds critical meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action: fetching a file from a public URL and attaching it to a work item. It includes the verb 'fetch' and 'attach', and identifies the resource as a work item attachment. This distinguishes it from sibling tools like read_work_item_attachment or delete_work_item_attachment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use the tool (when you want to attach a file from a public URL) and includes important constraints: the URL must be publicly accessible and not resolve to a private/internal network. It also gives examples of acceptable URLs. While it does not explicitly state when not to use it or mention alternatives, the context of sibling tools provides implicit differentiation.

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.

  1. 142 tool updatesv1.1.0
    • First observedattach_page_to_work_item
    • First observedcomplete_cycle
    • First observedcount_work_items
    • First observedcreate_cycle
    • First observedcreate_initiative
    • First observedcreate_intake_work_item
    • First observedcreate_label
    • First observedcreate_milestone
    • First observedcreate_module
    • First observedcreate_page
    • First observedcreate_project
    • First observedcreate_project_estimate
    • First observedcreate_project_estimate_points
    • First observedcreate_state
    • First observedcreate_work_item
    • First observedcreate_work_item_comment
    • First observedcreate_work_item_link
    • First observedcreate_work_item_property
    • First observedcreate_work_item_property_option
    • First observedcreate_work_item_relation
    • First observedcreate_work_item_relation_definition
    • First observedcreate_work_item_type
    • First observedcreate_work_log
    • First observeddelete_cycle
    • First observeddelete_initiative
    • First observeddelete_intake_work_item
    • First observeddelete_label
    • First observeddelete_milestone
    • First observeddelete_module
    • First observeddelete_project
    • First observeddelete_project_estimate
    • First observeddelete_project_estimate_point
    • First observeddelete_state
    • First observeddelete_work_item
    • First observeddelete_work_item_attachment
    • First observeddelete_work_item_comment
    • First observeddelete_work_item_link
    • First observeddelete_work_item_property
    • First observeddelete_work_item_property_option
    • First observeddelete_work_item_property_value
    • First observeddelete_work_item_relation_definition
    • First observeddelete_work_item_type
    • First observeddelete_work_log
    • First observeddetach_page_from_work_item
    • First observedget_features
    • First observedget_instance_info
    • First observedget_me
    • First observedget_pql_reference
    • First observedget_project_estimate
    • First observedget_project_members
    • First observedget_project_worklog_summary
    • First observedget_work_item_attachment_download_url
    • First observedget_work_item_property_value
    • First observedget_workspace_members
    • First observedimport_work_item_types_to_project
    • First observedlink_estimate_to_project
    • First observedlist_archived_work_items
    • First observedlist_cycle_work_items
    • First observedlist_cycles
    • First observedlist_initiative_projects
    • First observedlist_initiatives
    • First observedlist_intake_work_items
    • First observedlist_labels
    • First observedlist_milestone_work_items
    • First observedlist_milestones
    • First observedlist_module_work_items
    • First observedlist_modules
    • First observedlist_pages
    • First observedlist_project_estimate_points
    • First observedlist_projects
    • First observedlist_roles
    • First observedlist_states
    • First observedlist_toolsets
    • First observedlist_work_item_activities
    • First observedlist_work_item_attachments
    • First observedlist_work_item_comments
    • First observedlist_work_item_links
    • First observedlist_work_item_pages
    • First observedlist_work_item_properties
    • First observedlist_work_item_property_options
    • First observedlist_work_item_relation_definitions
    • First observedlist_work_item_relations
    • First observedlist_work_item_types
    • First observedlist_work_items
    • First observedlist_work_logs
    • First observedmanage_cycle_archive
    • First observedmanage_cycle_work_items
    • First observedmanage_initiative_projects
    • First observedmanage_milestone_work_items
    • First observedmanage_module_archive
    • First observedmanage_module_work_items
    • First observedmanage_project_archive
    • First observedmanage_work_item_archive
    • First observedmanage_work_item_assignee
    • First observedmanage_work_item_label
    • First observedmanage_work_item_type_properties
    • First observedread_work_item_attachment
    • First observedremove_work_item_relation
    • First observedresolve_work_item_type
    • First observedretrieve_cycle
    • First observedretrieve_initiative
    • First observedretrieve_intake_work_item
    • First observedretrieve_label
    • First observedretrieve_milestone
    • First observedretrieve_module
    • First observedretrieve_page
    • First observedretrieve_project
    • First observedretrieve_role
    • First observedretrieve_state
    • First observedretrieve_work_item
    • First observedretrieve_work_item_activity
    • First observedretrieve_work_item_by_identifier
    • First observedretrieve_work_item_comment
    • First observedretrieve_work_item_link
    • First observedretrieve_work_item_property
    • First observedretrieve_work_item_property_option
    • First observedretrieve_work_item_type
    • First observedsearch_pages
    • First observedsearch_work_items
    • First observedset_work_item_property_value
    • First observedtransfer_cycle_work_items
    • First observedupdate_cycle
    • First observedupdate_initiative
    • First observedupdate_intake_work_item
    • First observedupdate_label
    • First observedupdate_milestone
    • First observedupdate_module
    • First observedupdate_project
    • First observedupdate_project_estimate
    • First observedupdate_project_estimate_point
    • First observedupdate_project_features
    • First observedupdate_state
    • First observedupdate_work_item
    • First observedupdate_work_item_comment
    • First observedupdate_work_item_link
    • First observedupdate_work_item_property
    • First observedupdate_work_item_property_option
    • First observedupdate_work_item_relation_definition
    • First observedupdate_work_item_type
    • First observedupdate_work_log
    • First observedupdate_workspace_features
    • First observedupload_work_item_attachment_from_url

TDQS

B3.4/5.0

Scored across 142 tools

Disambiguation4/5

Most tools target distinct entity-action pairs, with clear separation across projects, work items, states, cycles, modules, pages, and more. Minor overlap exists (e.g., manage_work_item_assignee vs update_work_item's assignees field) but descriptions clarify the differences.

Naming Consistency4/5

Tool names predominantly follow a verb_noun snake_case pattern (e.g., list_projects, create_state, update_cycle). Some inconsistency occurs with get_ vs retrieve_, and set_ vs create_ for property values, but overall the pattern is predictable.

Tool Count2/5

With 142 tools, the surface is overly large and likely overwhelming for most agents. While Plane is feature-rich, many tools could be consolidated (e.g., manage_X_work_items into update_cycle/module). The count far exceeds practical usability.

Completeness5/5

The tool set covers virtually all domain entities: projects, work items, states, labels, cycles, modules, pages, work item types, custom properties, relations, initiatives, milestones, intake items, work logs, and roles. Gaps are minimal given the Community Edition limitations.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers