Skip to main content
Glama

When a coding agent dies mid-task, the task frees itself.

rhizome-mcp gives autonomous coding agents crash-safe task coordination over MCP: claims are renewable expiring leases, in_progress is derived — never stored — and an interrupted attempt hands its checkpoint to whichever session picks the work up next. One static Go binary, one SQLite database per project. No daemon, no accounts, no cloud.

It works with agents from different products at once — Claude Code, Codex, GitHub Copilot, VS Code, and any other MCP-compatible client — giving them one shared, durable view of project work.

Why · How it compares · Quick start · Monitor your project · MCP surface · Documentation

Why

AI coding agents are concurrent, context-limited, and interruptible. A TODO.md or a single chat context doesn't survive that. rhizome-mcp is built around those failure modes:

  • Crash-safe claiming. Issues are claimed atomically with renewable leases. in_progress is never a stored status — it is derived from an active lease, so a vanished agent can't lock an issue forever. When the lease expires, the issue becomes claimable again. A partial unique index guarantees at most one active attempt per issue at the database level.

  • Token-efficient by contract. Compact list projections (a 100-issue page stays under 64 KB — enforced by an integration test), graph nodes that exclude free-text bodies at the SQL layer, snippet-only search, delta sync via event IDs, and a bounded single-call work-context package.

  • Durable project memory. Checkpoints with next steps, supersedable decision records, append-only event history, and FTS5 full-text search across issues, comments, decisions, and notes. A fresh session resumes from the last checkpoint instead of re-deriving state.

  • Planning and dependency graphs. Cycle-checked blocks relations, epics, claimable entry-point highlighting, and atomic batch planning (up to 50 issues, 100 relations, and 20 decisions in one all-or-nothing transaction).

  • Review workflow. Review requests pin an exact issue version and event position; approving changed code is structurally impossible — a stale request can only be superseded and re-pinned.

  • Resource reservations. A claim can atomically reserve files, directories, globs, or logical resources (a port, a migration window, a deploy slot); an overlapping claim fails fast with the holder and its lease expiry named, instead of two agents colliding later.

  • Concurrency discipline throughout. Optimistic versioning on mutations, replay-safe idempotency keys, stable machine-actionable error codes.

  • Human observability without a server. rhizome-mcp board prints live leases, blockers, and the review queue, or writes a self-contained HTML snapshot; the CLI reads everything as tables, JSON, or Mermaid.

This repository tracks its own backlog through the server it ships — work is selected, claimed, checkpointed, and reviewed via rhizome-mcp itself (AGENTS.md).

Use it when several agent sessions (or several agent products) work the same repository over time and you need handoffs, parallel work, and recovery after crashes or context limits.

Skip it if you need a hosted multi-user tracker with auth, permissions, and a web UI — this is a local single-developer tool by design.

Related MCP server: samskriti-project

How it compares

Compare agent task trackers on guarantees under failure, not on feature lists — local-first SQLite storage and MCP support are table stakes in this category.

When things go wrong

rhizome-mcp

beads

Kata

Guild

Task frees itself after a crash

Yes — expiring lease

No

No

No

Double-claim prevented at the storage layer

Yes

Atomic claim

Atomic claim

Atomic claim

Stale review approval impossible

Yes — version-pinned

No

No

No

Response sizes bounded by a tested contract

Yes — ≤ 64 KiB / 100 issues

No

No

No

Interrupted attempt resumable by another session

Yes — checkpoints

No

No

Note only

Full comparison with sources, pinned versions, and honest "choose X if" guidance: How rhizome-mcp compares.

Quick start

Install and run

Choose the approach that matches your workflow:

Zero-install trial via npm

Try rhizome-mcp immediately with no separate binary install, no Go toolchain:

npx rhizome-mcp serve

Works with any MCP client. See packages/npm/README.md for platform coverage. Great for quick evaluation.

Claude Code plugin

/plugin marketplace add Odrin/rhizome-mcp
/plugin install rhizome-mcp@rhizome

Registers the MCP server (via npx, no binary install) and adds the rhizome-task-workflow and rhizome-execution-plan skills. Each repository you track still needs a one-time npx rhizome-mcp init in its root.

VS Code

Install Rhizome MCP (odrin.rhizome-mcp) from the Marketplace or Open VSX. The extension bundles the platform binary, registers the MCP server automatically, and adds Rhizome: Initialize Project to the Command Palette. No terminal, no mcp.json editing. Details: docs/10-vscode-extension.md.

Prefer a standalone binary with a plain mcp.json entry instead? Install the binary below and use this one-click link: Add to VS Code.

Native binary installer

Download and install a release binary for your platform. Verifies checksums, installs to ~/.local/bin by default:

curl -fsSL https://raw.githubusercontent.com/Odrin/rhizome-mcp/main/scripts/install.sh | sh
irm https://raw.githubusercontent.com/Odrin/rhizome-mcp/main/scripts/install.ps1 | iex

Official MCP Registry

Use rhizome-mcp via the official MCP Registry, available in the Model Context Protocol registry as io.github.Odrin/rhizome-mcp for clients that consume the registry.

Initialize and connect

Initialize tracking inside your repository:

rhizome-mcp init

Then register the server with your MCP client. Automated setup for common clients:

rhizome-mcp connect claude    # Claude Code
rhizome-mcp connect codex     # Codex
rhizome-mcp connect vscode    # VS Code (if using standalone binary instead of extension)
rhizome-mcp connect json      # Template for any other client

Use --print for a dry run. connect discovers your project's actual root (walking up from the current directory the same way serve does) and pins it with --project-root, so the written config works regardless of which subdirectory an MCP client later launches the server from. All four targets (claude, codex, vscode, json) agree on this. The manual equivalent for any MCP client, matching connect's own server key:

{
  "mcpServers": {
    "rhizome-mcp": {
      "command": "/absolute/path/to/rhizome-mcp",
      "args": ["serve", "--project-root", "/absolute/path/to/your/repository"]
    }
  }
}

or, via npx, without installing a binary at all:

{
  "mcpServers": {
    "rhizome-mcp": {
      "command": "npx",
      "args": ["-y", "rhizome-mcp", "serve", "--project-root", "/absolute/path/to/your/repository"]
    }
  }
}

connect detects when it is itself running through the npx rhizome-mcp wrapper and automatically emits this npx form instead of the wrapper's resolved binary path, which lives in the npx cache and goes stale on eviction or a version bump. A config written with a resolved absolute path (the default otherwise) is machine-specific and not meant to be checked in and shared across machines; pass connect TARGET --command to instead emit a bare rhizome-mcp command name that relies on PATH, for a portable config you do intend to share, provided every machine that uses it has rhizome-mcp on PATH.

Stdio is the default transport; protocol output goes to stdout, logs to stderr.

That's it — connected agents start with open_project using the absolute repository root, retain its project_ref, and pass that reference to later project-scoped calls. See the agent workflow guide for the complete workflow. The returned metadata links the rhizome://guides/agent-workflow, rhizome://guides/issue-lifecycle, and rhizome://guides/multi-agent-handoff resources, and repository agents can load the rhizome-task-workflow skill from .github/skills/.

Install the agent workflow skill

For agents that support the open Agent Skills format, install rhizome-task-workflow with the npm-distributed skills CLI:

npx skills add Odrin/rhizome-mcp --skill rhizome-task-workflow

Run the command in a project for a project-scoped installation, or add --global to make the skill available across projects. The skill teaches compatible agents how to select, claim, checkpoint, hand off, and finish Rhizome work. It complements the MCP server; it does not install the rhizome-mcp binary or configure an MCP connection.

Monitor your project

rhizome-mcp board                        # status counts, active leases, blockers, review queue
rhizome-mcp board --serve                # interactive local board UI at a loopback URL
rhizome-mcp board --output board.html    # self-contained HTML snapshot with the planning graph
rhizome-mcp issue list --status ready
rhizome-mcp graph ISSUE-42 --format mermaid
rhizome-mcp doctor --full

The status board reports live lease counts, blocked issues and their reasons, open review requests, and the project-wide planning graph. The planning graph excludes finished work (done, cancelled) from the node budget, so the entry-point count always reflects claimable work. When the graph is truncated due to the 100-node budget, the board marks it as truncated and reports the retained node count in both table and JSON formats.

Optional: local HTTP transport

rhizome-mcp serve --http-address 127.0.0.1:0

The bound endpoint is logged to stderr; the Streamable HTTP endpoint is http://127.0.0.1:<port>/mcp. The transport is loopback-only, unauthenticated, and enforces strict Host/Origin validation plus a 1 MiB outer request body limit. Modern MCP 2026-07-28 clients call server/discover and then send direct requests with protocol metadata; legacy 2025-11-25 clients can still use initialize and notifications/initialized without relying on a persistent transport session. If you want durable audit attribution, create an explicit agent_session_handle with create_agent_session, pass it to the relevant mutating tools, and end it later with end_agent_session; transport closure never ends it.

How it works

init writes exactly one file into the repository:

{
  "version": 1,
  "project_id": "01J..."
}

stored as .agent-tracker.json. The SQLite database lives outside the repository in the platform application-data directory, resolved through project_id:

<application-data>/rhizome-mcp/projects/<project-id>/tasks.db

Use --data-root PATH to select an explicit data root for any command. Nothing else touches your repository, and the database is never committed to Git.

Design principle: an issue must never remain permanently stuck in in_progress. Effective status is computed from stored status plus the presence of an active leased attempt; if the agent disappears and the lease expires, the attempt becomes expired and the issue is available again when its stored state permits it.

Core constraints (by design): Go, SQLite (modernc.org/sqlite, pure Go, CGO-free), stdio as the primary transport, one database per project, no hosted or authenticated web UI (a loopback-only local status board is included), no authentication, minimal CLI. Deferred features are listed in docs/06.

CLI reference

Command

Purpose

init

Create .agent-tracker.json and the project database

serve [--http-address ADDR] [--profile full|agent|read-only|migration] [--toolsets GROUP[,GROUP...]] [--project-root PATH]

Run the MCP server (stdio; --http-address for local HTTP; --profile to narrow the advertised tool catalog to a named profile, or --toolsets to compose one from capability groups; --project-root to serve a project other than the working directory)

connect TARGET [--print] [--command]

Register the server with an MCP client (claude, codex, vscode, json)

board [--output PATH] [--serve [--http-address ADDR]]

Status board: counts, leases, blockers, review queue; optional HTML snapshot; --serve runs a temporary HTTP server

issue list / issue show ISSUE-ID

Inspect issues with filters

search QUERY

Full-text search across issues, comments, decisions, notes

graph ISSUE-ID

Dependency graph as table, JSON, or Mermaid

project info / project export / project import

Project metadata; logical JSON export; logical JSON import (`--input PATH

backup --output PATH

WAL-safe online backup

doctor [--full]

Integrity, schema, and invariant checks

maintenance release-attempt / rebuild-search-index

Administrative recovery

Run rhizome-mcp without arguments for complete usage, rhizome-mcp version for build information.

MCP surface

The server exposes 44 tools covering the full lifecycle: project discovery, issue CRUD with labels and relations, archive/unarchive visibility transitions, planning and dependency graphs, batch plan validation/apply, comments and decisions, claim/renew/checkpoint/finish work attempts with optional atomic resource reservations, work-context assembly, review requests, full-text search, delta changes, logical project export/import, and workflow-policy administration with gate evidence and diagnostics. The complete contract, including the MCP tool annotation matrix and the full/agent/read-only/migration exposure profile matrix, is in docs/03-mcp-tools.md.

By default serve advertises the complete full catalog. Pass --profile agent|read-only|migration (or set RHIZOME_TOOL_PROFILE) to narrow it — for example serve --profile read-only for a client that should never see a mutating tool. When no named profile fits, pass --toolsets (or set RHIZOME_TOOLSETS) with a comma-separated list of capability groups instead — for example serve --toolsets issues,planning — to advertise exactly those groups plus the always-on core pair (open_project, get_project); the two flags are mutually exclusive. Profiles and toolsets are an exposure and prompt-size control, not an authorization boundary: every tool still enforces its own server-side validation regardless of what a client can see in tools/list. See docs/04-storage-runtime.md §17.1 for the full environment-variable set and precedence, including the deprecated unprefixed fallback names.

Documentation

The modular files under docs/ are the canonical specification; SPEC.md is the index. Agents should load only the sections relevant to their current task (AGENT_BRIEF.md explains how).

  1. Product goals and scope

  2. Domain model

  3. MCP tools

  4. Storage and runtime

  5. Implementation requirements

  6. Deferred features and non-goals

  7. Logical interchange format

  8. Local HTTP transport contract

  9. Review workflow contract

  10. VS Code extension

  11. Project routing contract

  12. Resource reservations

  13. Status board

Guides for humans (quick start, workflow, CLI) live in site/ and are published via GitHub Pages. Release history is in the CHANGELOG.

Development

Build and test (no CGO, no external services):

CGO_ENABLED=0 go build -o rhizome-mcp .
go test ./...
go test -tags=integration ./...

The integration tag runs real-process MCP smoke and workflow tests: they build a temporary server binary, initialize a fresh repository and SQLite data root per test, and speak to serve over stdio or HTTP. Beyond single-process smoke coverage, the suite also exercises cross-process scenarios on one shared SQLite data root — concurrent claim and update-version races, an ungraceful process kill and restart, and a backup taken while a server is writing — to catch defects a single-process test structurally cannot see. Most live in the dedicated integration package; tests that need unexported package-main internals stay at the repository root.

CI runs go vet, unit, and integration tests on Ubuntu, macOS, and Windows for every push and pull request targeting main. Releases (.github/workflows/release.yml) publish CGO-free binaries with SHA-256 checksums for linux/amd64, linux/arm64, darwin/amd64, darwin/arm64, and windows/amd64; release binaries embed the version, commit, and build timestamp (local builds report git VCS info or dev, and the VERSION environment variable overrides both).

Release verification steps are documented in CONTRIBUTING.md.

This repository tracks its own backlog in rhizome-mcp: work is selected, claimed, and finished through the MCP server, and durable choices are recorded as decisions. Markdown holds specification only, not task status. See AGENTS.md and CONTRIBUTING.md.

License

Apache-2.0. Security policy: SECURITY.md.

Available Tools

35 tools
add_commentA

Append collaboration context to an issue without rewriting history.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYes
issue_idYesCanonical issue identifier (ULID or ISSUE-N).
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
idempotency_keyNo
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
commentYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds the context that this operation is append-only and preserves history, which is useful but not comprehensive—it does not explain idempotency behavior or potential side effects beyond the annotation hints.

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 redundant filler. Every word contributes to the core purpose and behavior.

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

Completeness3/5

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

The description captures the primary use case but is thin given the tool has 5 parameters and an output schema. It does not address project_ref routing, idempotency key usage, or content semantics, though output schema reduces the need to explain return values.

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

Parameters2/5

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

Schema description coverage is 60%, with content and idempotency_key lacking descriptions. The tool description does not explicitly describe any parameters, only vaguely referring to content as 'collaboration context.' It adds no meaningful clarification beyond the schema.

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

Purpose5/5

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

The description uses a specific verb ('Append') and resource ('collaboration context to an issue') plus a distinguishing qualifier ('without rewriting history'). This clearly separates it from siblings like update_issue or create_issue.

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 'without rewriting history' implies this tool is for additive context rather than editing, but no explicit when-to-use or alternative tools are named. Usage guidance is only implied, not directly stated.

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

apply_importA
DestructiveIdempotent

Apply a validated logical project import document into an empty destination.

ParametersJSON Schema
NameRequiredDescriptionDefault
documentNo
source_uriNo
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countsYes
conflictsYes
latest_event_idYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructive and idempotent behavior. The description adds useful context beyond that by specifying a precondition ('validated') and a restriction ('empty destination'), giving the agent a clearer model of the operation's impact. No contradiction with annotations.

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

Conciseness5/5

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

A single, tightly worded sentence effectively conveys the core purpose without redundancy. Every word contributes meaning, making it appropriately sized and front-loaded.

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

Completeness3/5

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

Given the 4-parameter complexity and the presence of an output schema, the description provides the minimum essential context but omits key operational details such as the exact effect of the apply operation and how parameters relate. It is adequate but leaves notable gaps.

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

Parameters2/5

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

Schema description coverage is only 50%, with document and source_uri lacking descriptions. The tool description does not elaborate on any parameter meanings, failing to compensate for the coverage gap. It leaves half the parameters semantically unexplained.

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 'Apply' and clearly identifies the resource ('validated logical project import document') and target ('empty destination'). It distinguishes this tool from siblings like validate_import and export_project by focusing on applying a validated document.

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 phrase 'validated' and 'empty destination' provides clear context for when to use the tool, implying it should follow validation and target an empty project. However, it does not explicitly mention alternatives or exclusions, such as using validate_import first or not applying to non-empty destinations.

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

apply_issue_planB
DestructiveIdempotent

Atomically create issues, relations, and decisions from a valid plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
issuesYes
decisionsYes
relationsYes
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
idempotency_keyYes
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
next_actionsYes
created_issuesYes
latest_event_idYes
created_decisionsYes
created_relationsYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations declare non-readOnly, destructive, and idempotent. The description adds atomicity (all-or-nothing) which is useful context beyond annotations. It does not contradict annotations, but it does not explain the nature of the destructive effects or behavior on invalid plans.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. It delivers the core action and scope efficiently, though it could be slightly longer to include usage context.

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

Completeness2/5

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

Given the tool's complexity (six parameters, three array types, and atomic semantics), a one-sentence description is inadequate. It lacks critical context about what constitutes a valid plan, how atomicity behaves on failure, what the output schema contains, and its relationship to validate_issue_plan.

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

Parameters2/5

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

With schema description coverage at only 33%, the description should compensate for the core array parameters (issues, decisions, relations) and idempotency_key. It only names the resources without elaborating on structure, ref usage, or how they interrelate, leaving the schema field names as the primary guide.

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 identifies the action (create) and the resources (issues, relations, decisions) with the atomicity qualifier. It distinguishes itself from single-entity tools like create_issue, though it does not explicitly 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 phrase 'from a valid plan' implies a prerequisite of validation, but there is no explicit guidance on when to use this tool versus alternatives like apply_import or create_issue. No exclusions or alternative references are provided.

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

archive_issueA
DestructiveIdempotent

Archive one issue using its current version; history remains available.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNo
issue_idYesCanonical issue identifier (ULID or ISSUE-N).
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
idempotency_keyNo
expected_versionYes
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already indicate destructive and idempotent behavior. The description adds valuable context: 'history remains available' clarifies that the archive is non-deleting and preserves data, and 'using its current version' reveals the requirement for a matching expected_version. This goes beyond annotation coverage without contradicting it.

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 short sentence (8 words) that is front-loaded with the core purpose and contains no filler. Every clause adds meaningful information.

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

Completeness4/5

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

Given the output schema and annotations, the description covers the core purpose, a key behavioral trait (history retention), and the concurrency condition. It does not elaborate on usage context or all parameter semantics, but for a single-issue archive operation with structured schema, it is reasonably 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?

Schema descriptions cover issue_id and project_ref, but not the remaining four parameters. The phrase 'using its current version' directly explains the purpose of expected_version, adding meaning not in the schema. However, other parameters like view, idempotency_key, and agent_session_handle remain unexplained, so the description only partially compensates for the 50% 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 states the action ('Archive one issue') with a specific verb and resource, and adds 'using its current version' which indicates the optimistic concurrency scope. This distinguishes it from sibling tools like update_issue or get_issue.

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 explicit guidance on when to use this tool versus alternatives, nor does it mention conditions such as issue state or permissions. The only implicit usage cue is the word 'Archive', which is not enough to differentiate from other issue-management actions.

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

cancel_review_requestA
DestructiveIdempotent

Cancel an open or claimed review request using its current version.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
expected_versionYes
review_request_idYesCanonical review request identifier (ULID).
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
statusYes
versionYes
issue_idYes
claimableYes
created_atYes
resolved_atNo
artifact_idsYes
supersedes_idNo
target_event_idYes
active_attempt_idNo
target_issue_versionYes

TDQS

A4.4/5.0
Behavior4/5

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

The description adds concurrency semantics with 'using its current version,' indicating optimistic locking via expected_version. This goes beyond the annotations, which already declare destructive and idempotent behavior, providing valuable context for invocation.

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 action and includes all essential constraints. No extraneous words 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 destructive tool with an output schema, the description covers the core behavior, state constraints, and concurrency mechanism. It doesn't detail error handling on version mismatch, but the output schema likely covers that. Overall, adequate for correct invocation.

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

Parameters4/5

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

The schema documents 3 of 4 parameters, but expected_version lacks a description. The description's 'current version' clarifies expected_version's role, and 'open or claimed' gives context for review_request_id. This compensates for the missing schema detail.

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 ('cancel') and resource ('review request'), and specifies scope ('open or claimed'). This clearly distinguishes it from sibling tools like replace_review_request and supersede_review_request.

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 by limiting cancellation to open or claimed requests, but doesn't explicitly mention alternatives or exclusions. This is sufficient guidance for selecting the tool when cancellation is intended.

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

claim_issueA
Idempotent

Atomically acquire exclusive ready/review work for a 60-3600s renewable lease; already claimed work fails; keyed retries replay.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoResponse shape; compact is the default.
issue_idYesClaimable ready or review issue (ULID or ISSUE-N).
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
lease_secondsNoRequested lease duration in seconds.
idempotency_keyNoOptional key that replays the same claim request.
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior5/5

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

The description discloses key behavioral traits: atomicity, exclusivity, lease duration range (60-3600s), renewability, failure on already claimed work, and idempotent retry replay. These go well beyond the annotations (which only state readOnlyHint=false, idempotentHint=true) and provide essential operational 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 a single sentence packed with relevant technical detail—atomic acquire, exclusive ready/review work, lease range, renewal, failure case, and idempotent retry. There is no redundant or filler content; every phrase 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 description covers the core behavioral contract thoroughly, including atomicity, exclusivity, lease mechanics, and retry semantics. It does not explain when to use this tool relative to siblings, but with an output schema present and strong schema coverage, the missing piece is acceptable. The description is complete for the tool's complexity.

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

Parameters3/5

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

The input schema has 100% parameter coverage, so the baseline is 3. The description adds minimal extra semantic value: it mentions lease duration and keyed retries, but these largely echo the schema descriptions for lease_seconds and idempotency_key. No new parameter-level meaning is introduced.

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 atomically acquires exclusive ready/review work with a renewable lease. It distinguishes this from sibling actions like get_issue (read-only) and update_issue (modification). The verb 'acquire' and specific object 'exclusive ready/review work' make the purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies usage for claiming an issue when starting work, but it does not explicitly state when to use this tool versus alternatives like renew_attempt or get_work_context. No exclusions or alternative recommendations are provided; usage context is inferred rather than explicit.

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

create_agent_sessionA

Create a durable attribution session and one unrecoverable handle; writes a new session on every call (non-idempotent).

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoOptional model identifier.
agent_labelNoOptional human-readable agent identity.
client_nameYesRequired client identity.
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
instance_keyNoOptional stable key for this client instance.
client_versionNoOptional client version.

Output Schema

ParametersJSON Schema
NameRequiredDescription
sessionYes
agent_session_handleYes

TDQS

A3.6/5.0
Behavior4/5

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

The description discloses key behavioral traits: writes a new session on every call (non-idempotent) and produces an unrecoverable handle. This goes beyond the annotations, which only indicate idempotentHint false, by explaining the practical consequence (a new session each time) and the risk of losing the handle. It does not cover all side effects, but adds meaningful 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?

A single, well-structured sentence that front-loads the core action and includes critical behavioral nuance (non-idempotent, unrecoverable handle). Every clause earns its place, with no redundancy or 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?

Given the presence of an output schema and full parameter coverage, the description provides sufficient context for the tool's core function and side effects. It could be slightly more complete by mentioning the relationship to sibling tools or typical usage flow, but it is not incomplete for the tool's complexity.

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?

All six parameters have descriptions in the schema (100% coverage), so the schema already documents each field. The tool description itself does not add extra semantic value about parameters, such as relationships or usage tips. This matches the baseline for full schema coverage.

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 the tool creates a durable attribution session and an unrecoverable handle, which is a specific action on a clear resource. However, it does not explicitly differentiate from sibling tools like end_agent_session or open_project, though the name and action make the purpose largely unambiguous.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives, such as mentioning it as a prerequisite for other agent actions or that end_agent_session is the counterpart. The only implied usage is that creating a session is needed for attribution, but no direct context or exclusions are given.

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

create_issueA

Create one epic, task, or bug with optional hierarchy and labels.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYes
viewNo
titleYes
labelsNo
statusNo
priorityNo
descriptionNo
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
blocked_reasonNo
idempotency_keyNo
parent_issue_idNoCanonical issue identifier (ULID or ISSUE-N).
acceptance_criteriaNo
agent_session_handleNoOptional durable session handle for request attribution.
create_missing_labelsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations indicate this is a mutation (readOnlyHint=false) and not idempotent (idempotentHint=false), which provides some baseline. The description adds that the tool can create different issue types and optionally set hierarchy and labels, giving more specific behavioral context than annotations alone. However, it does not disclose return values, permissions, or side effects beyond the obvious creation.

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 that uses every word to convey meaning. It is concise, non-redundant, and avoids filler content, making it efficient for an agent to parse.

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

Completeness2/5

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

Despite having an output schema that covers return values, the tool is complex with 14 parameters and low schema coverage. The minimal description fails to convey important parameter semantics, usage nuances, or typical scenarios, making it incomplete for an agent to invoke correctly without additional inference.

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

Parameters2/5

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

With only 21% schema description coverage, the burden falls on the description to explain parameters. It clarifies that 'epic, task, or bug' corresponds to the 'type' parameter, and 'hierarchy'/'labels' hint at parent_issue_id and label-related parameters. The remaining 11 parameters (e.g., view, status, priority, description, blocked_reason, idempotency_key) are not covered, leaving significant ambiguity for the agent.

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

Purpose5/5

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

The description clearly states the verb ('Create') and resource ('one epic, task, or bug'), and scopes it with optional hierarchy and labels. This distinguishes it from sibling tools like update_issue, get_issue, and apply_issue_plan, which all have different actions or scopes.

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 creating a single issue of a specified type, but does not explicitly state when to use this tool versus alternatives like update_issue for modifications or apply_issue_plan for applying plans. No exclusions or prerequises are mentioned, leaving the agent to infer context from the name and siblings.

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

create_review_requestA

Create a review request for an exact issue version, event position, and artifact set. Deprecated: prefer replace_review_request.

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYesCanonical issue identifier (ULID or ISSUE-N).
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
artifact_idsNo
supersedes_idNoCanonical review request identifier (ULID).
target_event_idYes
agent_session_handleNoOptional durable session handle for request attribution.
target_issue_versionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
statusYes
versionYes
issue_idYes
claimableYes
created_atYes
resolved_atNo
artifact_idsYes
supersedes_idNo
target_event_idYes
active_attempt_idNo
target_issue_versionYes

TDQS

A4.4/5.0
Behavior3/5

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

Annotations do not provide read-only, idempotency, or destructive hints (all false). The description adds deprecation status and the 'exact' requirement, but does not disclose side effects, auth needs, or failure modes. It carries some burden, but not enough to exceed a baseline adequate score.

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 action and deprecation notice. Every word earns its place with zero waste.

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 an output schema present and a clear deprecation message, the description is largely sufficient. It lacks detailed behavioral caveats, but for a deprecated create tool, the provided context plus sibling list allows an agent to invoke it correctly. Not a 5 because it omits any mention of prerequisites or side effects beyond the schema.

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 57%, and several required parameters (target_issue_version, target_event_id, artifact_ids) lack schema descriptions. The description clarifies these as 'exact issue version, event position, and artifact set,' adding meaning beyond the schema. It does not explain all 7 parameters, but it adds significant value for the core ones.

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 ('Create') and resource ('review request') with precise scope ('exact issue version, event position, and artifact set'). It clearly distinguishes from siblings by noting deprecation and pointing to replace_review_request as the preferred alternative.

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

Usage Guidelines5/5

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

Explicitly states 'Deprecated: prefer replace_review_request,' providing a direct alternative and when-not-to-use guidance. This is a clear exclusion that helps the agent choose the correct sibling tool.

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

end_agent_sessionB
Idempotent

End one explicitly created durable agent session handle.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
agent_session_handleYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
sessionYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations indicate idempotent and non-readonly. The description adds that the handle must be 'explicitly created durable', which narrows the accepted input, but doesn't disclose side effects or error behavior 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.

Conciseness4/5

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

A single sentence with no redundant words, but the phrasing is slightly awkward. It is appropriately short for the tool's simplicity.

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

Completeness2/5

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

Given an output schema and annotations, the description is acceptable but lacks usage context and does not mention when to pass project_ref or omit it. The tool's simplicity helps, but guidelines are missing.

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 documents project_ref but not agent_session_handle; the description identifies the handle as the target and specifies it must be an explicitly created durable session handle, adding some meaning. However, it doesn't explain how to obtain one or interaction with project_ref.

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 the verb 'End' with the resource 'agent session handle', and adds 'explicitly created durable' to distinguish from implicit or temporary sessions. However, it doesn't contrast with sibling tools like create_agent_session or finish_attempt, but the verb and resource are clear.

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 statement about when to use this tool versus alternatives, no exclusions or prerequisites. The description only states what it does, not when it should be chosen.

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

export_projectB
Read-onlyIdempotent

Export the selected project as the version 1 logical interchange document.

ParametersJSON Schema
NameRequiredDescriptionDefault
deliveryNo
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that the output is a 'logical interchange document', but it does not explain behavioral aspects like how the 'delivery' parameter affects output, side effects (though none due to annotations), or whether it requires an explicit project_ref. It adds minimal context beyond annotations, hence a mid-range score.

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 tool's primary action and output format.

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?

Annotations and output schema cover safety and return format, reducing the burden on the description. However, the description is too terse to provide complete guidance: it lacks usage context, alternative differentiation, and parameter behavior. For a simple export tool, it is minimally adequate but leaves gaps in when and how to use it.

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

Parameters2/5

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

The description does not add any meaning to the parameters beyond the schema. Schema coverage is 67%, leaving the 'delivery' parameter (enum: artifact/inline) undocumented in both schema and description. The description fails to clarify what 'delivery' means or how it influences the export, and it does not compensate for the lack of parameter detail.

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 a specific verb ('Export'), the resource ('the selected project'), and the output format ('version 1 logical interchange document'). This distinguishes it from sibling tools like get_project or get_changes, which retrieve different data shapes.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites (e.g., needing an open project), exclusions, or why one might choose export_project over get_project. The description only states what it does, not 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.

finish_attemptB
DestructiveIdempotent

End a leased attempt with outcome, verification, artifacts, and status.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNo
outcomeYes
artifactsNo
attempt_idYes
next_stepsNo
lease_tokenYes
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
verificationNo
blocked_reasonNo
reason_detailsNo
result_summaryYes
review_outcomeNo
idempotency_keyNo
failure_reason_codeNo
target_issue_statusNo
acknowledged_changesNo
agent_session_handleNoOptional durable session handle for request attribution.
interruption_reason_codeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already mark this as destructive, non-read-only, and idempotent. The description adds no additional behavioral context such as irreversibility, authorization requirements, or side effects beyond the word 'End'.

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

Conciseness3/5

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

The description is a single sentence with no fluff, but it is under-specified for an 18-parameter tool. It is easy to parse but sacrifices critical information.

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 18 parameters and low schema coverage, the description does not provide enough context about required inputs, state transitions, or side effects. It is not sufficient for reliable tool selection and invocation.

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

Parameters2/5

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

Schema description coverage is only 11%, leaving most parameters unexplained. The description mentions outcome, verification, artifacts, and status, but omits the required fields attempt_id, lease_token, and result_summary, leaving agents without enough semantics to construct valid calls.

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 the specific verb 'End' and names the resource 'leased attempt', making its function clear. It lists core data (outcome, verification, artifacts, status), distinguishing it from sibling tools like renew_attempt or save_attempt_note.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus renew_attempt or other attempt-management siblings. The context of ending a leased attempt is implied, but no exclusions or alternative recommendations are given.

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

get_changesA
Read-onlyIdempotent

Get ordered issue events after an event ID for incremental synchronization.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
issue_idNoCanonical issue identifier (ULID or ISSUE-N).
event_typesNo
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
since_event_idYes
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
eventsYes
has_moreYes
next_event_idYes
latest_event_idYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds that events are ordered and that fetching starts after a given event ID, which is useful but not extensive behavior detail. It does not mention pagination or how filters interact, so it provides a moderate amount of additional transparency.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the verb and key qualifier. Every word contributes to the meaning, and there is no redundancy or filler.

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

Completeness3/5

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

Given 6 parameters (3 undocumented), moderate complexity, and available annotations/output schema, the description is terse. It does not explain the relationship between limit, event_types, and the event ordering, nor how to handle subsequent pages. However, the output schema and annotations reduce the need for return-value explanation, making it minimally complete for a read-only sync endpoint.

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 50%: issue_id, project_ref, and agent_session_handle are described in the schema, while limit, event_types, and since_event_id are not. The description references 'event ID' which helps clarify since_event_id but does not elaborate on limit or event_types. This adds some meaning but does not fully compensate for the undocumented parameters.

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

Purpose5/5

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

The description clearly states the action ('Get'), the resource ('ordered issue events'), and the specific scope ('after an event ID for incremental synchronization'). This distinctly differentiates the tool from siblings like get_issue_activity by emphasizing incremental sync and event ordering.

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 gives a clear usage context ('for incremental synchronization'), which implies when to use it. However, it does not explicitly state when not to use it or name alternative tools, so it stops short of full usage guidance.

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

get_issueA
Read-onlyIdempotent

Get the current issue record by ULID or ISSUE-N display ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNo
issue_idYesCanonical issue identifier (ULID or ISSUE-N).
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
typeYes
titleYes
labelsNo
statusNo
versionYes
priorityNo
closed_atNo
created_atNo
display_idYes
updated_atYes
archived_atNo
descriptionNo
sequence_noYes
blocked_reasonNo
parent_issue_idNo
acceptance_criteriaNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the 'current' state nuance, suggesting the latest version, but does not disclose additional behavioral traits such as error handling or return format. No contradiction with annotations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with zero waste. It clearly communicates the verb, resource, and identifier formats without extraneous detail, earning its place.

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

Completeness4/5

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

Given the tool's simplicity and the presence of an output schema, the description is largely complete. However, it omits any mention of the 'view' parameter, whose enum values (compact/standard/full) may imply different response depths, and it does not clarify the behavior of 'current' in terms of versioning or archived issues. This leaves a minor but notable 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 high (75%), setting the baseline at 3. The description reinforces issue_id semantics by naming the identifier formats, but it does not explain the 'view' parameter (which lacks a schema description) or add meaning for project_ref and agent_session_handle 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 uses the specific verb 'Get' with resource 'current issue record' and identifiers 'ULID or ISSUE-N display ID', clearly distinguishing it from siblings like get_issue_graph (graph) and list_issues (list). It leaves no doubt about the tool's primary function.

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 fetching a single issue by its identifier, but it does not explicitly state when to use this tool versus alternatives. No exclusions or sibling tool references are provided, so the guidance is implied rather than explicit.

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

get_issue_activityA
Read-onlyIdempotent

Get a unified newest-first timeline of issue work and artifacts.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
orderNo
typesNo
cursorNo
issue_idYesCanonical issue identifier (ULID or ISSUE-N).
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
has_moreYes
next_cursorYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so safety is covered. The description adds useful behavioral details: results are newest-first and unified/aggregated. It does not, however, disclose pagination behavior or filtering implications.

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

Conciseness5/5

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

One sentence, front-loaded with the verb and object. No wasted words.

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

Completeness3/5

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

For a read-only activity tool with an output schema, the description is adequate but not complete: it does not mention the configurable types filter or the cursor-based pagination, and it lacks usage context vis-à-vis sibling tools. The presence of an output schema mitigates the need to describe return values, but filtering options are central to the tool's behavior.

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

Parameters2/5

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

Schema description coverage is only 43% – only issue_id and project_ref are described in the schema. The tool description adds no parameter information, leaving limit, order, types, cursor, and agent_session_handle without additional context. Since coverage is low, the description fails to compensate for undocumented parameters.

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

Purpose5/5

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

The description uses the specific verb 'Get' and defines the resource as a 'unified newest-first timeline of issue work and artifacts,' clearly distinguishing it from siblings like get_issue (which likely returns issue state) and get_changes (which may return diffs).

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 gives no explicit guidance on when to use this tool over alternatives; it only implies its use for an activity timeline. No alternatives or exclusions are mentioned, though the 'unified' phrasing hints it aggregates multiple sources.

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

get_issue_graphA
Read-onlyIdempotent

Get a bounded relation and hierarchy graph around one issue.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoOnly compact graph nodes are available.
depthNoRelation hops from root; default 2.
directionNoRelation traversal direction.
max_nodesNoMaximum returned nodes; default 100.
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
root_issue_idYesIssue at the graph traversal root.
relation_typesNoOptional relation kinds; empty includes all.
include_terminalNoInclude terminal issue nodes.
include_hierarchyNoInclude derived epic hierarchy edges.
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
edgesYes
nodesYes
summaryYes
warningsNo
truncatedYes
entry_pointsYes
next_actionsYes
root_issue_idNoCanonical issue identifier (ULID or ISSUE-N).
blocking_nodesNo
truncation_reasonNo

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 and destructiveHint=false, so the safety profile is covered. The description adds 'bounded' and 'hierarchy', which provide useful context about the graph's scope, but it does not explain traversal behavior, limits, or return format beyond what annotations/schema offer.

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 filler. It conveys the essential purpose efficiently.

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

Completeness3/5

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

Given the tool's complexity (10 parameters, output schema, annotations), the description is minimally viable but lacks explicit guidance on when to use it versus siblings. The output schema covers return values, but overall context could be richer.

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 fully documents all 10 parameters. The description adds no parameter-specific meaning, but the baseline of 3 is appropriate since the schema carries the burden.

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'), names the resource ('relation and hierarchy graph'), and scopes it to 'around one issue' and 'bounded', which distinguishes it from siblings like get_issue (single issue) and get_planning_graph (planning graph). This is a clear statement of 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 through the phrase 'around one issue', indicating the tool is for exploring a single issue's relations and hierarchy. However, it does not explicitly state when to use this over alternatives (e.g., get_planning_graph) or provide exclusions.

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

get_planning_graphA
Read-onlyIdempotent

Get dependency-aware entry points and blocking nodes for work selection.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNo
max_nodesNo
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
root_issue_idNoCanonical issue identifier (ULID or ISSUE-N).
include_reviewNo
include_relatedNo
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
edgesYes
nodesYes
summaryYes
warningsNo
truncatedYes
entry_pointsYes
next_actionsYes
root_issue_idNoCanonical issue identifier (ULID or ISSUE-N).
blocking_nodesNo
truncation_reasonNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds meaningful context by explaining that the graph is dependency-aware and focuses on entry points and blocking nodes, which goes beyond the structured annotations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It efficiently communicates the tool's core purpose and output.

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 output schema covers return values, so lack of return-value description is acceptable. However, with 7 optional parameters and low schema coverage, the description leaves significant gaps about parameter usage and when to invoke this tool, making it only partially complete for reliable invocation.

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

Parameters2/5

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

Schema description coverage is only 43%, and the description does not compensate by explaining the key parameters: depth, max_nodes, include_review, and include_related. These remain ambiguous, and the description provides no additional semantic guidance beyond the sparse 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 gets dependency-aware entry points and blocking nodes, naming the specific resource (planning graph) and its purpose (work selection). This differentiates it from siblings like get_issue_graph and get_work_context, which focus on different aspects.

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 'for work selection' implies a use case but does not explicitly state when to use this tool over alternatives, nor does it provide exclusions. The agent must infer the appropriate context from the tool name and description alone.

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

get_projectA
Read-onlyIdempotent

Get metadata, limits, supported values, event position, and guide links for a project_ref or configured default.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
agent_session_handleNoOptional durable session handle for request attribution.
include_instructionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
guidesYes
limitsYes
projectYes
sessionYes
app_versionYes
project_refYes
next_actionsYes
tool_profileYes
config_versionYes
schema_versionYes
latest_event_idYes
supported_statusesYes
supported_prioritiesYes
supported_issue_typesYes
supported_relation_typesYes

TDQS

A4/5.0
Behavior3/5

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

Annotations cover the safety profile (readOnlyHint, idempotentHint, destructiveHint). The description adds the fallback to a configured default and lists specific data categories, but does not disclose additional behavioral traits like authentication requirements or potential errors.

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 that is front-loaded with the action and clearly enumerates the data categories. No filler or redundant information.

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

Completeness4/5

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

Given the tool has an output schema, rich annotations, and a clear purpose, the description suffices for selecting and invoking the tool. However, the meaning of 'event position' and the include_instructions parameter are left undefined, leaving minor gaps.

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 descriptions cover 67% of parameters, with project_ref and agent_session_handle well documented. The tool description echoes project_ref but does not clarify the undocumented include_instructions parameter, so it adds minimal value beyond the schema.

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

Purpose5/5

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

The description uses the specific verb 'Get' and clearly identifies the resource as project metadata, limits, supported values, event position, and guide links. It distinguishes from sibling tools like get_issue or get_issue_graph by focusing on project-level information.

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 implies when to use this tool (when you need project metadata) and mentions the fallback to a configured default, providing useful context. However, it does not explicitly compare to alternatives or state 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.

get_review_requestA
Read-onlyIdempotent

Get one review request by identifier.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
review_request_idYesCanonical review request identifier (ULID).
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
statusYes
versionYes
issue_idYes
claimableYes
created_atYes
resolved_atNo
artifact_idsYes
supersedes_idNo
target_event_idYes
active_attempt_idNo
target_issue_versionYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already disclose readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds no additional behavioral context (e.g., what happens if the ID is not found, any rate limits, or prerequisites). Since annotations carry the transparency burden, a baseline score of 3 is appropriate.

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

Conciseness5/5

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

The description is a single sentence, 8 words, and front-loads the core action ('Get one review request'). Every word is necessary and there is no fluff or redundancy.

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

Completeness4/5

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

For a simple get-by-id tool, the combination of a clear description, complete schema descriptions, rich annotations, and an output schema is largely sufficient. The only minor gap is the lack of explicit guidance about when to favor this over list_review_requests, but the schema and annotations cover the essential invocation details.

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%, with all three parameters having descriptions (e.g., review_request_id as 'Canonical review request identifier (ULID)'). The description itself adds minimal parameter meaning beyond the schema, 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 'Get one review request by identifier' clearly states a specific verb (get), a specific resource (review request), and a specific scope (one by identifier). It distinguishes from siblings like list_review_requests (which retrieves multiple) and create/cancel/replace_review_request (which are mutations).

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

Usage Guidelines3/5

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

The description implies usage (when you need a single review request by ID) but does not explicitly state when to use it versus alternatives such as list_review_requests. No exclusions or alternative tool names are mentioned. The schema provides some routing context (project_ref) but that is not part of the description.

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

get_work_contextB
Read-onlyIdempotent

Get bounded task, blocker, decision, checkpoint, and recovery context.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitsNoOptional 1-20 bounds for requested list sections only.
includeNoOptional unique context sections; empty returns the compact default.
issue_idYesIssue whose work context to load.
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
issueYes
reviewsYes
blockersYes
warningsYes
artifactsYes
decisionsYes
relationsYes
truncatedYes
checkpointYes
parent_epicYes
next_actionsYes
attempt_historyYes
recent_commentsYes
previous_attemptYes
truncated_sectionsYes
project_instructionsYes
recent_attempt_notesYes
related_issue_summariesYes
changes_since_previous_attemptYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the 'bounded' trait, indicating results are limited, but does not specify how bounds work (e.g., default limits, configurable via the limits parameter) or mention the 'include' parameter's role in selecting sections. This adds minimal behavioral context beyond annotations.

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

Conciseness5/5

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

One sentence with no filler: 'Get bounded task, blocker, decision, checkpoint, and recovery context.' It is front-loaded with the verb and resource, and every word carries meaning. This is concise and well-structured.

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

Completeness4/5

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

The tool is a read operation with a rich schema (5 parameters, nested limits object, include enum) and an output schema. The description provides the high-level purpose, and the schema already documents details like default behavior and parameter constraints. Given the annotation coverage and schema richness, the description is sufficiently complete for an agent to select the tool correctly, even though it does not mention integration points like project_ref or agent_session_handle.

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% coverage with descriptions for all parameters (e.g., issue_id: 'Issue whose work context to load', include: 'Optional unique context sections; empty returns the compact default'). The description's list of context types (task, blocker, decision, checkpoint, recovery) loosely maps to schema enum values but does not add further parameter-level detail. Since the schema handles parameter semantics comprehensively, a baseline score of 3 is appropriate.

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

Purpose4/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 a resource 'work context' with a 'bounded' qualifier, enumerating the context types (task, blocker, decision, checkpoint, recovery). This clearly indicates the tool's purpose and distinguishes it from siblings like 'get_issue' by focusing on a bounded aggregate view, though it does not explicitly mention aggregation or a composite nature.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or alternative tools, and there is no contextual hint about appropriate use cases. The list of context types implicitly suggests a holistic view, but this is not explicit enough to count as usage guidance.

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

list_decisionsA
Read-onlyIdempotent

List project-wide or issue-scoped decisions with cursor pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo0 uses the default limit of 20; maximum is 100.
cursorNo
issue_idNoCanonical issue identifier (ULID or ISSUE-N).
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
has_moreYes
next_cursorYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so the safety profile is known. The description adds useful behavioral details about cursor pagination and the ability to scope results project-wide or by issue, which are not captured by annotations.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded with the verb 'List' and communicates scope and pagination without waste. Every word 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 simple list tool with strong annotations, a descriptive schema, and an output schema, this description covers the essentials: what it lists, the optional scoping, and pagination behavior. No additional context is strictly necessary.

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

Parameters4/5

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

Schema descriptions cover 4 of 5 parameters. The description adds meaning to the cursor parameter by explicitly mentioning 'cursor pagination', which is the one parameter lacking a schema description. This slightly elevates it above the baseline.

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

Purpose5/5

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

The description clearly states it lists decisions and specifies both scoping options (project-wide or issue-scoped) and the pagination mechanism. This distinguishes it from sibling tools like list_issues or get_issue_activity, which operate on 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 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: to list decisions, optionally scoped by issue. It doesn't explicitly name alternative tools or exclusion criteria, but the context is sufficient for an agent to choose this over list_issues or similar list tools.

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

list_issuesA
Read-onlyIdempotent

List and filter issues, including effective status, blockers, and claimability.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNo
limitNo0 uses the default limit of 20; maximum is 100.
typesNo
cursorNo
labelsNo
statusesNo
is_blockedNo
prioritiesNo
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
is_claimableNo
parent_issue_idNoCanonical issue identifier (ULID or ISSUE-N).
include_archivedNo
effective_statusesNo
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
has_moreYes
next_cursorYes
next_actionsYes

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 and destructiveHint=false, so the agent knows it is safe. The description adds the 'effective status, blockers, claimability' context, but it does not disclose pagination behavior, defaults for archived issues, or any other non-obvious behavior. This is adequate but not enriching.

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 that is front-loaded with the verb and resource, and delivers relevant specifics without waste.

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

Completeness3/5

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

Given the tool's complexity (14 parameters, output schema), the description covers the core purpose but omits important operational details such as project_ref scoping, pagination defaults, and whether archived issues are excluded by default. The annotations and output schema reduce the burden, but this is not complete enough for an agent to make fully informed decisions on all variations.

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 only 29%, so the description carries some responsibility. It hints at filterable dimensions (effective_statuses, is_blocked, is_claimable) but does not elaborate on many other parameters like statuses, labels, or priorities, nor does it distinguish 'statuses' from 'effective_statuses'. This adds a bit of meaning but does not fully compensate for the low coverage.

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 lists and filters issues, with specific mention of effective status, blockers, and claimability. This distinguishes it from single-issue retrieval (get_issue) and search. However, it does not explicitly name alternatives, 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 Guidelines4/5

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

The description implies use for listing/filtering issues, which is clear. It does not explicitly state when-not-to-use or mention alternatives like get_issue for single issues, but the context is unambiguous given the tool name and sibling set.

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

list_labelsA
Read-onlyIdempotent

List reusable labels with optional name search and cursor pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo0 uses the default limit of 50; maximum is 100.
queryNo
cursorNo
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
has_moreYes
next_cursorYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description need not repeat safety traits. It adds behavioral context by explicitly mentioning cursor pagination and optional name search, which informs the agent about iteration and filtering behavior. No contradictions with annotations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence: 'List reusable labels with optional name search and cursor pagination.' Every word is necessary and adds distinct value, with zero redundancy or 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?

The tool is a simple read-only list operation with an output schema available. The description covers the core action, search, and pagination. It does not describe return values, but the output schema handles that, and annotations provide safety context. Reasonably complete for its complexity.

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 descriptions cover limit, project_ref, and agent_session_handle, but query and cursor have no descriptions. The description's 'name search' maps to query and 'cursor pagination' maps to cursor, compensating for the undocumented parameters. This adds semantic meaning beyond the schema, though it does not parse the exact syntax for query.

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

Purpose5/5

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

Description starts with the specific verb 'List' and resource 'reusable labels', making the primary action unambiguous. It further differentiates from sibling list_* tools by mentioning optional name search and cursor pagination, which are unique capabilities for this tool.

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

Usage Guidelines4/5

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

The description implies the tool is for retrieving labels, with optional name filtering and pagination. Although it does not explicitly list alternatives or exclusions, the resource-specific wording ('reusable labels') makes the use case clear. It provides enough context for an agent to choose this tool when labels are involved.

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

list_review_requestsA
Read-onlyIdempotent

List review requests with optional status and claimability filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum is 100; the default is 20.
cursorNo
statusNo
claimableNo
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
has_moreYes
next_cursorNo

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, idempotentHint=true, and destructiveHint=false, covering safety behavior. The description does not contradict these but also adds little beyond the filter capability. Pagination behavior (e.g., cursor, default limit) is not described in the description, though the output schema and parameter descriptions partially cover this.

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 sentence that is front-loaded with the core action ('List review requests') and adds only relevant filter details. Every word contributes value, with no redundancy or extraneous information.

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

Completeness3/5

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

The tool has a rich output schema and strong annotations, so the description does not need to explain return values or safety. However, with 6 parameters and a pagination cursor, the description could have provided more context on pagination or when to use this over search. It is minimally adequate but leaves some usage nuances implicit.

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

Parameters3/5

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

With schema coverage at 50%, the description partially compensates by explicitly naming 'status' and 'claimability' as filters, clarifying their role. However, it does not explain cursor or how pagination works, and the three parameters with schema descriptions (limit, project_ref, agent_session_handle) are not enriched further.

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 the specific verb 'List' with the resource 'review requests' and specifies optional status and claimability filters. This clearly distinguishes it from sibling tools like get_review_request (single item) and mutation tools such as create/cancel/supersede_review_request.

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

Usage Guidelines3/5

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

The description implies usage for listing review requests with filters but provides no explicit guidance on when to use this tool versus alternatives like search or get_review_request. No exclusions or preferred contexts are stated, leaving usage to be inferred from the tool's name and sibling names.

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

manage_issue_relationB
DestructiveIdempotent

Add or remove one blocks, related_to, or duplicates relation.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
relation_typeYes
idempotency_keyNo
source_issue_idYesCanonical issue identifier (ULID or ISSUE-N).
target_issue_idYesCanonical issue identifier (ULID or ISSUE-N).
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
changedYes
relationYes
affected_issuesYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, and the description reinforces this with 'add or remove.' It adds specific relation types and the single-relation scope, but does not elaborate on irreversible removal or other behavioral nuances. This adds some value beyond annotations without fully disclosing consequences.

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, efficient sentence that immediately states the core action and relation types. No wasted words; it is appropriately front-loaded and easy to parse.

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

Completeness2/5

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

Despite having an output schema, the tool is a destructive write operation with 7 parameters and clear potential for misuse (e.g., removing relations permanently). The sparse one-liner fails to provide sufficient context regarding relation direction, idempotency behavior, or error conditions, making it incomplete for safe invocation.

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

Parameters2/5

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

The schema covers 57% of parameters, but the description does not compensate for the undocumented ones. It does not clarify the roles of source_issue_id versus target_issue_id in the relation, nor explain the idempotency_key or agent_session_handle. The assertion 'one relation' implies a single pair, but key parameter semantics are left ambiguous.

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

Purpose5/5

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

The description explicitly states 'Add or remove one blocks, related_to, or duplicates relation,' which clearly identifies the verb (add/remove), the resource (issue relations), and the specific relation types. This distinguishes it from sibling tools like get_issue_graph (read-only) and update_issue (broader updates).

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, nor does it mention any prerequisites, context, or exclusions. It is a bare functional statement with no usage context.

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

open_projectA
Read-onlyIdempotent

Open a project by absolute root and return its project_ref, metadata, limits, supported values, event position, and guide links.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_rootYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
guidesYes
limitsYes
projectYes
sessionYes
app_versionYes
project_refYes
next_actionsYes
tool_profileYes
config_versionYes
schema_versionYes
latest_event_idYes
supported_statusesYes
supported_prioritiesYes
supported_issue_typesYes
supported_relation_typesYes

TDQS

A4/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true and idempotentHint=true, covering the safety profile. The description adds value by listing the exact return contents (project_ref, metadata, limits, etc.), which helps the agent anticipate the output. No contradictions with the annotations.

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

Conciseness5/5

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

The description is a single, dense sentence that conveys the action and the full set of returned items without extraneous words. Every phrase earns its place, making it highly efficient.

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

Completeness4/5

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

Given the tool's simplicity (one parameter, read-only semantics, output schema provided), the description adequately covers the tool's behavior and expected output. It lacks usage guidance against siblings, but that is a separate dimension and not critical for understanding this tool's core function.

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 provides only a 'project_root' string parameter with no description. The description clarifies that it must be an absolute root path, adding semantic meaning beyond the schema's bare type. It does not provide examples or path format details, but for a single parameter this is adequate.

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 'Open' and identifies the resource 'project by absolute root,' enumerating the returned fields (project_ref, metadata, limits, supported values, event position, guide links). This makes the tool's purpose clear and distinguishes it from siblings like get_project by specifying the absolute root requirement and the detailed return payload.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as get_project or export_project. It does not state prerequisites, exclusions, or alternative recommendations, leaving the agent to infer usage from the tool's name alone.

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

record_decisionA
Destructive

Append a durable project or issue decision, optionally superseding one.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
statusNo
contentYes
summaryYes
issue_idNo
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
supersedes_idNo
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
decisionYes
superseded_decision_idYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true, and the description adds 'durable' and 'superseding' context, hinting at the effect on an existing decision. However, it does not disclose side effects like how the superseded decision's status changes or any permissions needed. The description is consistent with annotations but adds limited behavioral detail.

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 sentence, front-loaded with the action verb, and contains no unnecessary words. It efficiently conveys the core function and a key optional behavior.

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

Completeness3/5

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

Given the tool has 8 parameters, a status enum, and an output schema, the description captures the primary purpose but omits details such as how to set status to 'rejected', how linking to issues/projects works, and how supersession is reflected. It is adequate for a simple write operation but leaves gaps for a tool of this complexity.

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

Parameters2/5

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

With only 25% schema description coverage, the description should compensate by explaining parameter roles. It vaguely hints at issue_id/project_ref via 'project or issue decision' and supersedes_id/status via 'superseding', but it does not clarify which parameters are required, how they relate, or the meaning of the status enum. This is insufficient for effective parameter usage.

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

Purpose5/5

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

The description uses a specific verb 'Append' and clearly identifies the resource as a 'durable project or issue decision', also noting the optional superseding behavior. This distinguishes it from siblings like add_comment or list_decisions, making the tool's purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies the tool is for recording formal decisions, but it does not explicitly state when to use it over alternatives (e.g., add_comment for comments) or provide exclusion criteria. The use case is clear enough for basic selection, but there is no explicit guidance.

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

renew_attemptA

Extend an active work or review lease before it expires.

ParametersJSON Schema
NameRequiredDescriptionDefault
attempt_idYes
lease_tokenYes
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
lease_secondsNo
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
server_timeYes
next_actionsYes
lease_expires_atYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already indicate this is a non-read-only, non-idempotent operation. The description adds the 'active' and 'before it expires' constraints, but does not disclose side effects such as whether the lease token rotates, how lease_seconds changes the lease, or any rate limits. It adds some context beyond annotations but omits potentially important behavioral details.

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 a clear verb and object. It is concise and contains no redundant words, examples, or filler.

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 an output schema present, return values do not need to be explained. However, the description leaves gaps around the lease_token and lease_seconds parameters, and does not clarify what 'active work or review lease' means in terms of the attempt lifecycle. It is minimally adequate but lacks important operational context.

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

Parameters2/5

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

Schema description coverage is only 40%, and the description provides no parameter-specific details. The required parameters attempt_id and lease_token are not explained, and the optional lease_seconds behavior is not mentioned. The description does not compensate for the low 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 the specific verb 'Extend' and names the resource 'active work or review lease', clearly distinguishing it from siblings like 'finish_attempt' and 'create_review_request'. It states exactly what action the tool performs.

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 phrase 'before it expires' provides clear temporal context for when to use this tool: on an active lease that is about to lapse. It does not explicitly name alternatives or exclusions, but the timing guidance is sufficient for most cases.

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

replace_review_requestB
DestructiveIdempotent

Atomically supersede a predecessor review request and create its open successor in one transaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
artifact_idsNo
idempotency_keyYes
target_event_idYes
agent_session_handleNoOptional durable session handle for request attribution.
target_issue_versionYes
predecessor_request_idYesCanonical review request identifier (ULID).
predecessor_expected_versionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
successorYes
predecessorYes
latest_event_idYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already indicate destructive and non-read-only behavior. The description adds valuable context about atomicity and transactional semantics, which goes beyond annotations. It does not detail additional side effects or permissions, but the atomicity disclosure is a meaningful addition.

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 waste. It clearly conveys the core action and key attribute (atomicity) in an efficient manner.

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 complex operation with 8 parameters and low schema coverage, the description is insufficient. It does not explain preconditions, effects on the predecessor, or parameter relationships. Although an output schema exists, the operational context remains incomplete.

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

Parameters1/5

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

Schema description coverage is only 38%, and the description itself mentions no parameters. The tool has 8 parameters with 5 required, and no guidance is provided on their semantics or relationships. This leaves the agent with insufficient information to correctly populate required fields like 'predecessor_expected_version' or 'target_issue_version'.

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: to atomically supersede a predecessor review request and create its open successor. It uses specific verbs and resources, but does not explicitly differentiate from the sibling tool 'supersede_review_request', which may cause some ambiguity.

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 transaction' implies usage where atomicity is required, and the predecessor/successor relationship gives some context. However, there is no explicit guidance on when to use this tool versus alternatives like 'supersede_review_request' or 'create_review_request', leaving the agent to infer.

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

save_attempt_noteB

Append a restartable checkpoint, finding, warning, or progress note.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesHow the note should be classified.
contentYesRequired restartable note content.
artifactsNoOptional artifacts created or referenced by this work.
importantNoMarks the note as important.
attempt_idYesActive attempt receiving the note.
next_stepsNoOptional concrete actions after this note.
lease_tokenYesSecret proof of the active attempt lease.
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
idempotency_keyNoOptional key that replays the same note request.
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
artifactsYes
attempt_noteYes
next_actionsYes

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already indicate a write operation (readOnlyHint: false) but provide no additional detail. The description adds only the ambiguous word 'restartable', which may hint at checkpointing but is not explained. It does not mention the required lease_token proof, potential side effects, or any idempotency nuances (despite the idempotency_key parameter). This leaves 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.

Conciseness4/5

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

The description is a single sentence and is very concise with no filler. It front-loads the action. However, 'restartable' is unclear and might mislead; a slightly more explicit phrase like 'save an attempt note that can be used to resume work' would be both concise and clearer. Still, it earns a high score for structure.

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 10 parameters including sensitive auth fields (lease_token), idempotency control, and an enum, the description is too thin. It does not explain the lease requirement, the meaning of 'restartable', or how the different note kinds should be used. The output schema exists, so return values are not necessary, but the high-level operational context is missing.

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 itself documents all parameters with descriptions. The tool description adds no parameter-specific meaning beyond 'restartable', which does not map to any one schema field. The baseline of 3 is appropriate since the schema carries the burden.

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 ('Append'), the resource (a note to an attempt), and the scope (checkpoint, finding, warning, or progress). It distinguishes from sibling tools like add_comment or record_decision by referencing attempt-specific notes. Though 'restartable' is slightly vague, the core 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 is provided on when to use this tool versus alternatives. There is no mention of prerequisites (e.g., active attempt lease), when to choose 'checkpoint' vs 'progress', or situations where another tool like record_decision might be more appropriate. The description is a bare statement with no exclusions or contextual hints.

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

supersede_review_requestA
DestructiveIdempotent

Supersede an open or claimed review request using its current version. Deprecated: prefer replace_review_request.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
expected_versionYes
review_request_idYesCanonical review request identifier (ULID).
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
statusYes
versionYes
issue_idYes
claimableYes
created_atYes
resolved_atNo
artifact_idsYes
supersedes_idNo
target_event_idYes
active_attempt_idNo
target_issue_versionYes

TDQS

A4.6/5.0
Behavior4/5

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

While annotations already declare destructiveHint=true and idempotentHint=true, the description adds the important deprecation warning and the concurrency-related detail 'using its current version', which hints at optimistic locking via expected_version. This is meaningful context beyond the structured fields, though it stops short of explaining the exact effects of superseding.

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 only two sentences, front-loading the core action and immediately adding a deprecation note. No redundant information. 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?

With the output schema present and annotations covering safety/idempotency, the description provides sufficient context for a deprecated tool. It mentions the valid target state ('open or claimed') and the version mechanism. However, it does not elaborate on what 'supersede' does to the original request (e.g., whether it becomes closed), which would be helpful but is not critical given the explicit deprecation direction.

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 75%, with expected_version undocumented. The description's phrase 'using its current version' directly clarifies the role of expected_version (the current version to check against). This adds semantic value beyond the schema, while the remaining params are already described.

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 the specific verb 'Supersede' with a clear resource ('an open or claimed review request') and a mechanism ('using its current version'). It also explicitly distinguishes this tool from sibling `replace_review_request` by marking itself as deprecated, which resolves ambiguity.

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 gives an explicit when-to-use context ('open or claimed review request') and directly names an alternative ('prefer replace_review_request'), telling the agent that this tool should not be used in favor of the replacement. This is clear, actionable guidance.

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

update_issueA
DestructiveIdempotent

Patch one issue using its current version for optimistic concurrency.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNo
changesYes
issue_idYesCanonical issue identifier (ULID or ISSUE-N).
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
idempotency_keyNo
expected_versionYes
agent_session_handleNoOptional durable session handle for request attribution.
create_missing_labelsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already state readOnlyHint=false and destructiveHint=true, so the agent knows this is a mutating and potentially destructive operation. The description adds the concurrency-control mechanism (using current version) but does not elaborate on conflict behavior, side effects, or the meaning of idempotentHint. It contributes some value beyond annotations but not extensive detail.

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 that conveys the core purpose without waste. Every word earns its place, making it highly concise and well-structured.

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

Completeness2/5

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

Given the tool's complexity (8 parameters, nested objects, destructive hint, optimistic concurrency), the description is too minimal. It does not explain error handling on version conflict, behavior of create_missing_labels, or how the view parameter affects output. An output schema exists but does not compensate for missing behavioral and parameter context.

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

Parameters2/5

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

Schema description coverage is only 38%, so the description must compensate for undocumented parameters. It only hints at expected_version ('using its current version'), while other critical parameters like changes, idempotency_key, create_missing_labels, and view remain unexplained. The description adds little to parameter understanding.

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

Purpose5/5

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

The description clearly states the tool's function: 'Patch one issue using its current version for optimistic concurrency.' It uses a specific verb ('patch'), names the resource ('one issue'), and adds a distinguishing detail (optimistic concurrency) that separates it from sibling tools like create_issue or archive_issue.

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: when updating an issue with optimistic concurrency, requiring the current version. It does not explicitly list exclusions or alternative tools, but the context is unambiguous enough for an agent to infer appropriate use.

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

validate_importA
Read-onlyIdempotent

Validate a logical project import document without writing anything.

ParametersJSON Schema
NameRequiredDescriptionDefault
documentNo
source_uriNo
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
agent_session_handleNoOptional durable session handle for request attribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countsYes
writesYes
conflictsYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the 'without writing anything' phrase is largely redundant. The description adds minimal behavioral context beyond what annotations provide, but it does reinforce the non-mutating nature against sibling tools like apply_import.

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 that conveys the action and the key constraint without extraneous detail. Every word adds value.

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

Completeness3/5

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

Given the existence of an output schema and rich annotations, the description does not need to explain return values. However, it does not clarify the purpose of document versus source_uri, which are both optional and undocumented in the schema. This is a notable gap for a validation tool with 4 parameters, though the overall simplicity of the tool mitigates the impact.

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

Parameters2/5

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

Schema coverage is 50%, with document and source_uri having no descriptions. The tool description does not explain the relationship between these parameters or when to use one over the other. The only parameter guidance comes from the schema for project_ref and agent_session_handle, leaving the core input parameters ambiguously specified.

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 'validate' and the resource 'logical project import document,' while the phrase 'without writing anything' distinguishes it from apply_import and other mutation tools. This 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 implies a dry-run validation use case by stating 'without writing anything,' but it does not explicitly mention alternatives or when to avoid using the tool. The context is clear enough for an agent to infer the primary purpose, but lacks explicit exclusion guidance.

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

validate_issue_planA
Read-onlyIdempotent

Normalize and validate a bounded multi-issue plan without writing it.

ParametersJSON Schema
NameRequiredDescriptionDefault
issuesYes
decisionsYes
relationsYes
project_refNoProject reference returned by open_project. Pass it explicitly for stateless routing; omit only when using a configured default.
agent_session_handleNoOptional durable session handle for request attribution.
include_normalized_planNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
validYes
errorsYes
summaryYes
warningsYes
next_actionsYes
normalized_planNo
plan_fingerprintYes
normalization_changedYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds valuable context by stating no write occurs, which reinforces the annotation. It also introduces 'normalize', hinting at transformation behavior beyond what annotations cover, though it does not detail normalization rules.

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 filler words. It clearly states the action, object, and key side-effect constraint, making it highly efficient.

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

Completeness3/5

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

Given the tool's complexity (nested arrays, multiple required parameters) and the existence of an output schema, the description is minimal but adequate. It explains the core purpose and the no-write constraint, but does not elaborate on what 'normalize' entails or what validation criteria are enforced. The annotations and output schema fill some gaps, but not all.

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

Parameters2/5

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

Schema description coverage is only 33% (only project_ref and agent_session_handle have descriptions). The tool description provides no parameter-level guidance, leaving the agent to infer the meaning of issues, relations, decisions, and include_normalized_plan from names alone. With low coverage, the description needed to compensate but did not.

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

Purpose5/5

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

The description uses specific verbs ('Normalize and validate') and a clear resource ('bounded multi-issue plan'), and explicitly distinguishes from writing by adding 'without writing it'. This makes the tool's purpose unmistakable and differentiates it from sibling tools like apply_issue_plan.

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 phrase 'without writing it' clearly indicates a read-only validation/preview use case, contrasting with apply_issue_plan. However, it does not explicitly state when to prefer this over validate_import or when not to use it, so it falls just short of full guidance.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 33 tool updatesv1.2.1
    • Changedadd_comment1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedapply_import1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedapply_issue_plan1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedarchive_issue1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedcancel_review_request1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedclaim_issue5 fields changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
      • addedInput schema / properties / idempotency_key / description
        Added value: +"Optional key that replays the same claim request."
      • changedInput schema / properties / issue_id / description
        Previous value: -"Canonical issue identifier (ULID or ISSUE-N)."New value: +"Claimable ready or review issue (ULID or ISSUE-N)."
      • addedInput schema / properties / lease_seconds / description
        Added value: +"Requested lease duration in seconds."
      • addedInput schema / properties / view / description
        Added value: +"Response shape; compact is the default."
    • Changedcreate_agent_session5 fields changed
      • addedInput schema / properties / agent_label / description
        Added value: +"Optional human-readable agent identity."
      • addedInput schema / properties / client_name / description
        Added value: +"Required client identity."
      • addedInput schema / properties / client_version / description
        Added value: +"Optional client version."
      • addedInput schema / properties / instance_key / description
        Added value: +"Optional stable key for this client instance."
      • addedInput schema / properties / model / description
        Added value: +"Optional model identifier."
    • Changedcreate_issue1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedcreate_review_request1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedexport_project1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedfinish_attempt1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedget_changes1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedget_issue1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedget_issue_activity1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedget_issue_graph9 fields changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
      • addedInput schema / properties / depth / description
        Added value: +"Relation hops from root; default 2."
      • addedInput schema / properties / direction / description
        Added value: +"Relation traversal direction."
      • addedInput schema / properties / include_hierarchy / description
        Added value: +"Include derived epic hierarchy edges."
      • addedInput schema / properties / include_terminal / description
        Added value: +"Include terminal issue nodes."
      • addedInput schema / properties / max_nodes / description
        Added value: +"Maximum returned nodes; default 100."
      • addedInput schema / properties / relation_types / description
        Added value: +"Optional relation kinds; empty includes all."
      • changedInput schema / properties / root_issue_id / description
        Previous value: -"Canonical issue identifier (ULID or ISSUE-N)."New value: +"Issue at the graph traversal root."
      • addedInput schema / properties / view / description
        Added value: +"Only compact graph nodes are available."
    • Changedget_planning_graph1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedget_project1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedget_review_request1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedget_work_context4 fields changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
      • addedInput schema / properties / include / description
        Added value: +"Optional unique context sections; empty returns the compact default."
      • changedInput schema / properties / issue_id / description
        Previous value: -"Canonical issue identifier (ULID or ISSUE-N)."New value: +"Issue whose work context to load."
      • addedInput schema / properties / limits / description
        Added value: +"Optional 1-20 bounds for requested list sections only."
    • Changedlist_decisions1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedlist_issues1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedlist_labels1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedlist_review_requests1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedmanage_issue_relation1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedrecord_decision1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedrenew_attempt1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedreplace_review_request1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedsave_attempt_note9 fields changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
      • addedInput schema / properties / artifacts / description
        Added value: +"Optional artifacts created or referenced by this work."
      • addedInput schema / properties / attempt_id / description
        Added value: +"Active attempt receiving the note."
      • addedInput schema / properties / content / description
        Added value: +"Required restartable note content."
      • addedInput schema / properties / idempotency_key / description
        Added value: +"Optional key that replays the same note request."
      • addedInput schema / properties / important / description
        Added value: +"Marks the note as important."
      • addedInput schema / properties / kind / description
        Added value: +"How the note should be classified."
      • addedInput schema / properties / lease_token / description
        Added value: +"Secret proof of the active attempt lease."
      • addedInput schema / properties / next_steps / description
        Added value: +"Optional concrete actions after this note."
    • Changedsearch11 fields changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
      • addedInput schema / properties / cursor / description
        Added value: +"Cursor from a previous page."
      • addedInput schema / properties / entity_types / description
        Added value: +"Optional result types; empty includes all."
      • changedInput schema / properties / epic_id / description
        Previous value: -"Canonical issue identifier (ULID or ISSUE-N)."New value: +"Optional epic scope (ULID or ISSUE-N)."
      • addedInput schema / properties / include_archived / description
        Added value: +"Include archived issue records."
      • changedInput schema / properties / issue_id / description
        Previous value: -"Canonical issue identifier (ULID or ISSUE-N)."New value: +"Optional issue scope (ULID or ISSUE-N)."
      • addedInput schema / properties / labels / description
        Added value: +"Optional label filter."
      • addedInput schema / properties / limit / description
        Added value: +"0 uses the default; 1-100 caps results."
      • addedInput schema / properties / query / description
        Added value: +"Required full-text terms."
      • addedInput schema / properties / snippet_length / description
        Added value: +"0 uses the default; 1-1000 caps excerpts in runes."
      • addedInput schema / properties / statuses / description
        Added value: +"Optional issue-status filter."
    • Changedsupersede_review_request1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedupdate_issue1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedvalidate_import1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
    • Changedvalidate_issue_plan1 field changed
      • addedInput schema / properties / agent_session_handle / description
        Added value: +"Optional durable session handle for request attribution."
  2. 35 tool updatesv1.2.0
    • First observedadd_comment
    • First observedapply_import
    • First observedapply_issue_plan
    • First observedarchive_issue
    • First observedcancel_review_request
    • First observedclaim_issue
    • First observedcreate_agent_session
    • First observedcreate_issue
    • First observedcreate_review_request
    • First observedend_agent_session
    • First observedexport_project
    • First observedfinish_attempt
    • First observedget_changes
    • First observedget_issue
    • First observedget_issue_activity
    • First observedget_issue_graph
    • First observedget_planning_graph
    • First observedget_project
    • First observedget_review_request
    • First observedget_work_context
    • First observedlist_decisions
    • First observedlist_issues
    • First observedlist_labels
    • First observedlist_review_requests
    • First observedmanage_issue_relation
    • First observedopen_project
    • First observedrecord_decision
    • First observedrenew_attempt
    • First observedreplace_review_request
    • First observedsave_attempt_note
    • First observedsearch
    • First observedsupersede_review_request
    • First observedupdate_issue
    • First observedvalidate_import
    • First observedvalidate_issue_plan

TDQS

B3.4/5.0

Scored across 35 tools

Disambiguation2/5

Several tools have overlapping purposes: create_review_request, replace_review_request, and supersede_review_request all handle review request creation/supersedure, with two marked deprecated. Also, get_planning_graph and get_work_context both provide context-heavy views, and the abundance of similar verbs (create/list/get/manage) creates boundary confusion despite useful descriptions.

Naming Consistency4/5

Tool names overwhelmingly use a consistent snake_case verb_noun pattern (e.g., list_issues, renew_attempt, archive_issue). The only notable deviation is the single-word 'search' and a few unconventional verb choices like 'open_project' and 'manage_issue_relation', which are minor and do not obscure the overall pattern.

Tool Count2/5

With 35 tools, the server is well above the 'too many (25+)' threshold. The count is inflated by deprecated tools (create_review_request, supersede_review_request) that could be removed, and the sheer number makes the tool surface unnecessarily heavy for agents to navigate.

Completeness4/5

The server covers a comprehensive domain: issue lifecycle, review requests, attempts/leases, decisions, relations, sessions, import/export, and planning graphs. Minor gaps like lacking a direct 'list_relations' tool are mitigated by get_issue_graph, but the presence of deprecated tools and some redundancies suggest the surface is not fully polished.

Maintenance

ActivityNo data
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    A local-first MCP server that provides AI agents with safe codebase access through file discovery, hybrid lexical-semantic search, and project introspection. It features durable local memory and semantic indexing while keeping all data and processing entirely on your local machine.
    74
    14
    6
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    A lightweight, fully local MCP server that provides AI coding tools with a shared SQLite memory store and built-in conflict arbitration, enabling structured memory sharing across tools like ZCode, Codex, Cursor, and Claude Code without external dependencies.
    4
    7
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    Local MCP server giving AI coding agents (Claude Code, Cursor, VS Code/JetBrains Copilot) a shared, persistent memory of your projects and every bug/issue faced during development. Stateless, plain-file storage (AGENTS.md + issues.jsonl) — no database.
    16
    238
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Odrin/rhizome-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server