Skip to main content
Glama

tasks-toolkit

A small, self-contained task tracker (sprints → tasks → subtasks) with a CLI and an MCP server.

Contents

  • scripts/ — all tracker code (see table below).

  • pyproject.toml — ruff/mypy/pytest configuration.

Related MCP server: aiboard

Installation

pipx install tasks-toolkit
# or: uv tool install tasks-toolkit
tasks-init
tasks overview

Run with uvx

With uv installed, run commands directly from PyPI without a separate tool installation:

cd /path/to/your-project
uvx --from tasks-toolkit tasks-init
uvx --from tasks-toolkit tasks overview
uvx --from tasks-toolkit tasks next

Use --from tasks-toolkit because the package and executable names differ. The same form works for tasks-run, tasks-sprint, and tasks-mcp. To select a specific release, use --from tasks-toolkit==0.1.6. See the uv tools guide.

From source

git clone https://github.com/prachwal/tasks-toolkit.git
cd tasks-toolkit
python -m pip install -e .
tasks-init
tasks overview

Docker

docker build -t tasks-toolkit .
docker run --rm -i -v tasks-data:/data tasks-toolkit

Quick start (from source)

python3 scripts/tasks_init.py          # create tasks/tasks.db
python3 scripts/tasks.py overview      # show sprints
python3 scripts/tasks.py next          # next ready task

Data belongs to the current Git project (the main checkout when invoked from a worktree). Outside Git, it belongs to the current directory. Installed commands never use their installation directory for data. Override the location with TASKS_ROOT:

export TASKS_ROOT=/path/to/data
python3 scripts/tasks.py overview

MCP clients

The tasks-mcp command runs the same stdio server for every client. Set TASKS_ROOT to the absolute path of the project whose tasks you want to manage. It points to the project, not to the toolkit installation. An installed server needs no copy of this source repository. Use an absolute executable path if the client cannot find tasks-mcp on its PATH; command -v tasks-mcp shows it on Unix.

To launch the MCP server through uvx, use the following configuration in clients with an mcpServers section (such as Claude Desktop or Cursor):

{
  "mcpServers": {
    "tasks": {
      "command": "uvx",
      "args": ["--from", "tasks-toolkit", "tasks-mcp"],
      "env": {"TASKS_ROOT": "/absolute/path/to/your-project"}
    }
  }
}

Use the absolute path returned by command -v uvx if the client cannot find uvx. For the other client schemas below, use the same executable and arguments with the client's configuration keys.

Claude Desktop

Open Settings → Developer → Edit Config, merge this entry into claude_desktop_config.json, and restart the app:

{
  "mcpServers": {
    "tasks": {
      "command": "/absolute/path/to/tasks-mcp",
      "args": [],
      "env": {"TASKS_ROOT": "/absolute/path/to/your-project"}
    }
  }
}

See the official local-server setup guide for configuration locations and troubleshooting. The toolkit currently uses POSIX file locking (fcntl); run the server on macOS or Linux. The Windows Desktop app needs a launcher into a Linux environment such as WSL, rather than a native Windows Python process.

Claude Code

From your project directory, register a project-scoped stdio server:

claude mcp add --transport stdio --scope project \
  --env TASKS_ROOT="$(pwd)" tasks -- /absolute/path/to/tasks-mcp
claude mcp list

Claude Code saves project-scoped servers to .mcp.json; see its official MCP documentation.

VS Code / GitHub Copilot

Add a server to .vscode/mcp.json:

{
  "servers": {
    "tasks": {
      "type": "stdio",
      "command": "/absolute/path/to/tasks-mcp",
      "args": [],
      "env": {"TASKS_ROOT": "${workspaceFolder}"}
    }
  }
}

See VS Code's MCP configuration reference.

Cursor

Add this to .cursor/mcp.json in your project (or ~/.cursor/mcp.json for all projects):

{
  "mcpServers": {
    "tasks": {
      "command": "/absolute/path/to/tasks-mcp",
      "env": {"TASKS_ROOT": "/absolute/path/to/your-project"}
    }
  }
}

OpenCode

Add this entry to opencode.json:

{
  "mcp": {
    "tasks": {
      "type": "local",
      "command": ["/absolute/path/to/tasks-mcp"],
      "enabled": true,
      "environment": {"TASKS_ROOT": "/absolute/path/to/your-project"}
    }
  }
}

See the OpenCode MCP documentation.

Other stdio clients and source installs

Configure any MCP client to launch tasks-mcp, use stdio transport and pass TASKS_ROOT in the server environment. Clients use different JSON keys; adapt one of the examples above to the client's schema. To run from a source checkout, replace the executable with python3 and pass /absolute/path/to/tasks-toolkit/scripts/tasks_mcp.py as its first argument (or use that two-element array for OpenCode's command).

Verified task and sprint execution

Copy .tasks-toolkit.example.json to .tasks-toolkit.json, choose the checks for your project, and commit the configuration. Commands are argument arrays; no shell interpolation is performed. Every configured check must pass. Keep tmp/ and generated tasks/ files in .gitignore, as in this repository.

Runner names and commands are defined entirely in .tasks-toolkit.json:

{
  "default_runner": "coder",
  "runners": {
    "coder": ["python3", "tools/coder_adapter.py"],
    "backup-coder": ["/absolute/path/to/another-adapter"]
  },
  "checks": [["python3", "-m", "pytest", "-q"]],
  "timeout": 120
}

Replace these sample adapter commands with your own. Adapters receive the spec on stdin, edit files in their current working directory, leave changes uncommitted, and return nonzero on failure. There are no built-in providers or model choices. --runner NAME selects any registered adapter; otherwise default_runner is used. If no default is configured, select a runner explicitly. --fallback NAME uses the same registry; none is reserved to disable fallback. Reports and statistics accept any runner name containing letters, digits, underscores and hyphens.

Optional protected_paths adds project-specific files or directories to the built-in protection, for example "protected_paths": ["config/private/", "./credentials.json"]. Entries are relative to the project root; ./ and trailing separators are normalized. Absolute paths and entries containing .. are rejected. Directory entries protect the directory and its descendants. Planner commands resolve the project using the same current-directory, Git-worktree and TASKS_ROOT rules as the tracker; their helper scripts are loaded from the toolkit installation.

When upgrading from 0.1.4, register the command you previously relied on explicitly: implicit provider commands and the implicit default have been removed. Existing checkpoint and report runner names remain valid when registered in the configuration. Changing configuration still invalidates a resume checkpoint's approval fingerprint.

Installed commands are tasks-run and tasks-sprint; from source, the corresponding wrappers are scripts/run-task.sh and scripts/sprint-auto.sh.

Run one task in a clean working tree, with an explicit allowed scope:

tasks-run result \
  --file tmp/tasks/result.md --scope src/ --runner coder

Alternatively, --task-id 1.1 reads scope links from the tracker. The runner checks all actual tracked changes, deletions and untracked files, runs the configured checks and commits only verified changes. Input flags such as checks_green and tracker_done are never evidence. Failures preserve the working tree and write a report to tmp/runs/<name>.result.json. Exit codes: 0 verified, 1 rejected, 3 runner/configuration failure. Optional fallback runs only after a runner failure that left the working tree clean.

For a complete sprint, supply a plan containing sprint (slug, title, goal) and tasks (key, title, scope, spec_name, spec, depends_on). Specs must pass scripts/spec-lint.sh; dependencies reference earlier task keys. An answers file binds the reviewed goal, allowed paths and execution policy. policy.runner overrides the configured default; delegated decisions use the same registry:

{
  "goal_reviewed": true,
  "allowed_scopes": ["src/"],
  "policy": {
    "runner": "coder", "serial": true, "fallback": "none", "retries": 0,
    "push": false, "accept_flags": false, "reset": false, "clean": false
  }
}

Start from a clean main branch:

tasks-sprint --yolo-force \
  --goal "Implement the feature" --run-name feature \
  --answers tmp/plans/feature.answers.json --plan tmp/plans/feature.json

The lifecycle imports the plan, creates a sprint branch and worktree, executes tasks serially, checks the diff against task and approved scopes, and records verified commits in the tracker. Final checks precede a fast-forward into the unchanged approved main; no push is performed. Worktrees and checkpoints remain available for inspection.

Use the same command with --resume to continue a clean checkpoint. Goal, answers, plan, configuration and Git refs must still match. A dirty or unexpectedly advanced worktree requires inspection; it is never reset, cleaned or blindly rerun.

Development checks

python3 -m pip install -e '.[dev]'
bash scripts/test_python_lint.sh
python3 -m pytest -q
bash scripts/test_spec_lint.sh

CI requires lint, type checking, all Python tests, shell tests and distribution builds to pass. VS Code tracker commands are provided in .vscode/tasks.json.

Scripts

Core tracker

File

Purpose

tasks.py

Task tracker CLI: sprints → tasks → subtasks, SQLite-backed (tasks/tasks.db).

tasks_init.py

Create an empty task database from scratch.

tasks_mcp.py

MCP server (stdio) exposing tracker operations as tools.

tasks_cli.py

CLI parser and entry point for the tracker.

tasks_commands.py

Command handlers for the tracker.

tasks_model.py

Core data model (nodes, statuses, walk/find/effective).

tasks_storage.py

SQLite storage layer.

tasks_render.py

Markdown rendering of the task view.

tasks_watch.py

Background watcher keeping the view and snapshot in sync with the DB.

tasks_plan_import.py

Atomic plan import for the sprint planner.

Sprint automation

File

Purpose

sprint_plan.py

Sprint plan tooling for the planner agent.

sprint-auto.sh / sprint_auto.py

Verified sprint execution and fast-forward integration (--yolo-force, --resume).

sprint_auto_state.py

Durable state, checkpoint and process-supervision primitives.

sprint_auto_preflight.py

Read-only approval preflight for the automated lifecycle.

sprint_auto_prepare.py

Prepare approved plans and branches.

sprint_auto_execute.py

Execute and accept guarded tasks.

sprint_auto_resume.py

Resume and finish owned sprints.

apply-plan.sh

Import a validated sprint plan (tmp/plans/<name>.json) into the tracker.

run-task.sh / task_runner.py

Run configured coders and verify actual changes before committing.

runner_config.py

Provider-independent runner registry, default selection and configuration validation.

task-report.sh

Report delegation progress to the tracker.

run_summary.py

Write a run summary JSON for finished runs.

run_stats.py

Delivery-speed statistics for delegation runners.

Spec / quality

File

Purpose

spec-lint.sh

Quality gate for delegated task specs.

Tests

File

Purpose

test_tasks.py

Tests for tasks.py.

test_tasks_mcp.py

Tests for tasks_mcp.py.

test_tasks_storage.py

Tests for tasks_storage.py.

test_tasks_plan_import.py

Tests for tasks_plan_import.py.

test_tasks_watch.py

Tests for tasks_watch.py.

test_run_stats.py

Tests for run_stats.py.

test_sprint_auto.py

Tests for sprint-auto.sh.

test_sprint_auto_state.py

Tests for sprint_auto_state.py.

test_sprint_auto_preflight.py

Tests for sprint_auto_preflight.py.

test_sprint_auto_prepare.py

Tests for sprint_auto_prepare.py.

test_sprint_auto_execute.py

Tests for sprint_auto_execute.py.

test_sprint_auto_resume.py

Tests for sprint_auto_resume.py.

test_spec_lint.sh

Tests for spec-lint.sh.

Test runners

File

Purpose

test_python_fast.sh

Fast Python tests (in-process).

test_python_slow.sh

Slow/subprocess-heavy Python tests.

test_python_lint.sh

Ruff + mypy.

License

MIT — see LICENSE.

Available Tools

19 tools
tasks_addA

Add a task under a sprint id, or a subtask under a task id (max depth: sprint > task > subtask).

NameRequiredDescriptionDefault
afterNoComma separated ids that must be done first
titleYesTitle
parentYesSprint id (e.g. '2') or task id (e.g. '2.1')
assigneeNoPerson or runner responsible for the task
descriptionNoDescription / acceptance criteria

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the write-but-non-destructive profile is covered. The description adds a meaningful behavioral constraint — the three-level hierarchy cap — but says nothing about permissions, failure modes when the parent doesn't exist, or what the call returns.

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 front-loaded sentence with zero waste; the hierarchy constraint is packed into parentheses rather than padded into extra clauses.

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 creation tool with no output schema and minimal annotations, the description covers purpose and placement limits but omits what comes back — the newly created task id — which an agent needs to chain into tasks_link, tasks_move, or tasks_set_status. It also doesn't mention how the 'after' dependency interacts with creation. Adequate but with a clear gap.

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 100%, so every parameter including 'parent' is documented in the schema itself. The description restates the parent parameter's semantics but contributes no additional format or edge-case detail, making this the expected baseline 3.

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?

States a specific verb+resource ('Add a task') and clarifies both placement modes (under a sprint id or a task id). The depth constraint 'sprint > task > subtask' further scopes it and implicitly separates it from tasks_add_sprint, though no sibling is named explicitly.

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 establishes when this tool applies (creating a task/subtask under an existing parent) and encodes the max-depth rule as a usage constraint. It stops short of naming alternatives such as tasks_add_sprint for creating sprints, so the agent must infer that routing.

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

tasks_add_sprintC

Create a sprint.

NameRequiredDescriptionDefault
endNoYYYY-MM-DD
goalNoSprint goal
startNoYYYY-MM-DD
titleYesSprint title

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, and the description contributes nothing further: no note on required permissions, whether duplicate titles are allowed, whether start/end are mandatory in practice, or what happens to existing sprints. For a mutation tool it leaves all behavioral context to the schema.

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 single sentence is short and front-loaded but is under-specified rather than concise; it carries no information an agent could not get from the tool name. Brevity here reflects missing content, not economy.

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 four parameters and no output schema, the description should at least indicate the parent context of the new sprint and any constraints linking start and end dates. None of that is present, so an agent must guess at invocation 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?

Schema description coverage is 100%, so title, goal, start and end (including the YYYY-MM-DD format) are already documented in the schema. The description adds no meaning beyond that, which is the expected baseline when the schema does the work.

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

Purpose2/5

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

"Create a sprint" restates the tool name (tasks_add_sprint) almost verbatim and adds no specificity about scope, such as which project or workspace the sprint belongs to. An agent cannot distinguish it from the sprint-related sibling tasks_sprint based on this text alone.

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 statement of when to use this tool versus tasks_sprint, tasks_add, or tasks_edit, and no prerequisites (e.g., whether a project/board must already exist) are mentioned. Usage is only implied by the verb "Create."

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

tasks_briefA
Read-only

Context bundle for one item: description, dependencies with merge commits, spec link, notes, and the list of files the dependencies changed.

NameRequiredDescriptionDefault
idYesItem id: sprint '1', task '1.2', subtask '1.2.3'

TDQS

A3.6/5.0
Behavior4/5

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

The readOnlyHint already declares that this is a safe read operation. The description adds meaningful behavioral context by specifying exactly what information the bundle contains, which is important because no output schema exists. It does not discuss size, performance, or failure 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?

A single sentence front-loads the purpose and then lists the bundle contents efficiently. There is no redundant or filler 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?

Because there is no output schema, the description must explain the return contents, and it does so by enumerating the bundle fields. It is nearly complete for a one-parameter read-only tool, though it could better situate itself among the many sibling task-inspection 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?

There is only one parameter, and the input schema fully documents it with examples ('1', '1.2', '1.2.3') at 100% coverage. The description adds no additional parameter meaning beyond the schema, which is the expected baseline when schema coverage is high.

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 concrete resource and enumerates the bundle contents (description, dependencies with merge commits, spec link, notes, changed files), so an agent knows what this tool returns. It does not differentiate from siblings such as tasks_show or tasks_view, which keeps it from 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 phrase 'for one item' implies single-item usage but gives no explicit when-to-use guidance, prerequisites, or comparison with alternatives like tasks_show or tasks_list. The agent must infer when this richer bundle is preferable.

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

tasks_editA
Idempotent

Edit title, description, assignee, dependencies (--after replaces the list; empty clears) and, for sprints, goal/start/end. Pass either id or ids (exactly one). --title with multiple ids is rejected.

NameRequiredDescriptionDefault
idNoItem id: sprint '1', task '1.2', subtask '1.2.3'
endNoSprint only, YYYY-MM-DD
idsNoMultiple item ids (alternative to id)
goalNoSprint only
afterNoComma separated ids; empty string clears
startNoSprint only, YYYY-MM-DD
titleNoNew title
assigneeNoNew assignee
descriptionNoNew description

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds real behavioral detail beyond that – '--after replaces the list; empty clears' and the rejection rule for multi-id title edits – but says nothing about permissions or what existing values are touched.

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?

Two dense sentences with zero filler, and the constraint about id vs ids is front-loaded. The parenthetical sprint-only clause is slightly compressed but still readable.

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 9-parameter mutation tool with no output schema, the description covers field scope and the key invocation constraint, and annotations handle safety. It leaves return behavior unaddressed, which is a minor gap given no output schema exists.

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 100%, so every parameter is already documented and the baseline is 3. The description reinforces the replace/clear semantics of 'after' and the mutually exclusive id/ids rule, but much of that is already stated in the schema, so the marginal value is modest.

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 names a specific verb (edit) plus the exact fields it can mutate (title, description, assignee, dependencies, and sprint goal/start/end), which clearly separates it from status/move/link siblings. It stops short of explicitly naming an alternative, but the field enumeration leaves little ambiguity about what this tool does.

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

Usage Guidelines3/5

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

It gives hard invocation constraints ('Pass either id or ids (exactly one)', '--title with multiple ids is rejected'), which is stronger than implied usage. However, it never says when to reach for tasks_set_status, tasks_move, or tasks_link instead of editing fields here, so routing guidance is only partial.

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

tasks_listB
Read-only

List sprints/tasks/subtasks as an indented tree with their (derived) status.

NameRequiredDescriptionDefault
idNoOnly this item and everything below it
descNoAlso print each item's description
textNoCase-insensitive match in title/description
notesNoAlso print each item's notes
leavesNoOnly items without children
sprintNoOnly this sprint id
statusNonone (brak), in_progress (w trakcie), blocked (bloker, needs reason), done (gotowe), cancelled (anulowane), review (w przeglądzie)
assigneeNoOnly this assignee

TDQS

B3.2/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe read. The description adds real value by disclosing the return shape (indented tree) and that status is derived rather than stored, but it says nothing about default scope when no filters are given, 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?

A single compact sentence with the key information (scope, tree format, derived status) front-loaded. No filler, though it is arguably too terse given 8 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 read-only listing tool with no output schema, the description covers the output shape but omits default behavior (does it list everything when called with no arguments?), ordering, and how filters combine. The rich schema compensates for the parameter side, but output expectations remain thin.

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 100% across all 8 parameters, so the schema already explains each filter. The description adds only the general idea of hierarchy and derived status, no per-parameter meaning, so the baseline 3 applies.

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?

States a specific verb (List), the resources (sprints/tasks/subtasks) and the output shape (indented tree with derived status), which is more informative than a bare 'list tasks'. It does not distinguish itself from close siblings like tasks_overview, tasks_brief or tasks_view, 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?

There is no guidance on when to use this tool versus tasks_overview, tasks_next, tasks_sprint or tasks_brief. An agent must infer the use case 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.

tasks_logB
Read-only

Print the audit log (optionally for one item, optionally since a timestamp).

NameRequiredDescriptionDefault
idNoItem id: sprint '1', task '1.2', subtask '1.2.3'
sinceNoISO timestamp (e.g. 2026-10-17)

TDQS

B3.2/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe read. The description adds that output is a printed log and can be scoped by item or timestamp, but says nothing about ordering, volume, truncation, or what each log entry contains — useful gaps for a log tool with no output schema.

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?

A single front-loaded sentence with the resource stated first and the two optionality notes parenthesized after it. No padding, though the extreme terseness leaves no room for the routing context an agent would want.

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?

Two optional parameters and an annotation mean the description doesn't need to carry much, but for a log-retrieval tool it omits scope defaults (all items when id is absent), ordering, and rough output shape. Adequate to invoke, not enough to predict the result.

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 100%, so both id (with its sprint/task/subtask format) and since (ISO timestamp) are fully documented in the schema. The description restates them at a high level but adds no format or filtering semantics beyond what the schema already gives. Baseline 3 applies.

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?

Specific verb ("Print") plus resource ("audit log") makes the operation immediately identifiable and distinguishes it from list/show/stats siblings by resource type. It stops short of explicitly naming which sibling to use alternatively, so it is clear but not sibling-differentiated at the top level.

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 parenthetical describes parameter options, not when to choose this tool over tasks_show or tasks_stats. There is no statement of when an audit log is preferable to inspecting an item directly, and no exclusions or prerequisites.

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

tasks_moveA

Move an item to another parent (renumbers the subtree). Errors: unknown ids, moving a sprint, moving into own subtree, depth > MAX_DEPTH, same parent without --pos.

NameRequiredDescriptionDefault
idYesItem id: sprint '1', task '1.2', subtask '1.2.3'
posNo1-based position (default: append last)
new_parentYesNew parent id

TDQS

A3.7/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false; the description adds real value beyond them by disclosing the subtree renumbering side effect and the full failure surface (unknown ids, sprints, self-subtree, MAX_DEPTH, same-parent without pos). It does not say what the caller gets back or whether renumbering breaks existing id references, which keeps it below 5.

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?

Two compact clauses, with the action front-loaded and the error surface parenthetically packed. It is efficient, but the dense shorthand ('same parent without --pos') costs a little readability for an agent parsing the parameter name.

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 mutation with no output schema and only coarse annotations, the description covers the effective action, its side effect on ids, and the error conditions an agent must avoid. The main omission is what the tool returns (e.g. new id/path) and any permission or ordering caveats.

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 id, new_parent and pos are already documented in the schema; baseline 3 applies. The description only contributes the same-parent-without-pos constraint, and the '--pos' notation reads like a CLI flag rather than the 'pos' parameter name, adding mild ambiguity rather than clarity.

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?

States a specific verb and resource ("Move an item to another parent") and adds the key side effect that the subtree is renumbered. It does not differentiate itself from the sibling tasks_mv, which is likely the closest alternative, 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 parenthetical error list implies the preconditions (valid ids, non-sprint item, parent not inside own subtree, depth limit), which is useful implicit guidance. However, there is no explicit 'use this instead of tasks_mv when...' routing, and the sibling set contains an obviously overlapping tool that is never mentioned.

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

tasks_mvB

Move an item to another parent (renumbers the subtree).

NameRequiredDescriptionDefault
idYesItem id: sprint '1', task '1.2', subtask '1.2.3'
posNo1-based position (default: append last)
new_parentYesNew parent id

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the mutation profile is known. The description adds genuine value by disclosing that the subtree is renumbered, a non-obvious side effect. It still omits what happens to displaced siblings, failure modes, and whether the move is reversible.

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 short sentence that front-loads the action and appends the key caveat in parentheses. No waste, nothing redundant with the schema or annotations.

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 3-parameter mutation with annotations and full schema coverage, the definition is minimally viable: the renumbering side effect is covered. It falls short on sibling differentiation (tasks_move) and on error/edge-case behavior for a tree-restructuring operation, which matters for correct 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 coverage is 100%, including the dotted-id convention and the 1-based 'pos' with append default, so the schema carries the parameter burden. The description's 'renumbers the subtree' hints that 'pos' shifts sibling positions but adds no syntax or format detail beyond the schema. Baseline 3 applies.

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?

States a specific verb and resource ('Move an item to another parent') plus the scope of side effects ('renumbers the subtree'). It does not distinguish itself from the sibling 'tasks_move', which an agent could easily confuse with this one given the near-identical name.

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 versus the many siblings, most notably tasks_move and tasks_edit, which overlap in intent. No prerequisites, no exclusions (e.g., moving an item under its own descendant), nothing to route the agent.

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

tasks_nextA
Read-only

Next ready, unfinished leaf items (dependencies met) in the first unfinished sprint.

NameRequiredDescriptionDefault
countNoHow many (default 1)
assigneeNoOnly items assigned to this agent

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds useful behavioral context such as dependency readiness, leaf-item filtering, and first-unfinished-sprint scoping, but it does not describe ordering, return shape, or edge cases.

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 front-loaded sentence with no wasted words. It immediately communicates the key scoping criteria before any implied usage.

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 read-only tool with two optional, fully documented parameters, the description covers the core selection logic well. However, with no output schema, it could say more about the returned item shape or ordering, which leaves a modest gap.

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 both optional parameters (count and assignee) are fully documented in the schema. The description adds no additional parameter semantics, which is acceptable given the complete schema coverage, so the baseline 3 applies.

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 specifies the exact selection criteria: next ready, unfinished leaf items with dependencies met, in the first unfinished sprint. This clearly distinguishes it from broader listing siblings like tasks_list and tasks_sprint, though it does not explicitly name alternatives.

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 selection criteria imply when to use this tool — when the agent needs the next actionable item from the first unfinished sprint. However, there is no explicit guidance on when to choose this over tasks_list, tasks_sprint, or tasks_brief, nor any exclusions.

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

tasks_noteA

Append a dated note to an item (progress, decisions, pointers to patches).

NameRequiredDescriptionDefault
idYesItem id: sprint '1', task '1.2', subtask '1.2.3'
textYesNote text

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare this is a non-destructive mutation. The description adds that notes are appended and dated, which is useful behavioral context, but it does not describe return behavior, idempotency, or what happens to prior notes.

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 sentence with the action front-loaded and zero wasted words. The parenthetical examples are compact and 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?

For a simple two-parameter note-append tool with full schema coverage and non-destructive annotations, the description is nearly complete. A minor gap is that it does not mention confirmation or return behavior, though no output schema exists requiring that detail.

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 both parameters are already documented. The description adds examples of note content, but it does not add syntax or format details beyond the schema's 'Note text' and 'Item id' definitions.

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 and resource: 'Append a dated note to an item,' with examples of note content. It is clear what the tool does, though it does not explicitly distinguish itself from siblings like tasks_log or tasks_edit.

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 parenthetical examples (progress, decisions, pointers to patches) give clear context for when to use this tool. There is no explicit when-not guidance or named alternative, but the intended use is evident.

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

tasks_overviewA
Read-only

All sprints in one call: derived status, counts per status and the goal.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe read, so the description's burden is lighter. It does add genuinely non-obvious context in the word 'derived' — status is computed rather than stored — but says nothing about ordering, scope, or whether closed sprints are included.

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?

A single front-loaded fragment with zero filler — the payload contents come first and nothing is repeated. It is telegraphic rather than a complete sentence, which is efficient but slightly terse even for an overview tool.

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?

With no output schema and no parameters, the description carries the full burden of explaining the return value, and it only partially does so: it lists derived status, counts, and goal but not the item shape or whether sprints include task breakdowns. Adequate to select the tool, thin for predicting its output.

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 takes no parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. The description correctly signals a zero-argument, whole-collection call.

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?

Names a specific resource (all sprints) and the concrete payload it returns: derived status, per-status counts, and the goal. That distinguishes it from single-sprint tools like tasks_sprint, but it never explicitly positions itself against tasks_stats or tasks_list, so the differentiation is inferred rather than stated.

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 phrase 'in one call' implies this is a bulk overview rather than per-sprint retrieval, which hints at when to prefer it. However, there is no explicit when-to-use rule and no named alternative among the 18 siblings, so the agent must infer the boundary itself.

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

tasks_removeA
DestructiveIdempotent

Delete an item and everything below it (cascades to notes and dependencies). Refused while other items depend on it. Two-step: call without confirm for a preview, then again with confirm=true.

NameRequiredDescriptionDefault
idYesItem id: sprint '1', task '1.2', subtask '1.2.3'
confirmNoOmit (or false) for a preview; set true to actually delete.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond annotations marking the tool as destructive, the description discloses cascade behavior, refusal when dependents exist, and the preview/confirm safety flow. This is substantial behavioral context for a deletion tool.

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 compact sentences, front-loaded with the destructive scope, then the refusal condition, then the confirm workflow. Every sentence earns its place.

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 destructive delete operation with annotations covering safety traits, the description supplies the cascade scope, dependency refusal, and two-step confirm procedure. No output schema exists, and the preview behavior is sufficiently signaled for correct 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 id and confirm parameters are already fully documented. The description reinforces confirm as the preview/commit switch but adds little parameter detail 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 states a specific verb and resource: delete an item, including everything below it. The cascade scope to notes and dependencies makes the operation distinct from sibling task tools such as tasks_unlink or tasks_set_status.

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 explains the two-step preview/confirm workflow and the precondition that deletion is refused while other items depend on the item. It does not explicitly name alternative tools or tell the agent to unlink dependents first, but the operational context is clear.

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

tasks_set_statusA
Idempotent

Set a status on a leaf item. Parent statuses are derived (any blocked -> blocked, all done -> done, anything started/finished -> in progress). Blocking requires a reason. cascade_down applies the status to every leaf below a task or sprint. Pass either id or ids (exactly one).

NameRequiredDescriptionDefault
idNoItem id: sprint '1', task '1.2', subtask '1.2.3'
idsNoMultiple item ids (alternative to id)
reasonNoRequired when status is blocked
statusNonone (brak), in_progress (w trakcie), blocked (bloker, needs reason), done (gotowe), cancelled (anulowane), review (w przeglądzie)
cascade_downNoApply to all leaves below a parent

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare this is not read-only, is idempotent, and is not destructive. The description adds meaningful behavioral context beyond annotations: parent statuses are derived automatically, blocking requires a reason, and cascade_down applies the status to all leaves below a task or sprint. It does not cover permissions or response behavior, but the annotations reduce the burden.

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 front-loaded with the core action, then quickly covers derived parent behavior, blocking reasons, cascade_down, and the id/ids constraint. Every sentence adds useful information with no 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 status-mutation tool with rich schema coverage and safety annotations, the description covers the important side effects: derived parent statuses and cascading to leaves. It does not describe return values or error behavior, but no output schema exists and the key behavioral risks are addressed.

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 schema already documents each parameter. The description adds a useful constraint that exactly one of id or ids must be passed, and restates that blocking requires a reason and cascade_down affects all leaves. Most parameter meaning is still carried by the schema, so this is appropriately a baseline-level contribution.

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 a specific verb and resource: 'Set a status on a leaf item.' It also clarifies that parent statuses are derived rather than directly set, which distinguishes this from a generic edit operation and makes the scope clear.

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?

It gives some useful usage constraints: parent statuses are derived, blocking requires a reason, cascade_down applies to every leaf below, and exactly one of id or ids should be passed. However, it does not explicitly say when to use this tool versus siblings like tasks_edit, nor does it describe 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.

tasks_showA
Read-only

Show one or more items (description, assignee, dependencies, notes, derived status); brief=true prints one line per item.

NameRequiredDescriptionDefault
idsYes
briefNoOne line per item instead of JSON

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered; the description then adds real value by disclosing what the response contains and that status is 'derived' rather than stored, plus the format switch between JSON and one line per item. It omits behavior for nonexistent or malformed ids, which for a lookup tool is the notable remaining gap.

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 dense sentence, front-loaded with the verb and resource, with the parenthetical field list and the brief flag clause both earning their place. Nothing is repeated or padded.

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 no output schema, the description correctly takes on the job of naming the returned fields, and the readOnly annotation covers the mutation risk. What remains thin is the multi-id behavior (partial failures, ordering) for a tool that explicitly accepts an array of ids.

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 50% and both parameters are in fact documented in the schema (id format '1.2.3' and brief's one-line behavior). The description adds only the multiplicity hint ('one or more items') and restates brief's effect, so it sits at the baseline rather than compensating for anything missing.

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?

Names a specific verb ('show') and resource ('items') and enumerates the fields returned (description, assignee, dependencies, notes, derived status), so the agent knows exactly what it gets back. It does not distinguish itself from close siblings like tasks_view, tasks_list, or tasks_brief, so the agent cannot tell from the description alone which of these to pick.

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 when-to-use guidance and no exclusions relative to the many sibling readers (tasks_overview, tasks_list, tasks_view, tasks_brief). The only usage-like statement is the brief=true rendering switch, which is about output format, not tool selection.

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

tasks_sprintB
Read-only

One table of a sprint's tasks (status, assignee, progress) in a single call.

NameRequiredDescriptionDefault
idYesSprint id

TDQS

B3.4/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes this as a safe read operation. The description adds useful context about the returned table columns and the single-call nature, but it does not cover pagination, limits, or whether all sprint tasks are always included.

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 compact sentence that front-loads the resource and returned fields. Every phrase contributes useful information without 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?

For a simple read-only tool with one required parameter and no output schema, the description sufficiently explains the result shape by naming the key columns. It could be stronger if it clarified whether the table is paginated or exhaustive, but little is missing for correct 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 single 'id' parameter is already documented as 'Sprint id'. The description implies the parameter by referring to 'a sprint's tasks' but adds no syntax, format, or validation details beyond the schema.

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 identifies a specific resource and scope: a sprint's tasks, including returned fields (status, assignee, progress), and clarifies it is a single-call table view. It is clear enough to distinguish from a generic task list, though it does not explicitly name the sibling alternatives it differs from.

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 explicit guidance on when to use this tool versus siblings such as tasks_list, tasks_overview, or tasks_show. The phrase 'in a single call' hints at efficiency, but the description does not state conditions, exclusions, or alternatives.

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

tasks_statsA
Read-only

Counts per status and open work per assignee.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes that this is a safe read operation. The description adds useful behavioral detail about what is counted (status counts and open work per assignee), but it does not disclose scope, return format, or any limitations beyond that.

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, compact sentence with no wasted words. It front-loads the key information and is appropriately sized for a simple no-parameter stats tool.

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 no output schema and no parameters, the description needs to convey what the tool returns, and it does so at a high level. It could be slightly more complete by clarifying scope or output shape, but it is sufficient for an agent to understand the aggregate result.

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 takes zero parameters, so parameter semantics are not applicable and the baseline is 4. The description does not need to compensate for schema gaps here.

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 uses a specific verb ('Counts') and names the aggregate dimensions ('per status' and 'open work per assignee'), so the tool's purpose is clear. However, it does not explicitly distinguish itself from siblings such as tasks_overview or tasks_sprint.

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 instead of alternatives like tasks_overview, tasks_list, or tasks_sprint. The intended use is implied by the stats nature of the tool, but no explicit context 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.

tasks_viewA
Read-only

Return the rendered task view README (overall + current sprint + links to the per-sprint files).

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered; the description adds that the output is a rendered README composed of overall + current sprint + links to per-sprint files, which is useful shape information. It doesn't say whether the output is markdown text, how large it is, or whether it aggregates live data — meaningful gaps given there is no output schema.

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 front-loaded sentence with the resource first and the returned parts in a compact parenthetical; no filler and nothing 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?

With no output schema, the description does the right thing by describing what comes back (overall + current sprint + per-sprint links). It is nearly complete for a zero-parameter read tool, but leaves the relationship to tasks_overview undefined and says nothing about the output medium or whether the per-sprint files must be fetched separately.

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 takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. The description correctly implies no arguments are needed.

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?

States a specific verb ('Return') and resource ('rendered task view README') and enumerates its parts (overall, current sprint, per-sprint links). It does not distinguish itself from the close sibling tasks_overview, which an agent could easily mistake for the same thing.

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 only implied by the content listing: an agent can infer 'call this when you want the whole view rendered at once rather than individual task records'. There is no explicit when-to-use, no exclusion, and no pointer to tasks_overview or tasks_sprint as alternatives for narrower needs.

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. 19 tool updatesv0.1.6
    • First observedtasks_add
    • First observedtasks_add_sprint
    • First observedtasks_brief
    • First observedtasks_edit
    • First observedtasks_link
    • First observedtasks_list
    • First observedtasks_log
    • First observedtasks_move
    • First observedtasks_mv
    • First observedtasks_next
    • First observedtasks_note
    • First observedtasks_overview
    • First observedtasks_remove
    • First observedtasks_set_status
    • First observedtasks_show
    • First observedtasks_sprint
    • First observedtasks_stats
    • First observedtasks_unlink
    • First observedtasks_view

TDQS

B3/5.0

Scored across 19 tools

Disambiguation2/5

tasks_move and tasks_mv are effectively the same operation (both 'move an item to another parent, renumbers the subtree'), creating clear duplicate ambiguity. Additionally, the read surface (tasks_overview, tasks_sprint, tasks_stats, tasks_list, tasks_show, tasks_view, tasks_brief) overlaps heavily with only subtle distinctions between count views, table views, and rendered views.

Naming Consistency3/5

A consistent tasks_ prefix is applied throughout, but the suffix convention is mixed: noun-based (overview, stats, sprint, brief, log, view) alongside verb-based (add, edit, move, set_status, remove). The duplication between tasks_move and tasks_mv further erodes predictability.

Tool Count3/5

19 tools sits at the heavy end of the borderline range. Several read-oriented tools could be consolidated, and one is a straight duplicate, so not every tool clearly earns its place.

Completeness4/5

The surface covers the full lifecycle: create/edit/move/remove for sprints, tasks, and subtasks, plus status, notes, links, audit log, and derived-state views. Minor gaps like keyword search and bulk filtering exist but agents can work around them with list/view calls.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Stdio-based MCP server exposing Jira tools for searching, creating, getting, commenting on, assigning, and transitioning issues, as well as listing projects, with authentication via token or basic auth.
    7
    226 npm
    Apache 2.0
  • A
    license
    B
    quality
    A
    maintenance
    Enables AI agents to manage a filesystem-based issue tracker through typed MCP tools such as list_tasks, create_task, change_task_status, log_work, and get_sprint, instead of shelling out to a CLI. Tasks and sprints are plain folders of Markdown files, so agents can create, claim, comment on, and move work by topic without any database or server state.
    20
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP clients to query projects, fetch findings, trigger analysis, upload CycloneDX BOMs, and check async token status against an OWASP Dependency-Track instance via stdio.
    20 npm
    MIT