Skip to main content
Glama
IDEAManagement

idea-base-mcp-server

Official

@idea-base/mcp-server

MCP (Model Context Protocol) server for IDEA Base — AI-powered project management. Manage projects, tasks, and time tracking directly from Claude Code, Cursor, or any MCP-compatible AI tool.

Quick Setup

1. Get your API key

Sign in to IDEA Base, go to Settings > API Keys, and create a key.

2. Add to your MCP config

Claude Code (~/.claude/claude_desktop_config.json):

{
  "mcpServers": {
    "idea-base": {
      "command": "npx",
      "args": ["-y", "@idea-base/mcp-server"],
      "env": {
        "IDEA_BASE_API_KEY": "ib_your_api_key_here"
      }
    }
  }
}

Cursor (.cursor/mcp.json in your project):

{
  "mcpServers": {
    "idea-base": {
      "command": "npx",
      "args": ["-y", "@idea-base/mcp-server"],
      "env": {
        "IDEA_BASE_API_KEY": "ib_your_api_key_here"
      }
    }
  }
}

Or via Claude Code CLI:

claude mcp add idea-base -- npx -y @idea-base/mcp-server \
  --env IDEA_BASE_API_KEY=ib_your_api_key_here

3. Start using it

Ask Claude to manage your projects:

  • "List my projects"

  • "Create a task in project 1: Implement login page"

  • "Log 2 hours on task 42 — built the auth flow"

  • "What tasks are in progress?"

Related MCP server: wootech-jira-mcp

Available Tools

Projects

Tool

Description

list_projects

List all projects with task counts and progress

get_project

Get project details and statistics

create_project

Create a new project or sub-project

update_project

Update project name, description, or status

Tasks

Tool

Description

list_tasks

List tasks for a project (filter by status). Compact rows by default (verbose:true for full rows)

get_task

Get task details, acceptance criteria, and time entries

create_task

Create a task with title, description, estimate, priority, start/due dates, assignee; parent_task_id makes it a subtask

update_task

Update task details, priority, start/due dates, assignee; blocked_by: [ids] replaces its dependencies

update_task_status

Change task status (todo/in_progress/blocked/done)

search_tasks

Search tasks across all projects, ranked title-first then description then recency. Compact rows by default; filter by project_id/product_id/customer_id/status; verbose:true for full rows

quick_log

Create + complete + log time in one step

Time Tracking

Tool

Description

log_time

Log time against a task with notes

start_working

Mark yourself as actively working on a task (surfaces the saved resume context + recent work notes so a cold session re-orients)

stop_working

Stop active work on a task (optionally capture a note and/or resume_context on the way out)

Activity & Audit Trail

For AI agents, these leave a durable trail of what was done and why on each task — so a future session (or a human reviewer) can see the reasoning, not just the final state.

Tool

Description

add_work_note

Append a timestamped progress note to a task's activity log (append-only journal)

add_comment

Add a comment to a task's discussion thread (customer-visible by default)

set_resume_context

Overwrite the task's pinned "where I left off" block, read first on start_working

Products

Tool

Description

list_products

List products (top-level containers)

get_product

Get product details with linked projects

create_product

Create a new product

link_project_to_product

Link a project to a product

Environment Variables

Variable

Required

Description

IDEA_BASE_API_KEY

Yes

Your API key from Settings > API Keys

IDEA_BASE_API_URL

No

Custom API URL (default: https://app.idea-base.us/api)

Real-time Notifications

When you use the MCP server to update tasks or log time, changes are broadcast to all connected users. Team members viewing the project in their browser see live toast notifications — when Claude updates a task, everyone sees it immediately.

Security

  • All data access is scoped to your account via API key

  • API keys support read/write permissions

  • No data is stored locally — all operations go through the IDEA Base API

  • Cross-account access is blocked server-side

  • Rate limited per API key

Development

# Run the server directly
IDEA_BASE_API_KEY=your_key npm start

# Watch mode
IDEA_BASE_API_KEY=your_key npm run dev

License

MIT - IDEA Management LLC

Available Tools

21 tools
add_commentA

Add a comment to a task's discussion thread. Unlike work notes (progress journal), comments are for communication and are customer-visible by default. Set author_kind="human" when relaying the user's words; use "ai" (default) for your own.

ParametersJSON Schema
NameRequiredDescriptionDefault
commentYesThe comment text
task_idYesThe ID of the task to comment on
author_kindNoWho authored this comment: "ai" (default) or "human" (relaying the user).
is_internalNoWhether the comment is internal-only (hidden from customers). Defaults to false.

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the burden of behavioral disclosure. It discloses that comments are customer-visible by default and explains the author_kind distinction. It does not mention permissions or success feedback, but for a simple write operation this is adequate context.

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 three concise sentences with no filler. It front-loads the purpose, then adds differentiation and usage guidance. Every sentence contributes to understanding.

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 task with no output schema and no annotations, the description covers the essential context: purpose, customer visibility, and author semantics. It does not explain the exact return value or prerequisites, but these are not critical for this tool's usage, and the schema covers parameter details.

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 100%, so the baseline is 3. The description adds value by explaining the practical use of author_kind (relaying user words vs. AI's own) and clarifying that comments are customer-visible by default, which aligns with the is_internal parameter. This goes slightly beyond the 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's action: 'Add a comment to a task's discussion thread.' It uses a specific verb and resource, distinguishing it from the related work notes tool by contrasting comments with the progress journal.

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 contrasts this tool with work notes, clarifying when to use comments vs. the alternative. It also provides specific guidance on when to set author_kind to 'human' versus 'ai', making usage straightforward.

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

add_work_noteA

Append a timestamped work note (status update) to a task's activity log. Use this to record progress so a future session can pick up where you left off (e.g. "finished auth handler, tests green, next: wire the callback"). Notes are append-only and never overwrite each other. Set author_kind="human" ONLY when you are relaying a note dictated by the human user; use "ai" (the default) when leaving your own status update.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteYesThe work note / status update text
task_idYesThe ID of the task to add a work note to
author_kindNoWho authored this note: "ai" (default, your own update) or "human" (you are relaying something the user said).
is_internalNoWhether the note is internal-only (hidden from customers). Defaults to true for work notes.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses key behaviors: append-only ('Notes are append-only and never overwrite each other'), automatic timestamping, and the author_kind distinction. This goes beyond simple mutation and informs the agent about side effects, though it omits error/return 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?

Three sentences, front-loaded with the primary purpose, then usage guidance, then a key parameter rule. Every sentence adds value and nothing is redundant.

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 purpose, usage, append-only behavior, and author_kind semantics, which is strong for a simple tool with full schema coverage. It lacks explicit return-value or error details, and is_internal is only in the schema, so it is not fully complete but very close.

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 100% with descriptions for all parameters. The description adds meaningful nuance for author_kind ('ONLY when you are relaying a note dictated by the human user') and provides an example note for context. Other parameters are sufficiently documented by the schema, so a baseline-3-plus is appropriate.

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 leads with a specific verb and resource: 'Append a timestamped work note (status update) to a task's activity log.' This clearly differentiates it from siblings like add_comment or log_time by emphasizing it as a progress/status record for future sessions.

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 states when to use the tool ('Use this to record progress so a future session can pick up where you left off') and includes a conditional rule for author_kind. However, it does not explicitly name alternative tools or state when not to use it, so it falls short of a full 5.

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

create_productA

Create a new product. Products are top-level containers for projects. Every product belongs to a customer (customer_id is required) — use an internal/own-company customer for internal work. Find customer ids via list_products (each shows its customer_id).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the product
customer_idYesCustomer this product is for. REQUIRED — every product belongs to a customer.
descriptionNoDescription of the product
github_repo_urlNoGitHub repository URL for the product

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the domain model and a required precondition (customer_id), but does not describe return value, side effects, permissions, or error behavior. This is 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.

Conciseness5/5

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

The description is three focused sentences. It front-loads the action ('Create a new product') and adds only relevant conceptual and lookup guidance without unnecessary filler.

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 create tool with 4 parameters, complete schema descriptions, and no output schema, the description provides sufficient context about the product–customer relationship and required fields. It would benefit from mentioning return behavior or error cases, but these are not critical given the schema coverage.

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 100%, providing the baseline of 3. The description adds practical semantic value by explaining that every product belongs to a customer, customer_id is required, and how to find customer IDs via list_products, going beyond the schema's field labels.

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 creates a new product, and adds context that products are top-level containers for projects, which distinguishes it from sibling tools like create_project. The verb-resource pair 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 Guidelines4/5

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

The description explains when to use this tool (creating a top-level container) and provides explicit guidance on required customer_id, including using an internal/own-company customer for internal work. It also directs users to list_products for finding customer IDs, though it does not explicitly contrast with create_project.

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

create_projectA

Create a new project. A TOP-LEVEL project requires product_id; a sub-project (parent_project_id set) inherits its parent's product. Returns the created project with its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the project
product_idNoProduct this project belongs to. Required for a top-level project (no parent); omit for a sub-project. Find ids via list_products.
descriptionNoDescription of the project
parent_project_idNoParent project ID if this is a sub-project (inherits the parent's product)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses that a new project is created, states the inheritance behavior for sub-projects, and mentions the return value. It doesn't cover permission requirements or error conditions, but the core behavioral traits of a create operation are adequately 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 two sentences with the primary action front-loaded in the first sentence. The second sentence packs crucial conditional logic without waste. Every phrase earns its place, maintaining clarity without unnecessary elaboration.

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 creation tool with no output schema, the description is complete: it covers required vs optional parameters, the top-level/sub-project distinction, return value, and references sibling tool list_products for ID lookup. Minor gaps like explicit conflict handling (e.g., setting both product_id and parent_project_id) are implied but not stated, but overall it suffices for an agent to act 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?

Schema coverage is 100% with each parameter documented, but the description adds cross-parameter logic: product_id is required for top-level, omitted for sub-projects, and inheritance from parent_project_id. This goes beyond individual parameter descriptions and clarifies the relationship, 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 'Create a new project' with a specific verb and resource. It distinguishes from sibling tools by focusing on project creation and provides meaningful detail about top-level vs sub-project semantics, making its purpose unmistakable.

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 and how to configure it: top-level projects require product_id, sub-projects inherit from parent and omit product_id. It also references list_products for finding IDs. While it doesn't explicitly mention alternatives like update_project, the context is clear enough for an agent to decide when to invoke it.

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

create_taskA

Create a new task in a project. Returns the created task with its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesTitle of the task
due_dateNoDate the task is due, as YYYY-MM-DD.
priorityNoPriority level (0-5, higher is more important)
project_idYesThe ID of the project to add the task to
start_dateNoDate work is planned to start, as YYYY-MM-DD.
descriptionNoDetailed description of the task
parent_task_idNoMake this a SUBTASK of the given task. The parent must be in the same project, and a subtask cannot itself have subtasks (one level only). A parent with subtasks takes its status from them: any subtask in progress makes the parent in progress, and all subtasks done makes it ready to complete.
assignee_user_idNoUser ID to assign the task to. Must be a member of the same account. Omit to leave the task unassigned.
estimated_minutesNoEstimated time to complete in minutes
acceptance_criteriaNoCriteria for task completion

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the core creation behavior and the return value, but does not disclose validation rules, permission requirements, default status, or other side effects. This is minimal but not misleading.

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 short sentences with no filler, front-loading the core action and then stating the return value. Every word 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?

The schema fully documents all parameters, required fields are explicit, and the description provides the return value in the absence of an output schema. It could add operational context like default status or validation behavior, but the essential calling information is present.

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 100%, so all 10 parameters are already documented in the input schema. The description adds no extra parameter-level meaning, so the baseline score of 3 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 uses a specific verb and resource: 'Create a new task in a project,' and explicitly states the return value ('Returns the created task with its ID'). This clearly distinguishes it from siblings like create_project and update_task.

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 that this tool is for creating new tasks in a project, but it does not provide explicit when-to-use guidance or mention alternatives such as update_task for modifying existing tasks. The context is clear but the routing around siblings is left to inference.

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

get_productA

Get details of a specific product including linked projects, team members, and statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesThe ID of the product to retrieve

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. The verb 'Get' implies a read-only operation, and the description adds context about the return payload (linked projects, team members, statistics). However, it does not disclose potential errors, authorization requirements, or any side effects, which would be useful.

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 one concise sentence that directly conveys the purpose and expected return content without unnecessary fluff. It is front-loaded and effectively communicates the tool's function.

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 low complexity (one parameter, no output schema, no annotations), the description is adequately complete. It specifies the key return components (linked projects, team members, statistics) which helps set expectations, though it omits edge-case behavior or explicit usage context.

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 input schema already provides 100% coverage for the single parameter product_id with a clear description. The tool description does not add further semantics about the parameter, and none is needed because the schema adequately defines it.

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 uses a specific verb ('Get') and resource ('product'), and differentiates from list_products by emphasizing 'specific product' and enumerating the returned details (linked projects, team members, statistics). This clearly distinguishes it from the get_project and list_products siblings.

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 use for retrieving a single product (via 'specific product'), but does not explicitly name alternatives like list_products or provide when-to-use versus when-not-to-use guidance. It gives context but lacks explicit exclusions.

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

get_projectA

Get details of a specific project including name, description, status, and task statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe ID of the project to retrieve

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It states only that the tool fetches details and lists fields, but it does not disclose behavior around not-found errors, permissions, or any side effects beyond being a read operation. However, the nature of 'get' makes it clearly non-destructive.

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?

A single concise sentence with no filler, completely 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?

For a simple one-parameter get tool without an output schema, the description provides the key information: what it does and what details are included. It could mention return format or error handling, but the core is covered.

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 fully documents the only parameter (project_id) with a clear description, so the description adds no additional semantic value. Baseline of 3 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 uses a specific verb ('Get') and identifies the resource ('specific project') and the key output components ('name, description, status, and task statistics'), clearly distinguishing it from sibling tools like list_projects or create_project.

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 a single project via 'specific project', but it does not explicitly mention when to use this instead of list_projects or alternatives. No exclusions or conditions are given.

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

get_taskA

Get detailed information about a specific task including description, acceptance criteria, time entries, and status.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesThe ID of the task to retrieve

TDQS

A3.8/5.0
Behavior3/5

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

Since no annotations are provided, the description itself must convey behavior. It clearly indicates a read operation (via 'Get') and lists the returned fields, which is useful. However, it does not disclose error behavior (e.g., 404 on missing task), permission requirements, or any potential side effects, leaving gaps in full behavioral 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 a single concise sentence that leads with the verb and resource, directly states the purpose, and lists the specific information returned. There is no redundant or extraneous wording.

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 the tool has only one parameter and no output schema, the description adequately conveys what the user gets by listing the returned components. It lacks details on edge cases (e.g., missing task, authentication) but is sufficiently complete for a straightforward retrieval tool.

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 input schema already provides a complete description for the single parameter task_id ('The ID of the task to retrieve'), so the tool description adds no additional semantic meaning. With 100% schema coverage, the baseline score of 3 is appropriate.

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 ('Get'), the resource ('specific task'), and enumerates the returned information ('description, acceptance criteria, time entries, and status'). This unambiguously distinguishes it from sibling tools like list_tasks (which lists tasks) and get_project/get_product (which target 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 Guidelines3/5

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

The description implies that this tool is for retrieving details of a single task, but it does not explicitly state when to use it over alternatives like list_tasks or search_tasks. It also does not mention any exclusions or prerequisites beyond the obvious 'need a task ID.'

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

list_productsA

List all products accessible to the authenticated user. Products are top-level containers for organizing related projects.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFilter by product status. Defaults to all.

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It adds context about authentication scope ('accessible to the authenticated user') and the nature of products as containers, but does not disclose pagination, sorting, or result structure. For a simple list operation, this is 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.

Conciseness5/5

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

Two sentences, front-loaded with the primary purpose, and the second sentence adds useful domain context. 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?

For a tool with one optional parameter and no output schema, the description gives sufficient context about the resource and scope. It could mention pagination or result format, but the simplicity of the tool makes it nearly 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 schema provides 100% coverage for the single 'status' parameter with a clear description. The tool description adds no additional parameter context, but none is needed. Baseline 3 is appropriate.

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+resource: 'List all products accessible to the authenticated user.' It explicitly distinguishes products as 'top-level containers for organizing related projects,' differentiating from sibling tools like list_tasks and 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 Guidelines3/5

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

The description implies usage by naming the function, but does not explicitly state when to use it versus alternatives like get_product or create_product. No when-not or alternative recommendations provided, leaving the agent to infer 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.

list_projectsA

List all projects accessible to the authenticated user. Returns project names, IDs, status, and task counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFilter by project status. Defaults to all.
parent_idNoFilter by parent project ID to get sub-projects. Omit for top-level projects.

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It adds useful context by stating that it lists projects accessible to the authenticated user and specifies the return fields (names, IDs, status, task counts). However, it does not explicitly confirm read-only behavior, mention pagination, sorting, or any rate limits, leaving some transparency gaps. This is a modest but not exhaustive disclosure 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 two sentences long, front-loaded with the core purpose, and contains zero extraneous information. Every word contributes meaning: scope, return fields, and access context. This is an exemplary concise 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?

For a low-complexity list tool with two optional parameters and no output schema, the description covers the essential points: what it lists, for whom, and what it returns. It does not mention pagination or sorting, which are common for list tools, but given the simplicity and the fact that the return fields are named, it is sufficiently complete. A score of 4 reflects that it meets the needs without over-specifying.

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 input schema has 100% description coverage for both parameters (status and parent_id), so the description does not need to compensate. The description itself adds no extra parameter details beyond what the schema already provides, which matches the baseline score of 3 for full schema 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 uses a specific verb ('List') and resource ('projects') with clear scope ('accessible to the authenticated user'), and distinguishes itself from sibling tools like list_tasks and get_project by focusing on project listing with project-specific fields. It is unambiguous and immediately tells the agent 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 Guidelines4/5

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

The description provides clear context for when to use the tool: it lists all projects the user can access. It does not explicitly mention alternatives or exclusions (e.g., 'for a single project, use get_project'), but the context is sufficient for an agent to infer typical use cases. A 4 is appropriate because the context is clear, though no alternatives are named.

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

list_tasksA

List all tasks for a specific project. Returns compact rows (id, title, status, priority, estimated_minutes, time_spent, due_date, snippet) by default to keep payloads small; pass verbose:true for full rows including description, acceptance_criteria, tags, and assignments.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFilter by task status. Omit for all tasks. Note this filters the STORED status; a task can also be showing as blocked because of an unmet dependency (see effective_status on each row).
verboseNoReturn full task rows (description, acceptance_criteria, tags, assignments) instead of compact rows. Default false.
project_idYesThe ID of the project whose tasks to list

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are present, so the description carries the burden. It explicitly calls out the default compact row shape, lists the exact compact fields, and explains the verbose:true switch for full fields. This is meaningful return-format transparency for a read-only list operation. Pagination or rate limits are not mentioned, but nothing suggests hidden 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?

Two sentences with no filler. The default behavior and the verbose alternative are front-loaded, and both field lists are presented compactly. Every clause 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?

For a 3-parameter list tool with no output schema and no annotations, the description covers the required project_id, the default compact representation, and the full-field verbose alternative. The main missing context is pagination or ordering behavior, but this is unlikely to block correct use for typical calls.

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 already documents all 3 parameters with 100% coverage. The description adds value by enumerating the default compact output fields and clarifying what verbose:true changes, effectively compensating for the missing output schema. The status filter nuance is already well covered 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?

States a specific action and scope: 'List all tasks for a specific project.' The plural 'all tasks' plus the project-scoping clearly differentiates it from get_task (single task) and search_tasks (cross-project search) without needing to name them.

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 the main use case—enumerating tasks for one project—but does not explicitly say when to prefer this tool over search_tasks or get_task, nor when not to use it. No exclusions or alternatives are given.

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

log_timeB

Log time spent on a task. This triggers a real-time notification showing time was logged.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate for the time entry (YYYY-MM-DD). Defaults to today.
notesNoNotes about what was done during this time
minutesYesNumber of minutes to log
task_idYesThe ID of the task to log time against

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does add one meaningful behavioral trait: 'This triggers a real-time notification showing time was logged.' However, it doesn't mention permissions, reversibility, or effects on task status, leaving significant behavioral gaps.

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 long and immediately states the core action. The second sentence adds a relevant side-effect without any unnecessary fluff. Every word contributes value and the structure is ideally 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?

The tool is simple with fully documented parameters, but it lacks usage guidance, output details, and deeper behavioral context. The description explains the notification side effect but doesn't cover when to use it or what the response contains. Given the simplicity, a score of 3 reflects adequate but incomplete context for an agent.

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 input schema provides 100% coverage of parameter descriptions, so the schema handles the meaning of task_id, minutes, date, and notes. The description adds no additional parameter-level detail beyond what the schema already states, meeting the baseline expectation.

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's function: 'Log time spent on a task.' It uses a specific verb and resource, making the primary purpose unambiguous. However, it doesn't distinguish itself from the sibling tool 'quick_log', which likely serves a similar quick-logging purpose.

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 'quick_log' or 'start_working'. No context, prerequisites, or exclusions are given. Users are left to infer the appropriate use case from the tool name alone.

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

quick_logA

Quick workflow for logging completed work: creates a task, marks it done, and logs time in one call. Ideal for recording work that has already been completed.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoNotes about what was done during this time (optional, defaults to description if not provided)
titleYesTitle of the completed task
minutesYesNumber of minutes spent on this work
project_idYesThe ID of the project to add the task to
descriptionNoDetailed description of the task (optional)
acceptance_criteriaNoCriteria for task completion (optional)

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the three main side effects (creates a task, marks it done, logs time) but does not go deeper into specifics like permission requirements, reversibility, or what happens to optional fields. This is adequate but minimal for a composite 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 two sentences long, front-loaded with the primary purpose, and every word earns its place. It clearly states the composite behavior and the ideal use case without any fluff or repetition.

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 composite nature and full parameter schema, the description is nearly complete. It explains the main behavior and when to use it. It could add details about return values or prerequisites, but the absence of an output schema and the clarity of the description keep it sufficient. Slightly incomplete because it doesn't mention that the task is created as 'done' (though that is implied by 'marks it done'), but still strong.

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 100%, so the baseline is 3. The description does not add parameter-level detail beyond what the schema already explains; it only frames the overall purpose. It does not explain how optional fields like notes, description, or acceptance_criteria relate to the composite workflow, but that is not required given full schema 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 and specifically states what the tool does: 'creates a task, marks it done, and logs time in one call.' This distinguishes it from sibling tools like create_task, update_task_status, and log_time by framing it as a composite workflow for completed work. The verb 'quick workflow for logging completed work' is specific and action-oriented.

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 usage context: 'Ideal for recording work that has already been completed.' This implies when to use it (for completed work) and contrasts with the alternative of using separate tools (create_task, log_time, etc.). It does not explicitly name alternatives or say when not to use it, but the context is strong enough.

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

search_tasksA

Search for tasks across all projects by title or description. Returns compact rows (id, title, status, priority, project_id, project_name, product_name, customer_name, estimated_minutes, time_logged, due_date, snippet) ranked with title matches first, then description matches, then recency. Pass verbose:true for full rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return. Default 20, capped at 100.
queryYesSearch query to match against task titles and descriptions
statusNoFilter results by status
verboseNoReturn full task rows instead of compact rows. Default false.
product_idNoRestrict results to this product
project_idNoRestrict results to this project
customer_idNoRestrict results to this customer

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does a solid job: it discloses matching fields, output row shape, ranking order (title matches, then description, then recency), and the verbose option. It stops short of noting empty-result behavior or other edge cases, but the core behavioral contract is well communicated.

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 sentences carry all essential information with no filler. The main purpose is front-loaded, and the second sentence packs output details, ranking, and the verbose switch into one efficient, readable unit. Every clause 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 no output schema, describing the exact compact row fields is essential and well handled. The description also covers ranking and the verbose toggle. The main gap is that 'full rows' fields are not enumerated and no usage recommendation is given for choosing between compact and verbose output, but the tool is still safely invocable.

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 already covers all 7 parameters at 100%, so the baseline is 3. The description adds value beyond the schema by explaining how query matches are ranked and what verbose:true changes, which directly informs parameter usage. It does not repeat parameter descriptions, appropriately relying on 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 uses a specific verb ('Search'), identifies the resource ('tasks'), and scopes the operation ('across all projects by title or description'). It also details the output format and ranking behavior, making the tool's purpose unmistakable even without inspecting the schema.

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 clearly implies use for finding tasks by text across projects, and the 'across all projects' scope helps distinguish it from more narrow listing tools. However, it does not explicitly name any alternative sibling tool (e.g., list_tasks) or state when not to use this tool, leaving routing to inference.

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

set_resume_contextA

Set (overwrite) the task's resume context — a single pinned block describing the current state, what is done, what is next, and where to look. This is read first when a work session restarts cold (e.g. via start_working) so you can re-orient immediately. Update it at the end of a work session. Set author_kind="human" only when relaying the user's words; default "ai".

ParametersJSON Schema
NameRequiredDescriptionDefault
contextYesThe resume-context text (markdown ok): current state / next steps / where to look.
task_idYesThe ID of the task to set resume context for
author_kindNoWho authored this context: "ai" (default) or "human".

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that the operation is an overwrite of a single pinned block, that this context is read first on restart, and that author_kind should be 'human' only when relaying user words. It stops short of detailing edge cases (e.g., missing task), but the core behavior 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.

Conciseness5/5

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

The entire description is two sentences. The first covers purpose and content; the second provides timing and parameter conventions. Every clause earns its place, with no filler or repetition of schema details.

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 setter with three well-documented parameters and no output schema, the description covers the vital aspects: what the tool does, what the context contains, when to invoke it, and how to set author_kind. It lacks only minor edge-case information, but is otherwise complete for an agent to use confidently.

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 100%, so the baseline is 3. The description goes above by specifying the intended content of the context string (state/next/look) and giving a concrete rule for author_kind ('human' only when relaying user words; default 'ai'). This adds practical semantics beyond the 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 opens with a specific verb+resource: 'Set (overwrite) the task's resume context'. It then clarifies exactly what that context contains (current state, done, next, where to look) and distinguishes the tool from siblings by explaining the cold-restart read behavior. This leaves no ambiguity about the tool's unique function.

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?

Explicit timing guidance is given: 'Update it at the end of a work session' and the tool is described as the first thing read on cold restart, which anchors its role in the workflow. It doesn't name specific sibling alternatives, but the dedicated purpose is so clear that the usage context is effectively established.

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

start_workingA

Mark that you are actively working on a task. This shows other team members that the task is being worked on and by whom.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesThe ID of the task to start working on

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses a key behavioral trait—that the action notifies other team members who is working on the task—but lacks details on edge cases (e.g., idempotency, permissions, or what happens if already marked). For a simple state-change tool, this is 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?

The description is two short sentences that are direct and free of filler. Every word serves a purpose, making it highly concise while still conveying the core action and its social effect.

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 one parameter and no output schema, the description provides sufficient context: it defines the purpose and the external consequence. It could be slightly improved by adding a note on when to call it (e.g., at the start of work), but overall it is complete for its simplicity.

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 input schema already provides a complete description for task_id ('The ID of the task to start working on'), so the tool description adds no additional meaning. Schema coverage is 100%, which gives the baseline of 3 without requiring extra elaboration.

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 ('Mark'), the object ('a task'), and the state ('actively working'), which is specific and distinguishes it from siblings like stop_working. It also explains the effect (visibility to other team members), leaving no ambiguity about the tool's purpose.

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 one begins working on a task ('Mark that you are actively working'), but it does not explicitly contrast with alternatives such as stop_working or update_task_status. No exclusions or situational guidance are provided, making it average in usage direction.

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

stop_workingA

Mark that you have stopped working on a task (break or switching tasks). Optionally capture your state on the way out: pass note to append a work note and/or resume_context to overwrite the resume block, so the next session can pick up where you left off. Both are recorded as author_kind="ai".

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOptional work note to append before stopping (what you did, what is next).
task_idYesThe ID of the task to stop working on
resume_contextNoOptional resume-context block to overwrite before stopping (current state / next steps / where to look).

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses key behaviors: marking the task as stopped, optionally appending a note, overwriting the resume block, and recording both as author_kind="ai". This goes beyond the schema and provides meaningful transparency, though it omits details like permissions 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?

The description is two sentences, front-loaded with the primary purpose, and every clause earns its place. It is concise without sacrificing important behavioral details.

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 3 parameters and no output schema or annotations, the description covers the main action, optional state-capture behaviors, and author attribution. It lacks explicit mention of preconditions (e.g., must be currently working on the task) or return values, but these are not critical for a stop action and the description is otherwise 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 100%, so the baseline is 3. The description adds value by explaining that note is 'appended' and resume_context is 'overwritten', and that both are recorded as author_kind="ai". This clarifies the behavioral effect of the parameters beyond their 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's function: 'Mark that you have stopped working on a task (break or switching tasks).' It identifies the specific verb (stop working), the resource (task), and distinguishes it from sibling tools like start_working. The optional state-capture details further clarify its role.

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 usage context: it is for stopping work on a task, whether for a break or switching tasks. It also explains when to use the optional note and resume_context parameters. However, it does not explicitly mention alternatives like add_work_note or set_resume_context for cases where only those actions are needed.

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

update_projectB

Update project details like name, description, or status.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name for the project
statusNoNew status for the project
project_idYesThe ID of the project to update
descriptionNoNew description

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of explaining behavior. It only states the action without disclosing whether updates are partial, what is returned, or any 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 a single, focused sentence that gets straight to the point. It avoids unnecessary words and clearly says what the tool does.

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 description is minimal but sufficient for a simple update operation, especially with full schema descriptions. However, it lacks any mention of the return value or update semantics, and there is no output schema.

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 input schema already provides descriptions for all four parameters (100% coverage), so the description adds little beyond restating three of the fields. It does not clarify the required project_id parameter or the meaning of enum values.

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 function with a specific verb ('Update') and resource ('project details'), and lists concrete fields (name, description, status). This distinguishes it from sibling tools like list_projects or create_project.

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 relative to alternatives. It does not mention any prerequisites, conditions, or alternative tools for updating projects.

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

update_taskB

Update task details like title, description, estimates, or acceptance criteria.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoNew title for the task
task_idYesThe ID of the task to update
due_dateNoNew due date as YYYY-MM-DD. Pass an empty string to clear it.
priorityNoNew priority level (0-5, higher is more important)
blocked_byNoREPLACES the full set of tasks this task is blocked by. Pass [] to clear all of them. Every id must be a task in the same product; a circular chain (A blocked by B blocked by A) is rejected. While any of these is not done, the task shows as blocked whatever its stored status says.
start_dateNoNew start date as YYYY-MM-DD. Pass an empty string to clear it.
descriptionNoNew description
blocked_reasonNoFree-text reason shown next to a manually-set Blocked status ("waiting on the client"). Cleared automatically when the task leaves the blocked status.
assignee_user_idNoUser ID to assign the task to, replacing any existing assignee. Must be a member of the same account. Pass an empty string to unassign.
estimated_minutesNoNew time estimate in minutes
acceptance_criteriaNoNew acceptance criteria

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only states the action without mentioning side effects (e.g., blocked_by replaces the full set), permission requirements, or reversibility. This is a significant gap for a mutation tool with 11 parameters.

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?

Single sentence with no fluff, front-loading the primary purpose. However, it is under-specified for the tool's complexity, so it scores slightly below the maximum for conciseness.

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 tool with 11 parameters and no output schema, the description is too sparse. It does not explain the scope of updatable fields, behavior nuances (like replacement semantics for blocked_by), or any constraints beyond what the schema provides. An agent would need to rely entirely on the schema, which is not sufficient for effective selection and invocation.

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 100%, so the baseline is 3. The description lists a few example fields, which is redundant with the schema but does not add new semantic information about parameter usage or 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?

States a specific verb (update) and resource (task), and lists example fields (title, description, estimates, acceptance criteria), distinguishing it from sibling tools like create_task and update_task_status. 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 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 update_task_status. Does not mention that status updates have a dedicated tool, or any conditions or prerequisites for use.

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

update_task_statusA

Change the status of a task (todo, in_progress, blocked, done). This triggers a real-time notification to users viewing the project. Note that a task with subtasks or dependencies also has a DERIVED status which can differ from the one set here — see effective_status / status_reason on get_task.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusYesNew status for the task. "ready_to_complete" is NOT settable — it is derived when every subtask is done.
task_idYesThe ID of the task to update
blocked_reasonNoWhy the task is blocked. Only meaningful with status "blocked"; cleared automatically on any other status.

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It goes beyond the basic mutation by noting that a real-time notification is triggered and that a derived status may differ from the explicitly set one, which are meaningful side effects. It does not cover permissions or reversibility, but the most important behavioral nuances 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 two sentences with no wasted words. The action is front-loaded, followed by the notification side effect and then the important derived-status caveat. Every sentence adds necessary 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?

For a three-parameter update tool with full schema coverage, the description is largely complete: it covers the core action, side effects, and the key edge case of derived status, while pointing to get_task for the effective values. It does not describe the return value, but there is no output schema and none is strictly necessary for a status update; a brief note on permissions would make it 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?

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining the distinction between the settable status and the derived status, and by pointing to effective_status/status_reason on get_task. It does not discuss blocked_reason, but the schema already fully documents that parameter.

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 states a specific verb ('Change'), a clear resource ('status of a task'), and enumerates the allowed statuses, so the tool's purpose is immediately obvious. It does not explicitly distinguish itself from the sibling 'update_task', which is a general-purpose update tool, so it stops 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 Guidelines3/5

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

The description implies this tool is for changing task status and warns about derived status differing from the set value, which is useful context. However, it does not explicitly say when to use this tool versus the sibling 'update_task' or any alternative, nor does it mention prerequisites or exclusions.

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. 5 tool updatesv1.3.0
    • Changedcreate_task4 fields changed
      • addedInput schema / properties / assignee_user_id
        Added value: +{
        +  "description": "User ID to assign the task to. Must be a member of the same account. Omit to leave the task unassigned.",
        +  "type": "string"
        +}
      • addedInput schema / properties / due_date
        Added value: +{
        +  "description": "Date the task is due, as YYYY-MM-DD.",
        +  "type": "string"
        +}
      • addedInput schema / properties / parent_task_id
        Added value: +{
        +  "description": "Make this a SUBTASK of the given task. The parent must be in the same project, and a subtask cannot itself have subtasks (one level only). A parent with subtasks takes its status from them: any subtask in progress makes the parent in progress, and all subtasks done makes it ready to complete.",
        +  "type": "number"
        +}
      • addedInput schema / properties / start_date
        Added value: +{
        +  "description": "Date work is planned to start, as YYYY-MM-DD.",
        +  "type": "string"
        +}
    • Changedlist_tasks3 fields changed
      • changedInput schema / properties / status / description
        Previous value: -"Filter by task status. Omit for all tasks."New value: +"Filter by task status. Omit for all tasks. Note this filters the STORED status; a task can also be showing as blocked because of an unmet dependency (see effective_status on each row)."
      • changedInput schema / properties / status / enum
        Previous value: -[
        -  "todo",
        -  "in_progress",
        -  "done"
        -]New value: +[
        +  "todo",
        +  "in_progress",
        +  "blocked",
        +  "done"
        +]
      • addedInput schema / properties / verbose
        Added value: +{
        +  "description": "Return full task rows (description, acceptance_criteria, tags, assignments) instead of compact rows. Default false.",
        +  "type": "boolean"
        +}
    • Changedsearch_tasks6 fields changed
      • addedInput schema / properties / customer_id
        Added value: +{
        +  "description": "Restrict results to this customer",
        +  "type": "number"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Max results to return. Default 20, capped at 100.",
        +  "type": "number"
        +}
      • addedInput schema / properties / product_id
        Added value: +{
        +  "description": "Restrict results to this product",
        +  "type": "number"
        +}
      • addedInput schema / properties / project_id
        Added value: +{
        +  "description": "Restrict results to this project",
        +  "type": "number"
        +}
      • changedInput schema / properties / status / enum
        Previous value: -[
        -  "todo",
        -  "in_progress",
        -  "done"
        -]New value: +[
        +  "todo",
        +  "in_progress",
        +  "blocked",
        +  "done"
        +]
      • addedInput schema / properties / verbose
        Added value: +{
        +  "description": "Return full task rows instead of compact rows. Default false.",
        +  "type": "boolean"
        +}
    • Changedupdate_task6 fields changed
      • addedInput schema / properties / assignee_user_id
        Added value: +{
        +  "description": "User ID to assign the task to, replacing any existing assignee. Must be a member of the same account. Pass an empty string to unassign.",
        +  "type": "string"
        +}
      • addedInput schema / properties / blocked_by
        Added value: +{
        +  "description": "REPLACES the full set of tasks this task is blocked by. Pass [] to clear all of them. Every id must be a task in the same product; a circular chain (A blocked by B blocked by A) is rejected. While any of these is not done, the task shows as blocked whatever its stored status says.",
        +  "items": {
        +    "type": "number"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / blocked_reason
        Added value: +{
        +  "description": "Free-text reason shown next to a manually-set Blocked status (\"waiting on the client\"). Cleared automatically when the task leaves the blocked status.",
        +  "type": "string"
        +}
      • addedInput schema / properties / due_date
        Added value: +{
        +  "description": "New due date as YYYY-MM-DD. Pass an empty string to clear it.",
        +  "type": "string"
        +}
      • changedInput schema / properties / priority / description
        Previous value: -"New priority level"New value: +"New priority level (0-5, higher is more important)"
      • addedInput schema / properties / start_date
        Added value: +{
        +  "description": "New start date as YYYY-MM-DD. Pass an empty string to clear it.",
        +  "type": "string"
        +}
    • Changedupdate_task_status3 fields changed
      • addedInput schema / properties / blocked_reason
        Added value: +{
        +  "description": "Why the task is blocked. Only meaningful with status \"blocked\"; cleared automatically on any other status.",
        +  "type": "string"
        +}
      • changedInput schema / properties / status / description
        Previous value: -"New status for the task"New value: +"New status for the task. \"ready_to_complete\" is NOT settable — it is derived when every subtask is done."
      • changedInput schema / properties / status / enum
        Previous value: -[
        -  "todo",
        -  "in_progress",
        -  "done"
        -]New value: +[
        +  "todo",
        +  "in_progress",
        +  "blocked",
        +  "done"
        +]
  2. 21 tool updatesv1.2.0
    • First observedadd_comment
    • First observedadd_work_note
    • First observedcreate_product
    • First observedcreate_project
    • First observedcreate_task
    • First observedget_product
    • First observedget_project
    • First observedget_task
    • First observedlink_project_to_product
    • First observedlist_products
    • First observedlist_projects
    • First observedlist_tasks
    • First observedlog_time
    • First observedquick_log
    • First observedsearch_tasks
    • First observedset_resume_context
    • First observedstart_working
    • First observedstop_working
    • First observedupdate_project
    • First observedupdate_task
    • First observedupdate_task_status

TDQS

A3.8/5.0

Scored across 21 tools

Disambiguation5/5

Every tool targets a distinct resource/action: list/get/create/update for projects/tasks/products, plus dedicated status, time, note, comment, and resume-context operations. Even similar-sounding tools (add_work_note vs add_comment vs set_resume_context) are explicitly differentiated by their descriptions.

Naming Consistency5/5

All tool names use snake_case and follow a verb_noun pattern (list_projects, get_task, create_project, update_task_status, add_comment, link_project_to_product). The few workflow-style names (start_working, quick_log) still fit the predictable naming style.

Tool Count3/5

At 21 tools, the surface is on the heavy side and falls in the 16-25 borderline range. The count is justified by the breadth (products, projects, tasks, time, collaboration), but it is more than a tightly scoped server typically needs.

Completeness4/5

Core lifecycle operations are present for tasks and projects (list/get/create/update plus status/search/time), and products have list/get/create. Minor gaps remain, such as no delete/archive for tasks or projects, no product update, and no explicit comment listing tool, but agents can work around these.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers