Skip to main content
Glama
Knuckles-Team

Repository Manager

Repository Manager

CLI or API | MCP | Agent

PyPI - Version MCP Server PyPI - Downloads GitHub Repo stars GitHub forks GitHub contributors PyPI - License GitHub GitHub last commit (by committer) GitHub pull requests GitHub closed pull requests GitHub issues GitHub top language GitHub language count GitHub repo size GitHub repo file count (file type) PyPI - Wheel PyPI - Implementation

Version: 3.5.2

Documentation — Installation, deployment, usage across the CLI, API, MCP, and agent interfaces, and the phased multi-repository release workflows are maintained in the official documentation.


Related MCP server: gitlab-api

Overview

Repository Manager is a production-grade Agent and Model Context Protocol (MCP) server designed to interface directly with Manage the operator's git projects.


Key Features

  • Consolidated Action-Routed MCP Tools: Minimizes token overhead and eliminates tool bloat in LLM contexts by grouping methods into optimized, togglable tool modules.

  • Enterprise-Grade Security: Complete support for Eunomia policies, OIDC token delegation, and granular execution context tracking.

  • Integrated Graph Agent: Built-in Pydantic AI agent supporting the Agent Control Protocol (ACP) and standard Web interfaces (AG-UI).

  • Native Telemetry & Tracing: Out-of-the-box OpenTelemetry exports and native Langfuse tracing.


CLI or API

This agent wraps the Manage the operator's git projects API. The operator can interact with it programmatically or via its integrated execution entrypoints.

Detailed instructions on how to use the underlying API wrappers, extended schema bindings, and developer SDK references are maintained in docs/index.md.


MCP

This server use dynamic Action-Routed tools to optimize token overhead and maximize IDE compatibility.

Available MCP Tools

This table is auto-generated from the live server — do not edit by hand.

Condensed action-routed tools (MCP_TOOL_MODE=condensed)

MCP Tool

Toggle Env Var

Description

repository_ingest_repositories

MISCTOOL

Natively ingest git repositories into epistemic-graph as typed :GitRepository nodes.

rm_build_*

PROJECT_MANAGEMENTTOOL

Content-addressed build broker for ANY repository (CONCEPT:RM-TASK-LEDGER).

rm_concepts_*

DEVELOPMENT_SURFACESTOOL

Concept-id claim coordination against RMDD-16's central authority.

rm_docs_readiness_*

PROJECT_MANAGEMENTTOOL

Preview/apply/verify artifacts after per-repository readiness setup.

rm_gates_*

PROJECT_MANAGEMENTTOOL

Run and inspect the two-tier (fast/heavy) pre-commit gate across repos.

rm_git_*

GIT_OPERATIONSTOOL

Typed bulk Git operations; arbitrary host commands are prohibited.

rm_lane_*

PROJECT_MANAGEMENTTOOL

The lane lifecycle for concurrent agents and humans (CONCEPT:RM-LANE-DOCTOR).

rm_merge_queue_*

PROJECT_MANAGEMENTTOOL

Serialized merge queue for ANY git repository (CONCEPT:RM-MERGE-QUEUE).

rm_projects_*

PROJECT_MANAGEMENTTOOL

Bulk install, build, and validate Python projects.

rm_remote_workers_*

DEVELOPMENT_SURFACESTOOL

Remote worker registry, immutable source staging, and artifact transport.

rm_workspace_*

WORKSPACE_MANAGEMENTTOOL

Core workspace organization, configuration, and maintenance.

rm_worktree_*

PROJECT_MANAGEMENTTOOL

Manage git worktrees for concurrent multi-session development (CONCEPT:RM-WORKTREE).

Verbose 1:1 API-mapped tools (MCP_TOOL_MODE=verbose or both)

MCP Tool

Toggle Env Var

Description

repository_manager_add_project

GITTOOL

Stage all changes (git add -A) for a single Git project.

repository_manager_add_projects

GITTOOL

Stage all changes for multiple projects in parallel.

repository_manager_build_projects

GITTOOL

Build projects serially so compilation cannot exhaust the workstation.

repository_manager_bulk_bump

GITTOOL

Bumps the version for all projects in the workspace in parallel.

repository_manager_bump_version

GITTOOL

Bump the version of the project using bump2version.

repository_manager_cleanup_artifacts

GITTOOL

Removes test artifacts and temporary files from the specified directory.

repository_manager_clone_projects

GITTOOL

Clone all specified Git projects in parallel using multiple threads.

repository_manager_clone_repository

GITTOOL

Clone a single Git repository to a specific target path.

repository_manager_commit_code_project

GITTOOL

Stage ALL changes (git add -A), optionally gate on pre-commit, then commit.

repository_manager_commit_code_projects

GITTOOL

Concurrently stage + pre-commit + commit feature code across projects.

repository_manager_commit_project

GITTOOL

Commit staged changes (git commit -m "{message}") for a single Git project.

repository_manager_commit_projects

GITTOOL

Commit staged changes for multiple projects in parallel.

repository_manager_create_project

GITTOOL

Create a new project directory and initialize it as a git repository.

repository_manager_discover_projects

GITTOOL

Scan self.path for immediate subdirectories containing a .git folder.

repository_manager_generate_markdown_summary

GITTOOL

Generates a beautiful markdown summary of bulk operation results.

repository_manager_generate_workspace_template

GITTOOL

Generates a workspace.yml template at the specified path.

repository_manager_get_consolidated_skill_paths

GITTOOL

Returns absolute paths to the 15 specific building and documentation skills.

repository_manager_get_project_map

GITTOOL

Returns the mapping of repository URLs to their local project paths.

repository_manager_get_readme

GITTOOL

Get the content and path of the README.md file in the specified path.

repository_manager_get_workspace_projects

GITTOOL

Returns a list of project basenames (e.g. 'genius-agent') defined in the workspace.

repository_manager_git_action

GITTOOL

Execute a Git command in the specified directory.

repository_manager_install_project

GITTOOL

Install a Python project using pip install -e .[extra].

repository_manager_install_projects

GITTOOL

Bulk installs Python and Node projects in the workspace.

repository_manager_list_branches

GITTOOL

Returns a dictionary mapping project basenames to their current active git branch.

repository_manager_load_projects_from_yaml

GITTOOL

Loads repository URLs from a YAML workspace file using Pydantic models.

repository_manager_maintain_projects

GITTOOL

Execute the phased bumpversion workflow: pre-commits + phased bumping.

repository_manager_phased_bumpversion

GITTOOL

Execute the phased bumpversion workflow: pre-commits + phased bumping.

repository_manager_phased_push

GITTOOL

Execute the phased git push workflow.

repository_manager_pre_commit

GITTOOL

Execute pre-commit commands in the specified path.

repository_manager_pre_commit_projects

GITTOOL

Execute pre-commit commands for all projects in parallel.

repository_manager_pull_project

GITTOOL

Pull updates for a single Git project and optionally checkout the default branch.

repository_manager_pull_projects

GITTOOL

Pull updates for multiple projects in parallel.

repository_manager_push_project

GITTOOL

Atomically publish a clean checkout's exact current branch and release tag.

repository_manager_push_projects

GITTOOL

Push updates for multiple projects in parallel.

repository_manager_save_workspace_config

GITTOOL

Saves the current or provided WorkspaceConfig to a YAML file.

repository_manager_set_threads

GITTOOL

Set the number of threads for parallel processing.

repository_manager_setup_from_yaml

GITTOOL

Sets up the workspace structure from a YAML file.

repository_manager_test_projects

GITTOOL

Execute pytests for the specified projects in parallel.

repository_manager_update_dependency

GITTOOL

Update a package's pinned version in a deps file (pyproject OR requirements).

repository_manager_validate_and_release

GITTOOL

Validate projects in parallel, optionally triggering a release if successful.

repository_manager_validate_single_project

GITTOOL

Validates a single repository by running its FAST-tier gates.

repository_manager_worktree_hygiene

GITTOOL

Audit (and optionally prune) session worktrees as a release-flow step.

rm_worktree__add

PROJECT_MANAGEMENTTOOL

Manage git worktrees for concurrent multi-session development (CONCEPT:RM-WORKTREE).

rm_worktree__audit

PROJECT_MANAGEMENTTOOL

Manage git worktrees for concurrent multi-session development (CONCEPT:RM-WORKTREE).

rm_worktree__bulk_add

PROJECT_MANAGEMENTTOOL

Manage git worktrees for concurrent multi-session development (CONCEPT:RM-WORKTREE).

rm_worktree__list

PROJECT_MANAGEMENTTOOL

Manage git worktrees for concurrent multi-session development (CONCEPT:RM-WORKTREE).

rm_worktree__merge

PROJECT_MANAGEMENTTOOL

Manage git worktrees for concurrent multi-session development (CONCEPT:RM-WORKTREE).

rm_worktree__prune

PROJECT_MANAGEMENTTOOL

Manage git worktrees for concurrent multi-session development (CONCEPT:RM-WORKTREE).

rm_worktree__remove

PROJECT_MANAGEMENTTOOL

Manage git worktrees for concurrent multi-session development (CONCEPT:RM-WORKTREE).

rm_worktree__reset_branch

PROJECT_MANAGEMENTTOOL

Manage git worktrees for concurrent multi-session development (CONCEPT:RM-WORKTREE).

rm_worktree__sync

PROJECT_MANAGEMENTTOOL

Manage git worktrees for concurrent multi-session development (CONCEPT:RM-WORKTREE).

12 action-routed tool(s) · 51 verbose 1:1 tool(s). Each is enabled unless its <DOMAIN>TOOL toggle is set false; MCP_TOOL_MODE selects the surface (intent default — the six verb-tools, granular set loaded on demand · condensed action-routed · verbose 1:1 · both). Auto-generated — do not edit.

Detailed tool schemas, parameter shapes, and validation constraints are preserved in docs/usage.md.

Dynamic Tool Selection & Visibility

This MCP server supports dynamic toolset selection and visibility filtering at runtime. This allows the operator to restrict the set of exposed tools to prevent blowing up the LLM's context window.

The operator can configure tool filtering via multiple input channels:

  • CLI Arguments: Pass --tools or --toolsets (or their disabled counterparts --disabled-tools and --disabled-toolsets) during startup.

  • Environment Variables: Define standard environment variables:

    • MCP_ENABLED_TOOLS / MCP_DISABLED_TOOLS

    • MCP_ENABLED_TAGS / MCP_DISABLED_TAGS

  • HTTP SSE Request Headers: Pass custom headers during transport initialization:

    • x-mcp-enabled-tools / x-mcp-disabled-tools

    • x-mcp-enabled-tags / x-mcp-disabled-tags

  • HTTP SSE Request Query Parameters: Append query parameters directly to the operator's transport connection URL:

    • ?tools=tool1,tool2

    • ?tags=tag1

When query strings or parameters are provided, an LLM-free Knowledge Graph resolution layer (using DynamicToolOrchestrator) matches query intents against known tool tags, names, or descriptions, with safe fallback and automated 24-hour background cache refreshing.


MCP Configuration Examples

Install the connector-focused [mcp] extra. Examples use repository-manager[mcp] to add FastMCP / FastAPI through agent-connector-sdk; the required Agent Connector SDK core still carries epistemic-graph[full]. The [agent-runtime] extra additionally enables model orchestration.

stdio Transport (local IDEs — Cursor, Claude Desktop, VS Code)

{
  "mcpServers": {
    "repository-manager-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "repository-manager[mcp]",
        "repository-manager-mcp"
      ],
      "env": {
        "MCP_TOOL_MODE": "intent",
        "BUILDTOOL": "True",
        "CONCEPTSTOOL": "True",
        "DEVELOPMENT_SURFACESTOOL": "True",
        "DOCS_READINESSTOOL": "True",
        "GATESTOOL": "True",
        "GH_TOKEN": "your_github_token_here",
        "GITHUB_TOKEN": "your_github_token_here",
        "GITLAB_HOST": "https://gitlab.com",
        "GITLAB_PRIVATE_TOKEN": "your_gitlab_token_here",
        "GITLAB_TOKEN": "your_gitlab_token_here",
        "GITLAB_URL": "https://gitlab.com",
        "GIT_OPERATIONSTOOL": "True",
        "LANETOOL": "True",
        "MERGE_QUEUETOOL": "True",
        "MERGE_QUEUE_DRAIN_DEADLINE_SECONDS": "180",
        "MERGE_QUEUE_GLOBAL_DEADLINE_SECONDS": "3600",
        "MERGE_QUEUE_HEAVY_DEADLINE_SECONDS": "18000",
        "MERGE_QUEUE_LEASE_TTL_SECONDS": "14400",
        "MERGE_QUEUE_MAX_AGE_SECONDS": "86400",
        "MISCTOOL": "True",
        "PROJECTTOOL": "True",
        "PROJECT_MANAGEMENTTOOL": "True",
        "REMOTE_WORKERSTOOL": "True",
        "REPOSITORY_MANAGER_DEFAULT_BRANCH": "main",
        "REPOSITORY_MANAGER_THREADS": "12",
        "RM_CPU_FRACTION": "0.20",
        "RM_GATE_BEFORE_PUSH": "true",
        "RM_GATE_TIMEOUT_SECONDS": "1800",
        "RM_JOB_STALE_SECONDS": "1800",
        "RM_MAX_WORKERS": "8",
        "RM_RAM_FRACTION": "0.20",
        "RM_WORKER_MEM_GB": "1.5",
        "WORKSPACE_MANAGEMENTTOOL": "True",
        "WORKSPACE_YML": "workspace.yml",
        "WORKTREETOOL": "True"
      }
    }
  }
}

Runtime references require an alias-aware launcher such as Arbora. Other launchers must omit those entries and inject the resolved values through their own runtime secret boundary.

Streamable-HTTP Transport (networked / production)

{
  "mcpServers": {
    "repository-manager-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "repository-manager[mcp]",
        "repository-manager-mcp",
        "--transport",
        "streamable-http",
        "--port",
        "8000"
      ],
      "env": {
        "TRANSPORT": "streamable-http",
        "HOST": "127.0.0.1",
        "PORT": "8000",
        "MCP_TOOL_MODE": "intent",
        "BUILDTOOL": "True",
        "CONCEPTSTOOL": "True",
        "DEVELOPMENT_SURFACESTOOL": "True",
        "DOCS_READINESSTOOL": "True",
        "GATESTOOL": "True",
        "GH_TOKEN": "your_github_token_here",
        "GITHUB_TOKEN": "your_github_token_here",
        "GITLAB_HOST": "https://gitlab.com",
        "GITLAB_PRIVATE_TOKEN": "your_gitlab_token_here",
        "GITLAB_TOKEN": "your_gitlab_token_here",
        "GITLAB_URL": "https://gitlab.com",
        "GIT_OPERATIONSTOOL": "True",
        "LANETOOL": "True",
        "MERGE_QUEUETOOL": "True",
        "MERGE_QUEUE_DRAIN_DEADLINE_SECONDS": "180",
        "MERGE_QUEUE_GLOBAL_DEADLINE_SECONDS": "3600",
        "MERGE_QUEUE_HEAVY_DEADLINE_SECONDS": "18000",
        "MERGE_QUEUE_LEASE_TTL_SECONDS": "14400",
        "MERGE_QUEUE_MAX_AGE_SECONDS": "86400",
        "MISCTOOL": "True",
        "PROJECTTOOL": "True",
        "PROJECT_MANAGEMENTTOOL": "True",
        "REMOTE_WORKERSTOOL": "True",
        "REPOSITORY_MANAGER_DEFAULT_BRANCH": "main",
        "REPOSITORY_MANAGER_THREADS": "12",
        "RM_CPU_FRACTION": "0.20",
        "RM_GATE_BEFORE_PUSH": "true",
        "RM_GATE_TIMEOUT_SECONDS": "1800",
        "RM_JOB_STALE_SECONDS": "1800",
        "RM_MAX_WORKERS": "8",
        "RM_RAM_FRACTION": "0.20",
        "RM_WORKER_MEM_GB": "1.5",
        "WORKSPACE_MANAGEMENTTOOL": "True",
        "WORKSPACE_YML": "workspace.yml",
        "WORKTREETOOL": "True"
      }
    }
  }
}

Alternatively, connect to a pre-deployed Streamable-HTTP instance by url:

{
  "mcpServers": {
    "repository-manager-mcp": {
      "url": "http://localhost:8000/repository-manager-mcp/mcp"
    }
  }
}

Run a reviewed container image as a least-privilege stdio child (no listener or published port):

docker run -i --rm \
  --read-only \
  --cap-drop=ALL \
  --security-opt=no-new-privileges \
  --pids-limit=256 \
  --tmpfs /tmp:rw,noexec,nosuid,nodev,size=64m \
  -e TRANSPORT=stdio \
  -e MCP_TOOL_MODE=intent \
  -e BUILDTOOL=True \
  -e CONCEPTSTOOL=True \
  -e DEVELOPMENT_SURFACESTOOL=True \
  -e DOCS_READINESSTOOL=True \
  -e GATESTOOL=True \
  -e GH_TOKEN=your_github_token_here \
  -e GITHUB_TOKEN=your_github_token_here \
  -e GITLAB_HOST=https://gitlab.com \
  -e GITLAB_PRIVATE_TOKEN=your_gitlab_token_here \
  -e GITLAB_TOKEN=your_gitlab_token_here \
  -e GITLAB_URL=https://gitlab.com \
  -e GIT_OPERATIONSTOOL=True \
  -e LANETOOL=True \
  -e MERGE_QUEUETOOL=True \
  -e MERGE_QUEUE_DRAIN_DEADLINE_SECONDS=180 \
  -e MERGE_QUEUE_GLOBAL_DEADLINE_SECONDS=3600 \
  -e MERGE_QUEUE_HEAVY_DEADLINE_SECONDS=18000 \
  -e MERGE_QUEUE_LEASE_TTL_SECONDS=14400 \
  -e MERGE_QUEUE_MAX_AGE_SECONDS=86400 \
  -e MISCTOOL=True \
  -e PROJECTTOOL=True \
  -e PROJECT_MANAGEMENTTOOL=True \
  -e REMOTE_WORKERSTOOL=True \
  -e REPOSITORY_MANAGER_DEFAULT_BRANCH=main \
  -e REPOSITORY_MANAGER_THREADS=12 \
  -e RM_CPU_FRACTION=0.20 \
  -e RM_GATE_BEFORE_PUSH=true \
  -e RM_GATE_TIMEOUT_SECONDS=1800 \
  -e RM_JOB_STALE_SECONDS=1800 \
  -e RM_MAX_WORKERS=8 \
  -e RM_RAM_FRACTION=0.20 \
  -e RM_WORKER_MEM_GB=1.5 \
  -e WORKSPACE_MANAGEMENTTOOL=True \
  -e WORKSPACE_YML=workspace.yml \
  -e WORKTREETOOL=True \
  registry.example.invalid/repository-manager@sha256:<digest> repository-manager-mcp

For containerized network HTTP, supply an authenticated TLS ingress (or direct server TLS), exact MCP_ALLOWED_HOSTS, and an exact trusted-proxy CIDR policy through the operator-owned deployment profile. The generator does not emit an unauthenticated non-loopback listener.

Auto-generated from the code-read env surface (MCP_TOOL_MODE + package vars) — do not edit.

Additional Deployment Options

repository-manager can run as a local stdio process or container, or behind a remote network boundary. The Deployment guide carries the detailed transport contract.

  • Local container — launch a reviewed immutable image as a least-privilege stdio child with no listener or published port.

  • Remote URL — connect through an operator-supplied authenticated HTTPS ingress. Keep its URL, outbound identity references, trust profile, and exact MCP_ALLOWED_HOSTS in AgentConfig.

Environment Variables

Package environment variables

Variable

Example

Description

HOST

0.0.0.0

PORT

8000

TRANSPORT

stdio

options: stdio, streamable-http, sse

ENABLE_OTEL

True

OTEL_EXPORTER_OTLP_ENDPOINT

http://localhost:8080/api/public/otel

OTEL_EXPORTER_OTLP_PUBLIC_KEY_REF

secret://observability/otlp-public-key

OTEL_EXPORTER_OTLP_SECRET_KEY_REF

secret://observability/otlp-secret-key

OTEL_EXPORTER_OTLP_PROTOCOL

http/protobuf

EUNOMIA_TYPE

none

options: none, embedded, remote

EUNOMIA_POLICY_FILE

mcp_policies.json

EUNOMIA_REMOTE_URL

http://eunomia-server:8000

CONNECTOR_CONFIG_DIR

—

override of ~/.config/agent-connector-sdk for the capacity-seed inventory.yaml lookup

CONNECTOR_WORKSPACE_ROOT

—

runtime-injected root; never persist a machine path

REPOSITORY_MANAGER_WORKSPACE

—

optional override of CONNECTOR_WORKSPACE_ROOT

WORKSPACE_PATH

—

compatibility workspace-root override

WORKSPACE_YML

workspace.yml

prefer the XDG agent-connector-sdk copy at runtime

WORKSPACE_REPORTS

—

optional report directory; defaults beneath the workspace root

REPOSITORY_MANAGER_WORKTREE_ROOT

—

optional worktree root; injected at runtime

REPOSITORY_MANAGER_DEFAULT_BRANCH

main

default branch name for git operations

REPOSITORY_MANAGER_THREADS

12

parallel threads for git operations

RM_MAX_WORKERS

8

explicit worker-count override (skips auto-sizing from CPU count)

RM_JOB_STALE_SECONDS

1800

seconds before an in-flight job is treated as stale by the watchdog

RM_GATE_BEFORE_PUSH

true

run the pre-commit gate before pushing (set false to bypass)

RM_TASK_LEDGER_FLEET

—

optional: caller identity (claude/codex/human/vllm) recorded against a task_queue reservation

RM_TASK_LEDGER_SESSION

—

optional: caller's lane/session id recorded against a task_queue reservation

RM_DEPENDENCY_READINESS_OVERRIDE_REASON

—

optional: non-empty human reason bypasses the dependency-readiness gate

UV_INDEX_URL

—

optional: package index consulted by the dependency-readiness artifact-availability check

UV_EXTRA_INDEX_URL

—

optional: space-separated extra package indexes for the dependency-readiness check

PIP_INDEX_URL

—

optional: pip fallback index consulted by the dependency-readiness artifact-availability check

PIP_EXTRA_INDEX_URL

—

optional: space-separated pip fallback extra indexes for the dependency-readiness check

REPOSITORY_MANAGER_CLONE_FILTER

—

optional git clone filter: blob:none or tree:0

CODE_ENHANCER_SCRIPTS_DIR

—

optional code-enhancer helper scripts directory

COMMIT_IDENTITY_ALLOWLIST

—

path to the fleet commit-identity allowlist JSON (shared with pipelines_hooks' commit gate); read by repository-manager-governance history-identity

GITLAB_URL

https://gitlab.com

GitLab base URL (alias: GITLAB_HOST)

GITLAB_HOST

https://gitlab.com

legacy alias for GITLAB_URL

GITLAB_TOKEN

secret-injected

GitLab access token (alias: GITLAB_PRIVATE_TOKEN)

GITLAB_PRIVATE_TOKEN

secret-injected

legacy alias for GITLAB_TOKEN

GITHUB_TOKEN

secret-injected

GitHub access token (alias: GH_TOKEN)

GH_TOKEN

secret-injected

legacy alias for GITHUB_TOKEN

GIT_OPERATIONSTOOL

True

These names match the authoritative "Toggle Env Var" column in the README MCP tools table (condensed action-routed surface).

PROJECT_MANAGEMENTTOOL

True

WORKSPACE_MANAGEMENTTOOL

True

MISCTOOL

True

DEVELOPMENT_SURFACESTOOL

True

LANETOOL

True

WORKTREETOOL

True

MERGE_QUEUETOOL

True

BUILDTOOL

True

PROJECTTOOL

True

GATESTOOL

True

CONCEPTSTOOL

True

REMOTE_WORKERSTOOL

True

AUTH_TYPE

bearer

authentication type (e.g. bearer, none)

MCP_URL

http://localhost:8000

DOCS_READINESSTOOL

True

RM_GATE_TIMEOUT_SECONDS

1800

Wall-clock ceiling, in seconds, for one pre-commit gate stage (repository_manager/gates.py). Unset uses the per-stage built-in default.

MERGE_QUEUE_DRAIN_DEADLINE_SECONDS

180

per-repository fast queue drain wall-clock deadline

MERGE_QUEUE_GLOBAL_DEADLINE_SECONDS

3600

whole fast queue invocation wall-clock deadline

MERGE_QUEUE_HEAVY_DEADLINE_SECONDS

18000

heavy phased-push invocation wall-clock deadline

MERGE_QUEUE_MAX_AGE_SECONDS

86400

queued-record age limit before fail-closed omission

MERGE_QUEUE_LEASE_TTL_SECONDS

14400

repo-scoped queue lease; must exceed the drain deadline

RM_CPU_FRACTION

0.20

fraction of logical cores budgeted for validation workers

RM_RAM_FRACTION

0.20

fraction of host RAM budgeted for validation workers

RM_WORKER_MEM_GB

1.5

assumed RAM per validation worker for auto-sizing

REPOSITORY_MANAGER_COMMAND

—

optional executable used by the queue runner

REPOSITORY_MANAGER_MCP_IMAGE

—

Set to an image@sha256:.

AGENT_UTILITIES_HOST_INVENTORY

—

Canonical host identities and capability roles for cross-host lane/concept scoping, as a JSON document; unset uses no inventory (every host treated as unknown). See repository_manager/governance/lanes.py's _host_inventory().

AU_LANE_TEMP_ROOT

—

Absolute override for the per-lane temp root (pytest basetemp / TMPDIR / pre-commit store / cargo target dir); unset uses the default $HOME/.al/ root. See lanes.py's _configured_lane_temp_root().

CARGO_TARGET_DIR

—

Cargo's own target-dir override. lane_guard.py's cargo-target-override check reads this to refuse a shared/global CARGO_TARGET_DIR that would both serialize and corrupt concurrent lane builds; it is not set by this package.

Inherited agent-connector-sdk variables (apply to every connector)

Variable

Example

Description

MCP_TOOL_MODE

intent

Tool surface: intent | condensed | verbose | both

MCP_ENABLED_TOOLS

—

Comma-separated tool allow-list

MCP_DISABLED_TOOLS

—

Comma-separated tool deny-list

MCP_ENABLED_TAGS

—

Comma-separated tag allow-list

MCP_DISABLED_TAGS

—

Comma-separated tag deny-list

MCP_CLIENT_AUTH

—

Outbound MCP child auth: oidc-client-credentials | basic | none

OIDC_CLIENT_ID

—

OIDC client id (service-account auth)

OIDC_CLIENT_SECRET_REF

secret://identity/oidc-client-secret

Runtime secret reference for the OIDC service account

MCP_BASIC_AUTH_USERNAME

—

HTTP Basic username (MCP_CLIENT_AUTH=basic)

MCP_BASIC_AUTH_PASSWORD_REF

secret://identity/mcp-basic-password

Runtime secret reference for HTTP Basic auth (MCP_CLIENT_AUTH=basic)

DEBUG

False

Verbose logging

PYTHONUNBUFFERED

1

Unbuffered stdout (recommended in containers)

PROVIDER

—

Operator-configured LLM provider for the agent

MODEL_ID

—

Operator-configured model id for the agent

ENABLE_WEB_UI

True

Serve the AG-UI web interface

69 package + 15 inherited variable(s). Auto-generated from .env.example + the shared agent-connector-sdk set — do not edit.

Every variable the server and agent read, sourced from .env.example.

MCP server / transport

Variable

Description

Default

TRANSPORT

stdio, streamable-http, or sse

stdio

HOST

Bind host (HTTP transports)

0.0.0.0

PORT

Bind port (HTTP transports)

8000

MCP_TOOL_MODE

Tool surface: condensed, verbose, or both

condensed

MCP_ENABLED_TOOLS / MCP_DISABLED_TOOLS

Comma-separated tool allow/deny list

—

MCP_ENABLED_TAGS / MCP_DISABLED_TAGS

Comma-separated tag allow/deny list

—

PYTHONUNBUFFERED

Unbuffered stdout (recommended in containers)

1

Workspace & repository management

Variable

Description

Default

REPOSITORY_MANAGER_WORKSPACE

Root directory of the git workspace to manage

deployment-provided

WORKSPACE_PATH

Fallback workspace root when REPOSITORY_MANAGER_WORKSPACE is unset

deployment-provided

WORKSPACE_YML

Workspace manifest filename (resolved under the workspace root)

workspace.yml

WORKSPACE_REPORTS

Directory where generated reports are written

—

REPOSITORY_MANAGER_WORKTREE_ROOT

Root directory for managed git worktrees

deployment-provided

REPOSITORY_MANAGER_DEFAULT_BRANCH

Default branch name for git operations

main

REPOSITORY_MANAGER_THREADS

Parallel threads for git operations

12

Operations & gating

Variable

Description

Default

RM_MAX_WORKERS

Explicit worker-count override (skips auto-sizing from CPU count)

—

RM_JOB_STALE_SECONDS

Seconds before an in-flight job is treated as stale by the watchdog

1800

RM_GATE_BEFORE_PUSH

Run the pre-commit gate before pushing (set false to bypass)

true

Version-control provider credentials

Variable

Description

Default

GITLAB_URL

GitLab base URL (alias: GITLAB_HOST)

—

GITLAB_TOKEN

GitLab access token (alias: GITLAB_PRIVATE_TOKEN)

—

GITHUB_TOKEN

GitHub access token (alias: GH_TOKEN)

—

Tool toggles

Each action-routed tool can be disabled individually via its toggle env var (set to false). The full list is in the Available MCP Tools table above.

Variable

Description

Default

GIT_OPERATIONSTOOL

Enable bulk Git operations (rm_git)

True

PROJECT_MANAGEMENTTOOL

Enable project + worktree management (rm_projects / rm_worktree)

True

WORKSPACE_MANAGEMENTTOOL

Enable workspace organization (rm_workspace)

True

Telemetry & governance

Variable

Description

Default

ENABLE_OTEL

Enable OpenTelemetry export

True

OTEL_EXPORTER_OTLP_ENDPOINT

OTLP collector endpoint

—

OTEL_EXPORTER_OTLP_PUBLIC_KEY / OTEL_EXPORTER_OTLP_SECRET_KEY

OTLP auth keys

—

OTEL_EXPORTER_OTLP_PROTOCOL

OTLP protocol (e.g. http/protobuf)

—

EUNOMIA_TYPE

Authorization mode: none, embedded, remote

none

EUNOMIA_POLICY_FILE

Embedded policy file

mcp_policies.json

EUNOMIA_REMOTE_URL

Remote Eunomia server URL

—

----------|-------------|---------| | MCP_URL | URL of the MCP server the agent connects to | http://localhost:8000/mcp | | PROVIDER | LLM provider (e.g. openai) | openai | | MODEL_ID | Model id (e.g. gpt-4o) | gpt-4o | | ENABLE_WEB_UI | Serve the AG-UI web interface | True |


Security & Governance

Built directly upon the enterprise-ready agent-connector-sdk core, standard security parameters are fully supported:

Access Control & Policy Enforcement

  • Eunomia Policies: Fine-grained, policy-driven tool authorization. Supports none, local embedded (mcp_policies.json), or centralized remote modes.

  • OIDC Token Delegation: Compliant with RFC 8693 token exchange for flowing authenticating user credentials from Web UI / ACP → Agent → MCP.

  • Scoped Credentials: Execution context runs restricted to the specific caller identity.

Runtime Security Grid

Feature

Feature

Enablement

Tool Guard

Sensitivity inspection with human-in-the-loop validation

Enabled by default

Prompt Injection Defense

Input scanning, repetition monitoring, and recursive loop blocks

Enabled by default

Context Safety Guard

Stuck-loop detectors and contextual overflow preemptive alerts

Enabled by default


Installation

Pick the extra that matches what the operator want to run:

Extra

Installs

Use when

repository-manager[mcp]

Connector-focused MCP server (agent-connector-sdk — FastMCP/FastAPI + epistemic-graph[full])

The operator only run the MCP server (smallest install / image)

repository-manager[all]

mcp plus pre-commit / bump2version

Development

# Connector-focused MCP server (includes the shared graph engine)
uv pip install "repository-manager[mcp]"

# Everything (development)
uv pip install "repository-manager[all]"      # or: python -m pip install "repository-manager[all]"

Container image (:mcp)

docker/Dockerfile builds the MCP-server image (--target mcp):

Image tag

Build target

Contents

Entrypoint

example/repository-manager:mcp

--target mcp

repository-manager[mcp] — connector-focused, includes epistemic-graph[full]; no model-orchestration stack

repository-manager-mcp

docker build --target mcp   -t example/repository-manager:mcp    docker/   # connector-focused MCP server

docker/mcp.compose.yml runs the connector-focused :mcp server.

Knowledge-graph database (epistemic-graph)

The [mcp] extra carries the epistemic-graph engine through the required Agent Connector SDK core dependency (epistemic-graph[full]). The [mcp] extra keeps the server connector-focused. Local deployments can use the bundled engine. For production or shared state, run epistemic-graph as a dedicated database service and configure the runtime to use it. Deployment recipes (single-node + Raft HA), connection configuration, and architecture diagrams are documented in the epistemic-graph deployment guide.


Repository Owners

GitHub followers GitHub User's stars


Documentation

The complete documentation is published as the official documentation site and is the recommended reference for installation, deployment, and day-to-day operation.

Page

Contents

Installation

pip, source, extras, prebuilt Docker image

Deployment

run the MCP and agent servers, Compose, Caddy + Technitium, env config

Usage

the MCP tools, the Git client, the CLI

Overview

ecosystem role, enterprise readiness, architecture

Phased Maintenance

dependency-ordered workspace updates

Phased Push

parallel, phase-gated multi-repository releases

Concepts

concept registry (CONCEPT:RM-*)

AGENTS.md is the canonical contributor/agent guidance.


Contribute

Contributions are welcome! Please ensure code quality by running local checks before submitting pull requests:

  • Format code using ruff format .

  • Lint code using ruff check .

  • Validate type-safety with mypy .

  • Ran test suites using pytest

Governed capability contract

This package ships a compact canonical skill surface with specialist procedures kept as referenced workflows. The current MCP tools, skill metadata, connector_manifest.yml, ontology, mappings, shapes, fixtures, migrations, tool-schema fingerprints, and certification metadata form one versioned capability contract. Validate them together; do not rely on stale tool names or historical per-task skill wrappers.

Runtime endpoints, credentials, certificate trust, tenant identity, retention, and observability policy are deployment inputs and are never packaged values. See Configuration, trust, and privacy before enabling a network transport, connector ingestion, Arbora delegation, or trace export.

Available Tools

122 tools
repository_ingest_repositoriesRepository Ingest RepositoriesA

Natively ingest git repositories into epistemic-graph as typed :GitRepository nodes.

Enumerates repositories across a GitLab instance / GitHub org via the real VCS enumerator and pushes them (typed :GitRepository nodes with vcs/clone_url/web_url/ default_branch provenance) into the knowledge graph via the fast engine client. Best-effort: returns {"ingested": None} when no engine is reachable. CONCEPT:AU-KG.ingest.enterprise-source-extractor.

NameRequiredDescriptionDefault
vcsNoWhich VCS to enumerate: 'gitlab' or 'github'.gitlab
scopesNoComma-separated GitLab groups / GitHub orgs to enumerate. Omit for the whole instance / the authenticated user.
max_reposNoOptional cap on the number of repositories enumerated + ingested.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the best-effort contract and the exact degraded return ({"ingested": None} when no engine is reachable), names the mechanisms used (real VCS enumerator, fast engine client), and lists provenance attributes written. It omits auth/token prerequisites for the GitLab/GitHub side and any rate-limit or scale caveats.

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 purpose is front-loaded in the first clause, and the following sentences add distinct value (mechanism, provenance, failure mode). The trailing CONCEPT:AU-KG... tag is opaque noise, but the rest is tight and well-ordered.

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?

An output schema exists, so return values need no elaboration, yet the description helpfully flags the None-ingested edge case. With 0 required params and full schema coverage, the only meaningful gap is the absence of authentication prerequisites for reaching GitLab/GitHub.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents vcs, scopes, and max_repos fully. The description's mentions of GitLab instance / GitHub org and enumeration cap align with but do not extend beyond the schema, so the baseline 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?

States a specific verb and resource: 'ingest git repositories into epistemic-graph as typed :GitRepository nodes,' with detail on enumeration source and provenance fields. It implicitly distinguishes itself from pure enumeration siblings (rm_git_enumerate) by emphasizing ingestion into the knowledge graph, though it never names an alternative directly.

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

Usage Guidelines3/5

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

Usage is implied by the described pipeline (enumerate across a GitLab instance / GitHub org, then push into the graph), so an agent can infer the scenario. However, there is no explicit when-to-use or when-not guidance versus close siblings like rm_git_enumerate or repository_manager_discover_projects, leaving the agent to guess which enumeration tool applies.

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

repository_manager_add_projectAdd projectB

Stage all changes (git add -A) for a single Git project.

NameRequiredDescriptionDefault
pathNo

TDQS

B3/5.0
Behavior3/5

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

Annotations supply the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true), so the bar is lower. The description does add one genuinely useful behavioral detail beyond the annotations: the '-A' wildcard means ALL changes are staged, not a subset. It stops short of saying whether staging is reversible, what happens to the index afterward, or whether the project must already exist.

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 efficient sentence that front-loads the action and tucks the scope constraint at the end. Nothing is wasted, though the parenthetical '(git add -A)' could be split so the staging scope reads more prominently.

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

Completeness3/5

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

The tool is simple (1 optional param, no output schema, annotations present), so the core action and scope are adequately conveyed. Still missing is any explanation of the 'path' parameter or default behavior, which is the main thing an agent must get right to invoke it correctly.

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?

There is one parameter ('path') with null default and 0% schema description coverage, so the description must compensate. 'For a single Git project' implies the path identifies the target, but it never says whether path is a filesystem path, a project name, or that omitting it defaults to the current directory. The single most important parameter is effectively undocumented.

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 gives a specific verb and scope: 'Stage all changes (git add -A) for a single Git project.' This is unambiguous and usefully rescues the misleading name/title 'Add project,' which suggests project creation rather than staging. However, it does not differentiate from close siblings such as rm_git_add or explain why 'single project' versus repository_manager_add_projects.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance. The phrase 'for a single Git project' hints at a scope constraint relative to the plural sibling, but the agent is left to infer that alternatives like rm_git_add or repository_manager_add_projects exist and when to prefer them.

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

repository_manager_add_projectsAdd projectsC

Stage all changes for multiple projects in parallel.

NameRequiredDescriptionDefault
project_dirsNo

TDQS

C2.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds only the "in parallel" execution trait, and says nothing about failure modes across the batch, idempotency, or what happens to partially staged sets.

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?

A single front-loaded sentence with no filler, which is structurally good, but it is too terse for a tool whose identity is ambiguous and whose one parameter is undocumented.

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

Completeness2/5

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

With one optional parameter, no output schema, and no annotations explaining scope, the description should clarify what is staged and against which projects. It does neither, leaving a real gap for an agent trying to invoke this correctly.

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

Parameters2/5

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

Schema description coverage is 0% for the single project_dirs parameter, and the description never mentions it. The default of null (which likely implies all known projects) is documented neither in schema nor description, so the agent cannot tell what the tool acts on when the argument is omitted.

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

Purpose2/5

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

The description says "Stage all changes for multiple projects," but the tool name and title (repository_manager_add_projects / "Add projects") suggest registering projects into a workspace. The mismatch with the name makes the actual purpose ambiguous, and it is not distinguished from git-staging siblings such as rm_git_add or repository_manager_add_project.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of the singular sibling repository_manager_add_project or the git-level rm_git_add. The agent is left to guess whether this registers projects or stages their working-tree changes.

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

repository_manager_build_projectsBuild projectsB

Build projects serially so compilation cannot exhaust the workstation.

NameRequiredDescriptionDefault
threadsNo

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=false, openWorldHint=true, destructiveHint=false), and the description usefully adds the serial-execution behavior an agent could not derive from structured fields. It omits failure handling and what happens if a build fails midway, keeping it short of a 5.

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

Conciseness4/5

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

A single front-loaded sentence with zero waste that leads with the action and follows with the reason. It is efficient, though extremely terse for a build operation.

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

Completeness3/5

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

No output schema exists, so the description need not explain returns, but for a build tool it says nothing about failure behavior, progress, or scope of 'projects'. With annotations covering safety, this is minimally adequate rather than complete.

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

Parameters2/5

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

Schema description coverage is 0% and the single 'threads' parameter is never explained in the description. There is even mild tension: the description says builds run 'serially' while the only parameter is 'threads', which the description does nothing to reconcile.

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

Purpose4/5

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

States a specific verb and resource ('Build projects') and adds the distinguishing serial-execution trait. However, it does not clearly differentiate itself from close siblings like rm_projects_build or repository_manager_test_projects, so an agent must still infer which build variant to pick.

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

Usage Guidelines3/5

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

The phrase 'so compilation cannot exhaust the workstation' implies the situation that selects this tool (resource-constrained serial builds), but there is no explicit when-to-use/when-not or named alternative versus rm_projects_build. Usage is only implied.

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

repository_manager_bulk_bumpBulk bumpB

Bumps the version for all projects in the workspace in parallel.

NameRequiredDescriptionDefault
partYes
dry_runNo
excludeNo
verboseNo

TDQS

B3/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds useful behavioral context by stating the operation affects all workspace projects and runs in parallel, but it does not explain what happens to existing version state, whether the change is reversible, or how dry_run changes behavior.

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

Conciseness4/5

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

The single sentence is front-loaded and contains no filler, which is good. However, for a bulk mutation tool with four parameters and no schema descriptions, it is arguably too terse to be appropriately sized.

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 four parameters, 0% schema description coverage, and no output schema, the description is substantially incomplete. While the annotations cover the safety profile, the description does not compensate for missing parameter meaning, usage conditions, or alternative routing.

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

Parameters1/5

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

Schema description coverage is 0% across four parameters, and the description mentions none of them. The required 'part' parameter, 'dry_run', 'exclude', and 'verbose' are completely undocumented, leaving an agent with no semantic guidance beyond the parameter names.

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

Purpose5/5

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

The description states a specific verb and resource: 'Bumps the version for all projects in the workspace.' It also adds scope and concurrency ('all projects', 'in parallel'), which distinguishes it from the single-project sibling repository_manager_bump_version.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives like repository_manager_bump_version or repository_manager_phased_bumpversion. It also gives no prerequisites, exclusions, or conditions under which the bulk operation is appropriate.

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

repository_manager_bump_versionBump versionA

Bump the version of the project using bump2version.

Args: part (str): The part of the version to bump (major, minor, patch). allow_dirty (bool): Whether to allow dirty working directory. path (str): The path to the project directory. dry_run (bool): Whether to perform a dry run. verbose (bool): Whether to use verbose output (for dry-run visibility). force (bool): If the target version's tag already exists locally (an orphan tag from a prior partial bump that left the version file un-updated), delete that local tag and re-bump instead of silently skipping. The orphan tag must NOT be on the remote.

Returns: GitResult: Result of the operation.

NameRequiredDescriptionDefault
partYes
pathNo
forceNo
dry_runNo
verboseNo
allow_dirtyNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations declare the safety profile (readOnly=false, destructive=false, openWorld=true), so the bar is lower, and the description still adds real behavior: the force flag explains orphan-tag recovery, including deleting a local tag and the precondition that the orphan tag must not exist on the remote. The dry_run and verbose notes also clarify non-obvious interaction. It falls short of stating that the normal path rewrites the version file and creates a tag/commit, which is the primary side effect.

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 one-line purpose is front-loaded, followed by a compact Args block that earns its space given 0% schema coverage, plus a brief Returns line. No filler, no restating of annotations.

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

Completeness3/5

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

For a mutation tool with no output schema and no annotations covering side effects, the description leaves out what files are modified, whether a commit/tag/push is produced, and what GitResult actually contains beyond its type name. The force documentation shows the author can disclose this level of detail, so the omissions are meaningful.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must carry all parameter meaning, and it documents all six parameters including the allowed values for part (major, minor, patch), which is absent from the schema. The boolean parameters get only thin 'whether to...' phrasing, and edge cases like allow_dirty behavior on a dirty tree are not explained.

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

Purpose4/5

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

States a specific verb+resource ('Bump the version of the project') and names the underlying mechanism (bump2version), which is more precise than the title alone. However, it gives no differentiation from close siblings such as repository_manager_bulk_bump or repository_manager_phased_bumpversion, so an agent cannot tell from the description alone which of these applies.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, no prerequisites for running a bump (clean tree, tags), and no routing to the bulk or phased bump siblings. The agent must infer scope and applicability entirely.

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

repository_manager_cleanup_artifactsCleanup artifactsC

Removes test artifacts and temporary files from the specified directory.

NameRequiredDescriptionDefault
target_dirYes

TDQS

C2.5/5.0
Behavior1/5

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

The description claims a delete operation ('Removes ... files'), which is a destructive update, while the annotation declares destructiveHint=false. That inconsistency is a serious mismatch. Beyond the mismatch, the description says nothing about permanence, recursion, git-tracking, or confirmation behavior.

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

Conciseness4/5

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

One short sentence, front-loaded with the verb and scope, with no filler. It is efficient, though arguably too terse for a deletion tool.

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

Completeness2/5

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

For a tool that deletes files, with no output schema and only annotations for structure, the definition omits what qualifies as an artifact, whether deletion is recursive or recoverable, and what is returned. The single sentence is not complete enough for the risk profile.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry the burden. It only implies that target_dir is a directory path ('the specified directory'), which the parameter name already conveys, and adds no format, relative/absolute path, or recursion semantics.

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

Purpose4/5

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

Names a specific verb ('Removes') and resource ('test artifacts and temporary files') scoped to 'the specified directory', so the agent knows exactly what operation it is. It does not, however, differentiate itself from nearby cleanup-style siblings such as rm_build_gc, rm_worktree_prune, or rm_worktree_remove.

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 when-to-use, when-not-to-use, or prerequisite guidance is given. The agent must infer that cleanup is appropriate from the name alone, and no alternative cleanup tool is referenced.

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

repository_manager_clone_projectsClone projectsC

Clone all specified Git projects in parallel using multiple threads.

Returns: List[GitResult]: A list of GitResult objects, one for each clone operation.

NameRequiredDescriptionDefault
projectsNo

TDQS

C2.7/5.0
Behavior2/5

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

Annotations establish readOnlyHint=false, openWorldHint=true, destructiveHint=false, and the description usefully adds that cloning runs in parallel threads. But it omits critical behavior: what happens when the 'projects' argument is null (its default), whether existing directories are overwritten or skipped, and what failure of one clone does to the others. For a networked mutation with a null default, these gaps are material.

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

Conciseness4/5

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

Two short sentences, purpose front-loaded, and the return-value sentence is justified because no output schema exists. No filler or repetition.

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

Completeness2/5

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

With a 0%-documented parameter, a null default, no output schema, and a near-identical singular sibling, the description leaves too much unanswered for an agent to invoke it confidently — especially how a null argument or partial clone failure is handled.

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

Parameters2/5

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

Schema coverage is 0% and the single parameter is undocumented. The description says 'all specified Git projects' but never states what form an entry takes (name, URL, path?) or what the null default means — arguably 'all projects in the workspace', which the text leaves entirely to inference.

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

Purpose4/5

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

The description names a specific verb and resource ('Clone all specified Git projects') and adds a distinguishing execution trait ('in parallel using multiple threads'). However, it never distinguishes itself from the closely-named sibling repository_manager_clone_repository (singular) or rm_git_clone, so an agent cannot tell which clone tool to pick from the text alone.

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

Usage Guidelines2/5

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

There is no statement of when to use this multi-project clone versus the singular clone_repository, nor any prerequisites (auth, workspace config, network). The only usage signal is the implicit 'all specified projects' plural scoping.

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

repository_manager_clone_repositoryClone repositoryB

Clone a single Git repository to a specific target path.

Args: url (str): The repository URL to clone. target_path (str): The absolute path where the repository should be cloned.

Returns: GitResult: The result of the Git clone command.

NameRequiredDescriptionDefault
urlYes
target_pathYes

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the network-touching, non-read nature is covered. The description adds nothing beyond that: it doesn't say whether target_path must be empty/nonexistent, what happens on failure, or whether credentials/SSH auth are required.

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?

Front-loaded one-line summary followed by terse Args/Returns blocks. The Returns line is thin and partly redundant, but there is no padding or repetition.

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

Completeness3/5

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

Covers the two parameters and names a return type, and annotations supply the safety/open-world profile. However, for a clone operation it omits auth requirements and the state the target path must be in, which an agent would need before invoking it.

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

Parameters4/5

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

Schema description coverage is 0%, so the description carries the entire burden and does document both parameters, including the non-obvious constraint that target_path is an absolute path. It stops short of URL format or path-existence rules, but it meaningfully compensates for the empty schema.

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

Purpose4/5

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

States a specific verb (Clone) and resource (a single Git repository) plus the output location (target path). The word 'single' implicitly distinguishes it from the plural sibling repository_manager_clone_projects, but no sibling is named explicitly.

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

Usage Guidelines2/5

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

There is no guidance on when to choose this tool over rm_git_clone, repository_manager_clone_projects, or repository_manager_clone_project. No prerequisites or preconditions are stated either.

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

repository_manager_commit_code_projectCommit code projectA

Stage ALL changes (git add -A), optionally gate on pre-commit, then commit.

This is the per-repo "commit our feature code" step the release pipeline runs BEFORE bumping versions. Unlike :meth:commit_project it stages untracked files too (git add -A) and runs the project's pre-commit hooks (auto-formatters land in the same commit), so feature code is never left behind for an implicit push-time commit.

If pre-commit fails for real (not just auto-format), the failure is surfaced and nothing is committed.

NameRequiredDescriptionDefault
pathNo
messageYes
run_precommitNo

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the annotations, it discloses that all changes are staged including untracked files, that pre-commit hooks may auto-format files into the same commit, and that a real pre-commit failure aborts the commit. These are important behavioral details for a mutating commit tool.

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

Conciseness4/5

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

The description is front-loaded with the core action and then explains the key distinction and failure behavior. It is appropriately sized, though slightly verbose and includes RST-style references that do not add much for an agent.

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?

It covers the main staging, pre-commit, and failure semantics, which is useful for a mutating tool. However, with no output schema and 0% schema parameter coverage, it remains incomplete on parameter meaning and success 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 0%, so the description must compensate for all three parameters. It only indirectly gestures at `run_precommit` by saying pre-commit is optional and does not explain `path`, `message`, or the default behavior of `run_precommit`.

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

Purpose5/5

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

The description states a specific verb and resource: stage all changes with `git add -A`, optionally run pre-commit, and commit. It also distinguishes this per-repo feature-code commit step from `commit_project` by noting that it stages untracked files and runs pre-commit hooks.

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

Usage Guidelines4/5

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

It clearly positions the tool as the release-pipeline step that runs before version bumps and contrasts it with `commit_project`. However, it does not explicitly state when not to use it or compare it against other commit siblings such as `commit_code_projects`.

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

repository_manager_commit_code_projectsCommit code projectsB

Concurrently stage + pre-commit + commit feature code across projects.

The "add all our code, pre-commit, then commit" release-prep step, throttled by self.threads (the 20% CPU/RAM cap). Scales to thousands of repositories.

NameRequiredDescriptionDefault
messageYes
project_dirsNo
run_precommitNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the mutation profile is known. The description adds genuinely useful behavior beyond that: concurrency, throttling via self.threads (20% CPU/RAM cap), and scale to thousands of repositories. It omits failure/partial-commit semantics, whether changes are pushed, and what happens to unstaged files.

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

Conciseness4/5

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

Short and front-loaded: the action leads, then the use-case framing, then the concurrency/scale constraint. The quoted colloquial restatement is slightly redundant padding but does aid recognition of the workflow.

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 mutating, multi-repository tool with no output schema and 0% parameter documentation, the description gives useful operational context (throttling, scale) but leaves key gaps: no return/result information, no error or partial-failure behavior, and no clarification of the required message parameter.

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

Parameters2/5

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

Schema description coverage is 0% with 3 parameters, so the description carries the full burden. 'pre-commit' hints at run_precommit and 'across projects' hints at the project_dirs scope, but the required `message` parameter is never mentioned, and there is no detail on what project_dirs accepts (paths vs names) or the default-null meaning.

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

Purpose4/5

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

States a precise compound verb sequence (stage + pre-commit + commit) and the resource ('feature code across projects'), which an agent can act on directly. It distinguishes itself from the singular siblings (commit_code_project, commit_project) via the 'concurrently ... across projects' framing, though it never names those siblings explicitly.

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?

Labels itself as 'the "add all our code, pre-commit, then commit" release-prep step', which implies when it is used. However, there is no guidance on when to prefer this over commit_projects, commit_code_project, or the git-level rm_git_commit / rm_git_add tools, and no stated prerequisites (clean tree, branch state).

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

repository_manager_commit_projectCommit projectB

Commit staged changes (git commit -m "{message}") for a single Git project.

NameRequiredDescriptionDefault
pathNo
messageYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the agent knows it mutates but is not classified as destructive. The description adds useful context by naming the underlying command and clarifying that only staged changes are committed, but says nothing about auth requirements, behavior when nothing is staged, or failure modes.

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 tight sentence front-loads the action and includes the literal command form, with no wasted words. Slightly more context could have been added without bloat, but the sizing is appropriate.

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 mutation tool with no output schema, the definition covers the core action and the staged-changes precondition, and annotations carry the safety profile. It falls short on path semantics and on what the agent should expect on success or failure, leaving gaps an agent might need.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry the parameter burden. It partially covers 'message' by embedding it in the example command, but 'path' - the parameter that selects which project to commit - is never explained, leaving the most important selector undocumented.

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

Purpose4/5

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

The description states a specific verb (commit) and resource (staged changes) and scopes it to 'a single Git project', which distinguishes it from the plural siblings like commit_projects and commit_code_projects. It does not, however, differentiate itself from repository_manager_commit_code_project, which is also singular.

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 'for a single Git project' phrasing implies usage in the single-project case versus the plural variants, but there is no explicit when-to-use guidance, no exclusion conditions, and no mention of the closely related commit_code_project alternative. Usage is left to inference.

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

repository_manager_commit_projectsCommit projectsC

Commit staged changes for multiple projects in parallel.

NameRequiredDescriptionDefault
messageYes
project_dirsNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true), so the bar is lowered. The description usefully adds the concurrency trait ('in parallel'), but for a bulk mutation it omits critical behavior: whether a failure in one repo aborts the rest, and whether it is transactional across projects.

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

Conciseness4/5

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

A single front-loaded sentence with zero filler, so nothing is wasted. It is arguably undersized for a parallel bulk mutation with two undocumented parameters, which slightly limits 'appropriately sized'.

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

Completeness2/5

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

With no output schema, 0% schema coverage, and no annotations on failure semantics, the description leaves key questions open: which projects are affected when project_dirs is null, and what happens on partial failure. For a write tool operating on many repositories, this is inadequate.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate and it largely does not. It never explains 'message' or 'project_dirs', notably leaving the default-null semantics (presumably all discovered projects) undefined even though the phrase 'multiple projects' hints at the parameter.

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

Purpose4/5

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

States a specific verb (commit), the target (staged changes), and the scope (multiple projects, in parallel), which distinguishes it from the singular repository_manager_commit_project sibling. It does not, however, explicitly name or contrast with that sibling, so the differentiation must be inferred from 'multiple projects'.

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

Usage Guidelines2/5

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

There is no guidance on when to choose this bulk tool over the single-project repository_manager_commit_project, nor any prerequisite such as changes needing to be staged first. The reader must infer the pre-commit workflow entirely.

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

repository_manager_create_projectCreate projectB

Create a new project directory and initialize it as a git repository.

Args: path (str): The path of the project directory to create.

Returns: GitResult: Result of the operation.

NameRequiredDescriptionDefault
pathYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the mutation/safety profile is covered. The description adds genuine value by disclosing the two concrete side effects (directory creation + git init), but it omits failure behavior if the path already exists, permission requirements, and whether the project is registered with the workspace manager.

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?

Front-loaded with the core action in the first sentence, followed by a compact Args/Returns block. The 'Returns: GitResult' line earns its place since there is no output schema; the boilerplate formatting is slightly verbose but not wasteful.

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

Completeness3/5

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

With no output schema, the description usefully names the return type (GitResult). However, for a filesystem-mutating tool in a large repository-manager suite, it lacks prerequisites, error/idempotency behavior, and any indication of what GitResult contains or how the new project relates to workspace configuration.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry the parameter burden. It names and minimally glosses 'path (str): The path of the project directory to create', but adds no detail on absolute vs relative paths, whether parent directories are created, or path format constraints.

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

Purpose4/5

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

The description states a specific verb and resource and goes beyond the name by specifying both actions: create the directory AND initialize it as a git repository. This distinguishes it in spirit from siblings like repository_manager_add_project (registering an existing project) or repository_manager_clone_projects, but it never names those alternatives explicitly.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no comparison to the many adjacent siblings (add_project, add_projects, clone_repository, setup_from_yaml). An agent cannot tell from this text whether create_project is the right entry point versus adding an existing repo to the workspace.

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

repository_manager_discover_projectsDiscover projectsA

Scan self.path for immediate subdirectories containing a .git folder. Populates and returns self.project_map.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false with destructiveHint=false, and the description explains why: the scan mutates internal state by populating self.project_map. It also discloses the scope limit ('immediate subdirectories', i.e. non-recursive). That is meaningful disclosure beyond the annotations, though it omits whether repeated calls overwrite or merge the existing map.

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 short sentences, front-loaded with the scoping behavior before the state-effect. No filler, no repetition of the title.

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, the description need not explain the returned project_map, and for a zero-parameter scan it covers the key behaviors: what is scanned and what internal state changes. The missing piece is routing guidance against the numerous sibling discovery/load tools.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. The description correctly implies there is nothing to configure, and the empty schema with additionalProperties=false is consistent.

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

Purpose4/5

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

The description gives a specific verb plus resource and scope: 'Scan self.path for immediate subdirectories containing a .git folder', which is far more precise than the title alone. It stops short of distinguishing itself from close siblings such as repository_manager_get_project_map or repository_manager_load_projects_from_yaml, so an agent must infer the boundary.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, no prerequisites, and no named alternative among the many sibling discovery/load tools (get_project_map, load_projects_from_yaml, get_workspace_projects). The phrase 'Populates and returns self.project_map' hints at the use case but never states when an agent should pick this tool over those siblings.

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

repository_manager_generate_markdown_summaryGenerate markdown summaryC

Generates a beautiful markdown summary of bulk operation results.

NameRequiredDescriptionDefault
actionYes
resultsYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true), so the description need not restate them. But it adds essentially nothing beyond 'beautiful': no indication of where the output goes, whether anything is written, format guarantees, or error handling for malformed results.

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

Conciseness4/5

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

A single, front-loaded sentence with no filler. It is efficient, though 'beautiful' is subjective marketing language rather than useful specification.

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 two required, fully undocumented parameters, no output schema, and a non-read-only annotation, the description is far too thin. An agent cannot know what `action` should contain or what the summary renders from beyond a vague one-liner.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. 'Bulk operation results' loosely maps to the required `results` array, but the required `action` parameter is entirely unexplained, and the status/data/error/metadata shape of results is undocumented.

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

Purpose4/5

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

States a specific verb (generates) and resource (markdown summary) scoped to bulk operation results, which distinguishes it from the many build/commit/git siblings. However, it does not name or differentiate against any specific alternative in a very crowded namespace.

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 'of bulk operation results' implies the usage context (call it after a bulk operation to render output), but there is no explicit when-to-use, when-not-to-use, or named alternative among the ~90 siblings. Usage is left to inference.

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

repository_manager_generate_workspace_templateGenerate workspace templateC

Generates a workspace.yml template at the specified path.

NameRequiredDescriptionDefault
target_pathYes
use_defaultNo

TDQS

C2.6/5.0
Behavior2/5

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

Annotations mark this as a non-read-only, non-destructive, open-world write, but the description adds nothing beyond that: it does not say whether an existing file at target_path is overwritten, whether the parent directory must exist, or whether it requires prior workspace context. For a file-writing tool, overwrite behavior is the single most important behavioral fact and it is absent.

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 single sentence is clean and front-loaded with the verb and artifact, with no filler. But its brevity here reflects under-specification rather than efficiency, so it cannot earn full marks.

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

Completeness2/5

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

With no output schema, an open-world write annotation, two parameters (one entirely undocumented), and a same-purpose sibling, the description is too thin for an agent to call it confidently or predict its side effects.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry the parameter burden and it does not. 'target_path' is only obliquely referenced as 'the specified path', and 'use_default' (boolean, default true) is never mentioned, leaving its effect on the generated template completely opaque.

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

Purpose4/5

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

States a specific verb ('Generates') and resource ('a workspace.yml template') plus the output location. However, it does not distinguish itself from sibling rm_workspace_template or from the yaml-loading siblings (load_projects_from_yaml, setup_from_yaml), which an agent must disambiguate before choosing.

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 gives no when-to-use context, no prerequisites, and no mention of alternatives such as rm_workspace_template or repository_manager_save_workspace_config. The agent is left to infer the scenario from the name alone.

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

repository_manager_get_consolidated_skill_pathsGet consolidated skill pathsA
Read-onlyIdempotent

Returns absolute paths to the 15 specific building and documentation skills.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, covering the safety profile. The description adds only that the output consists of absolute paths scoped to 15 skills, but says nothing about authentication, rate limits, failure modes, or ordering.

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

Conciseness5/5

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

A single sentence with no wasted words, front-loading the return value. It is appropriately sized for a simple zero-parameter getter.

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 no parameters, an output schema, and annotations that cover safety, the description only needs to state what is returned. It does that clearly, though it omits any indication of when this tool should be preferred over adjacent documentation or project-map tools.

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

Parameters4/5

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

The input schema has zero parameters and 100% schema description coverage, so there are no parameter semantics to explain. The baseline for a no-parameter tool is 4, and the description correctly does not invent parameter details.

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

Purpose4/5

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

Names a specific verb (Returns) and resource (absolute paths to building and documentation skills), making the basic operation clear. However, it does not differentiate from any sibling tool or explain what 'consolidated' or '15 specific skills' means beyond the output scope.

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 rm_docs_readiness_preview or repository_manager_get_project_map. It merely states what the tool returns, leaving all usage context to inference.

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

repository_manager_get_project_mapGet project mapA
Read-onlyIdempotent

Returns the mapping of repository URLs to their local project paths. Ensures paths are absolute and expanded.

NameRequiredDescriptionDefault

No parameters

Output 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 already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds one useful behavioral detail beyond that — that returned paths are guaranteed absolute and expanded — but says nothing about ordering, staleness, or whether the map reflects on-disk state.

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 compact sentences, front-loaded with the return value and followed by the one normalization guarantee. Every sentence earns its place with no filler.

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

Completeness4/5

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

An output schema exists, so return shape need not be described, and there are no parameters to document. The only real gap is absence of sibling differentiation, which is minor given the tool's narrow read-only scope.

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

Parameters4/5

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

The tool takes zero parameters, which is the baseline-4 case. There is nothing for the description to disambiguate, and it correctly does not invent parameter semantics.

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

Purpose4/5

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

States a specific verb and resource: returns a mapping of repository URLs to local project paths. Clear on what it does, but it never distinguishes itself from related readers like repository_manager_get_workspace_projects or rm_workspace_list, so an agent must infer the distinction.

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 when-to-use guidance, no prerequisites, and no mention of alternatives among the many list/get siblings. The agent is left to guess whether this or get_workspace_projects is the right call.

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

repository_manager_get_readmeGet readmeA
Read-onlyIdempotent

Get the content and path of the README.md file in the specified path.

Args: path (str, optional): The directory path. Defaults to self.path.

Returns: ReadmeResult: Object containing 'content' and 'path' of the README.md file.

NameRequiredDescriptionDefault
pathNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the default resolution of path against self.path, and — with no output schema present — the shape of the return value (an object with 'content' and 'path'). It omits failure behavior when no README exists, which keeps it from a 5.

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

Conciseness4/5

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

Front-loaded with the core action, then a compact Args/Returns block. Every line carries information, though the docstring scaffolding ('Args:', 'Returns:') is slightly heavier than necessary for one optional parameter.

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 one-optional-parameter read tool with no output schema, the description supplies both the parameter default and the return shape, so an agent can call it and interpret the result. The main gap is unstated error handling when the README is missing.

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

Parameters4/5

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

Schema description coverage is 0%, so the description carries the full burden and does document the single parameter: it is the directory path and defaults to self.path. This gives meaning the bare anyOf/null schema does not, though 'self.path' is left unexplained.

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

Purpose4/5

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

States a specific verb and resource ('Get the content and path of the README.md file') which is unambiguous and, given no sibling tool touches README files, is easy to tell apart in this large sibling set. It stops short of explicitly contrasting with any other tool, but the resource itself is distinctive.

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 when-to-use or when-not guidance, no prerequisites, and no mention of an alternative tool. The only contextual hint is that path 'Defaults to self.path', which is a routing detail rather than usage guidance.

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

repository_manager_get_workspace_projectsGet workspace projectsA
Read-onlyIdempotent

Returns a list of project basenames (e.g. 'genius-agent') defined in the workspace.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is fully covered elsewhere. The description adds only the shape of the return (basenames, with an example), which is useful but modest; it says nothing about scoping to a specific workspace, pagination, or auth.

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

Conciseness5/5

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

A single front-loaded sentence with an inline example; there is no filler or restatement of the title. Every clause earns its place.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and annotations cover the safety semantics. For a zero-parameter read tool the description is nearly sufficient, with the only shortfall being the missing sibling differentiation.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4 and there is nothing for the description to disambiguate. Schema coverage is 100% and the description correctly implies no input is required.

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

Purpose4/5

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

States a specific verb ('Returns a list') and resource ('project basenames defined in the workspace'), with a concrete example of the returned value. It does not, however, differentiate itself from near-siblings like rm_workspace_list, repository_manager_discover_projects, or repository_manager_get_project_map, so an agent cannot tell from the text alone which of these to pick.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no preconditions, and no mention of any alternative tool. With several list/discover siblings in the namespace, the absence of routing guidance is a real gap.

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

repository_manager_git_actionGit actionC

Execute a Git command in the specified directory.

The operation is admitted through descriptor-pinned helpers before any subprocess is started.

NameRequiredDescriptionDefault
envNo
pathNo
quietNo
commandYes
timeoutNo
raw_outputNo

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, covering the safety profile. The description adds a validation-gate note ('admitted through descriptor-pinned helpers before any subprocess is started'), which is useful context but vague jargon that doesn't explain consequences, permitted commands, or failure behavior.

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

Conciseness3/5

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

Purpose is front-loaded in the first sentence, which is good. The second sentence, while short, is opaque jargon ('descriptor-pinned helpers') that doesn't clearly earn its place for an agent deciding how to call the tool.

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

Completeness2/5

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

For a 6-parameter arbitrary-git-execution tool with no output schema and 0% parameter coverage, the description is too sparse. It omits what commands are permitted, return/error behavior, and safety boundaries an agent needs before invoking an open-world mutation tool.

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

Parameters2/5

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

Schema coverage is 0% across 6 params (env, path, quiet, command, timeout, raw_output). The description only vaguely implies 'path' via 'in the specified directory' and says nothing about env, quiet, timeout, or raw_output, so it fails to compensate for the documentation gap.

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

Purpose4/5

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

States a clear verb+resource ('Execute a Git command in the specified directory'), so the operation is unambiguous. However, it offers no differentiation from the numerous sibling git tools (rm_git_raw, rm_git_commit, rm_git_status, rm_git_push, etc.), leaving the agent to guess which git tool to pick.

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

Usage Guidelines2/5

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

There is no guidance on when to use this general git executor versus the many specialized siblings like rm_git_raw or rm_git_commit. No prerequisites, exclusions, or alternative routing are given.

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

repository_manager_install_projectInstall projectC

Install a Python project using pip install -e .[extra].

NameRequiredDescriptionDefault
pathNo
extraNoall

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and openWorldHint=true, so the agent knows this mutates state and touches the network. The description usefully discloses the actual command, revealing that it is an editable install with extras rather than a plain install. It stops short of saying which environment gets modified, what artifacts it creates (.egg-info), or whether a failure leaves a partial install.

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

Conciseness4/5

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

A single front-loaded sentence with no filler, and the operative detail (the exact command) arrives immediately. It is arguably under-specified rather than over-long, which is not a conciseness penalty.

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 non-read-only, open-world mutation tool with no output schema and zero schema description coverage, this is thin: nothing about which interpreter/environment is targeted, how success or failure is reported, or how it differs from the plural install variants. An agent has to guess at the invocation 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 0%, so the description must carry parameter meaning. The '.[extra]' notation does implicitly explain that 'extra' maps to pip extras (default 'all'), but the 'path' parameter is never explained at all — it is unclear whether it is the project root, a directory to cd into, or optional in favor of a cwd default.

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

Purpose4/5

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

The description names a specific verb (install), a specific resource (a Python project), and even the exact command form (pip install -e .[extra]). However, it gives no signal for distinguishing it from close siblings such as repository_manager_install_projects (plural) or rm_projects_install, so an agent cannot tell which one targets a single project.

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

Usage Guidelines2/5

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

There is no statement of when to use this versus repository_manager_install_projects, rm_projects_install, or rm_projects_build, and no preconditions (e.g. project must already be cloned, a virtualenv must be active). The editable-install format is the only implied usage cue.

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

repository_manager_install_projectsInstall projectsC

Bulk installs Python and Node projects in the workspace.

NameRequiredDescriptionDefault
extraNoall
reportNo
threadsNo

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare it a non-read-only, open-world, non-destructive operation, so the safety profile is covered. The description adds only that it handles Python and Node across multiple projects; it says nothing about what installing entails (package managers invoked, network requirements, side effects, or failure behavior across the bulk set).

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

Conciseness4/5

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

A single front-loaded sentence with no filler; the operation and its scope appear immediately. It is not padded, though it is arguably too terse given the undocumented parameters.

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 an open-world, mutating bulk operation with no output schema and three completely undocumented parameters, the description is far too thin. It omits prerequisites, scope of the workspace, per-project failure handling, and the meaning of its own inputs.

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

Parameters1/5

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

Schema description coverage is 0% and the three parameters (extra with default 'all', report, threads) have cryptic names with no explanation anywhere. The description does not mention any of them, leaving the agent unable to know what 'extra' filters or what 'report' controls.

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 gives a specific verb (installs), resource (Python and Node projects), and scope (bulk, in the workspace), which distinguishes it from the singular repository_manager_install_project and rm_projects_install. It does not explicitly name those siblings, 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 Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative guidance is given, despite the large cluster of closely related install/build/maintain siblings. The agent must infer that 'bulk' means this is the multi-project variant, with no statement of prerequisites or environment expectations.

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

repository_manager_list_branchesList branchesA
Read-onlyIdempotent

Returns a dictionary mapping project basenames to their current active git branch.

NameRequiredDescriptionDefault

No parameters

Output 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 already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered structurally. The description adds only the return shape, which is already carried by the output schema, so it contributes little behavioral context beyond structured fields.

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

Conciseness5/5

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

A single front-loaded sentence that states the return type and the mapping semantics with zero waste. Nothing could be trimmed without losing information.

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

Completeness4/5

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

For a zero-parameter read-only listing tool with rich annotations and an output schema, the description covers what is needed to call it. The one real gap is routing versus the similarly named rm_workspace_list_branches sibling, which is left unexplained.

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

Parameters4/5

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

The tool takes zero parameters, so per the rubric the baseline is 4. There is no parameter meaning for the description to add or omit.

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

Purpose4/5

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

States a specific verb ('returns') and resource ('current active git branch') plus the exact shape of the result (project basename → branch). It is clear what the tool does, but it never distinguishes itself from the near-identically named sibling rm_workspace_list_branches, which an agent could easily pick instead.

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 offers no when-to-use context, no prerequisites, and no alternatives. With a sibling named rm_workspace_list_branches in the same namespace, this omission is exactly where guidance is most needed.

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

repository_manager_load_projects_from_yamlLoad projects from yamlC

Loads repository URLs from a YAML workspace file using Pydantic models. Strictly determines self.path relative to the configuration file.

NameRequiredDescriptionDefault
yaml_pathYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, openWorldHint=true and destructiveHint=false, so the safety profile is partly covered. The description adds one useful behavioral fact (self.path is resolved relative to the configuration file), but the implementation note about Pydantic models is noise and it never clarifies what state change makes this non-read-only despite the 'loads' wording.

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

Conciseness4/5

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

Two short sentences that are front-loaded with the core action. The second sentence is compact and mostly earns its place, though the Pydantic mention is filler.

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 non-read-only tool with no output schema and a single undocumented parameter, the description should explain expected YAML structure, what gets populated, and what is returned. It omits all of this, leaving the agent unable to call it correctly from the definition alone.

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?

There is one parameter (yaml_path) at 0% schema coverage, so the description carries the full burden. It only implies the argument points at a 'YAML workspace file' and gives no format, absolute/relative path expectations, or schema details, so it fails to compensate for the coverage gap.

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 gives a specific verb and resource ("Loads repository URLs from a YAML workspace file"), so an agent knows exactly what it does. It does not, however, distinguish itself from the very close sibling repository_manager_setup_from_yaml, which likely consumes the same kind of YAML input.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no mention of alternatives such as repository_manager_setup_from_yaml or repository_manager_get_workspace_projects. The agent must infer the usage context entirely.

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

repository_manager_maintain_projectsMaintain projectsC

Execute the phased bumpversion workflow: pre-commits + phased bumping.

auto_start (the default) begins the run at the lowest phase that actually contains a repo with pending work (advancing start_phase forward, never backward) so unchanged upstream phases are skipped. A change in phase N still cascades to every phase >= N. It stands down — running from the explicit start_phase — when project_filter or force is set, since those are explicit-targeting requests that deliberately bypass change detection. Pass auto_start=False to opt out and always start at start_phase.

Concept: CONCEPT:RM-BUMP

NameRequiredDescriptionDefault
partNopatch
forceNo
configNo
dry_runNo
progressNo
auto_startNo
start_phaseNo
single_phaseNo
project_filterNo
allow_pre_commitNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, covering the safety profile. The description adds real behavioral context beyond that: changes cascade to every phase >= N, and the auto_start advance only moves forward and stands down when project_filter/force are set. It stops short of describing the actual side effects (file edits, commits, pushes) the workflow performs.

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 opening sentence is front-loaded and clear, and the auto_start paragraph is dense without repetition. But the allocation is disproportionate: nearly the entire description expands one parameter while the other nine are ignored, so length is not well spent relative to the tool's surface area.

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 10-parameter, zero-coverage mutation tool with no output schema and an open-world hint, the description is incomplete. It omits most parameters, the return behavior, and any sibling differentiation, leaving an agent unable to call it correctly in many situations.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry the load, and it richly explains the interplay of auto_start, start_phase, project_filter, and force. But six of ten parameters (`part`, `config`, `dry_run`, `progress`, `single_phase`, `allow_pre_commit`) are undocumented in both schema and description — notably `part` and the safety-relevant `dry_run`. Partial compensation only.

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

Purpose4/5

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

The description states a specific verb and resource: 'Execute the phased bumpversion workflow: pre-commits + phased bumping.' This is more informative than the vague tool name 'maintain_projects' and clarifies the operation. However, it does not distinguish itself from the near-identical sibling `repository_manager_phased_bumpversion`, leaving the agent unsure which one to select.

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 bulk of the text describes how `auto_start` behaves once invoked, not when to choose this tool over alternatives. There is no comparison to siblings like `repository_manager_phased_bumpversion`, `repository_manager_bulk_bump`, or `repository_manager_pre_commit`, and no statement of prerequisites. Tool-selection guidance is absent.

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

repository_manager_phased_bumpversionPhased bumpversionB

Execute the phased bumpversion workflow: pre-commits + phased bumping.

auto_start (the default) begins the run at the lowest phase that actually contains a repo with pending work (advancing start_phase forward, never backward) so unchanged upstream phases are skipped. A change in phase N still cascades to every phase >= N. It stands down — running from the explicit start_phase — when project_filter or force is set, since those are explicit-targeting requests that deliberately bypass change detection. Pass auto_start=False to opt out and always start at start_phase.

Concept: CONCEPT:RM-BUMP

NameRequiredDescriptionDefault
partNopatch
forceNo
configNo
dry_runNo
progressNo
auto_startNo
start_phaseNo
single_phaseNo
project_filterNo
allow_pre_commitNo

TDQS

B3.4/5.0
Behavior4/5

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

Annotations establish the safety profile (readOnlyHint=false, openWorldHint=true, destructiveHint=false). The description adds genuine behavioral context beyond that: change detection that skips unchanged upstream phases, cascading from phase N to all phases >= N, and the exact conditions that disable auto-start. It still doesn't state that version files are mutated or what dry_run does, but the added workflow semantics are substantive.

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?

Purpose is front-loaded and the auto_start paragraph is coherent, but it devotes nearly the entire body to one parameter while ignoring six others, and the trailing 'Concept: CONCEPT:RM-BUMP' line adds little for an agent. Proportion is skewed rather than wasteful, but not well balanced.

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 10-parameter, no-output-schema, mutation-capable workflow tool, the description covers the workflow concept and auto_start behavior but leaves dry_run (a safety-relevant flag), part, single_phase, allow_pre_commit, config and progress entirely unexplained. An agent cannot safely invoke the full surface from this description alone.

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

Parameters3/5

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

With 0% schema description coverage across 10 parameters, the description must carry the burden, and it explains only 4 (auto_start, start_phase, project_filter, force) — reasonably well for auto_start and start_phase. The remaining six (part, config, dry_run, progress, single_phase, allow_pre_commit) get no explanation at all, so compensation is partial.

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

Purpose4/5

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

States a specific verb and resource: 'Execute the phased bumpversion workflow: pre-commits + phased bumping.' An agent knows this runs a phased version bump, but the description never distinguishes it from close siblings such as repository_manager_bump_version, repository_manager_bulk_bump, or repository_manager_phased_push, so sibling differentiation is left to inference.

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

Usage Guidelines3/5

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

It gives real conditional guidance on auto_start vs start_phase and when the tool stands down (project_filter or force set), which implies usage context. However, it offers no guidance on when to choose this tool over bump_version/bulk_bump/phased_push, so the alternative-selection dimension is absent.

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

repository_manager_phased_pushPhased pushA

Execute the phased git push workflow.

auto_start (the default) begins the push at the lowest phase that has a repo with unpushed work (advancing start_phase forward, never backward), skipping the inter-phase waits of unchanged upstream phases. It stands down — pushing from the explicit start_phase — when project_filter is set, since that is an explicit-targeting request. Pass auto_start=False to opt out and always start at start_phase.

Concept: CONCEPT:RM-PUSH

NameRequiredDescriptionDefault
configNo
progressNo
auto_startNo
start_phaseNo
single_phaseNo
project_filterNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations declare the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true), and the description adds genuine behavior beyond that: auto_start advances start_phase forward but never backward, and skips inter-phase waits of unchanged upstream phases. It still omits what is actually pushed, to which remotes, and failure/auth behavior for an open-world operation.

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 guidance is front-loaded and each conditional sentence carries weight, but the trailing 'Concept: CONCEPT:RM-PUSH' line is internal clutter that contributes nothing for an agent, and the prose is dense with undefined phase jargon.

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 6-parameter mutating tool with no output schema and 0% schema coverage, the description covers the phase-selection mechanics adequately but leaves the config/progress payloads, single_phase behavior, and the overall outcome of the push unspecified.

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

Parameters3/5

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

Schema description coverage is 0% across 6 parameters, so the description carries the burden and does explain auto_start, start_phase, and project_filter semantics substantively. But config, progress, and single_phase — including two opaque nested objects — receive no explanation anywhere, leaving half the parameters undocumented.

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

Purpose4/5

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

States a specific verb and resource — 'Execute the phased git push workflow' — which clearly identifies it as the phased variant of a push. However, it never names or contrasts with the many push siblings (repository_manager_push_projects, rm_git_push, rm_git_phased_push), so an agent must rely on the name alone to disambiguate.

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?

Gives real conditional guidance for auto_start: it stands down when project_filter is set because that is 'an explicit-targeting request', and auto_start=False opts out. But it offers no when-to-use guidance relative to the other push tools, so the choice between this and push_projects is left to inference.

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

repository_manager_pre_commitPre commitB

Execute pre-commit commands in the specified path.

Args: run (bool): Whether to run 'pre-commit run --all-files'. Default True. autoupdate (bool): Whether to run 'pre-commit autoupdate'. Default False. path (str, optional): Path to run in. Defaults to self.path.

NameRequiredDescriptionDefault
runNo
pathNo
autoupdateNo

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, openWorldHint=true and destructiveHint=false. The description adds real value by naming the underlying commands ('pre-commit run --all-files', 'pre-commit autoupdate'), which reveals that this mutates files and rewrites the config, but it omits failure behavior, whether hook failures abort, and any permission/install prerequisites.

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 purpose sentence is front-loaded and the parameter notes are compact. The docstring-style Args block is slightly verbose relative to the three trivial booleans/string, but nothing is wasted.

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

Completeness3/5

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

With no output schema and thin annotations, the description should do more for a mutation tool: it says nothing about return values, exit-status semantics, or what happens when no pre-commit config exists at the path. It is adequate for invocation but leaves operational questions open.

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

Parameters4/5

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

Schema description coverage is 0%, so the description carries the full burden and does so: it maps each boolean to a concrete CLI action and gives the path default. This meaningfully exceeds the bare type/default information in the schema, though it does not explain interaction between run and autoupdate or how path is resolved when omitted.

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

Purpose4/5

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

States a specific verb+resource: 'Execute pre-commit commands in the specified path.' An agent knows this runs pre-commit tooling against a repo path. It does not, however, distinguish itself from the very similar siblings repository_manager_pre_commit_projects or rm_git_pre_commit, so the agent must guess which variant applies.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, and no mention of the near-identical siblings that do the same job at project or git level. The only usage signal is the default flags, which describe behavior rather than context.

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

repository_manager_pre_commit_projectsPre commit projectsC

Execute pre-commit commands for all projects in parallel.

Returns: List[GitResult]: A list of GitResult objects.

NameRequiredDescriptionDefault
runNo
projectsNo
autoupdateNo

TDQS

C2.6/5.0
Behavior2/5

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

Annotations declare readOnlyHint=false, openWorldHint=true, destructiveHint=false, so the safety profile is partly covered. However, the description never says what pre-commit actually does to the workspace (running hooks can modify files, the 'run'/'autoupdate' flags hint at mutation), nor what authentication or environment preconditions apply. For a mutation tool with three undocumented flags, this is a significant gap.

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?

Two short sentences with the core action front-loaded, so there is no waste. However, brevity here reflects under-specification rather than tight writing: the entire parameter surface and behavioral posture are left unexplained.

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?

A mutation tool with three undocumented parameters, no output schema, and only generic annotations. The description covers the verb and scope but omits parameter meanings, mutation effects on the workspace, and any selection criteria relative to its many commit/pre-commit siblings.

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

Parameters2/5

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

Schema description coverage is 0% for three parameters, so the schema documents nothing. The description mentions 'all projects' (hinting at the projects filter) but says nothing about 'run' or 'autoupdate', and the return-type note addresses output, not inputs. With low coverage the description needed to compensate and does not.

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

Purpose4/5

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

States a specific verb and resource ('Execute pre-commit commands') and adds a distinguishing scope detail ('for all projects in parallel'), which separates it from the singular sibling repository_manager_pre_commit. It does not explicitly name the sibling, but the plural scope does the differentiation work.

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

Usage Guidelines2/5

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

No guidance on when to use this versus repository_manager_pre_commit, rm_git_pre_commit, or repository_manager_validate_single_project. The agent must infer that 'all projects' means this is the bulk variant, with no stated prerequisites or exclusion conditions.

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

repository_manager_pull_projectPull projectA

Pull updates for a single Git project and optionally checkout the default branch.

Args: path (str): The path to the project to pull. Defaults to self.path.

Returns: GitResult: The result of the pull operation.

NameRequiredDescriptionDefault
pathNo

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds that the operation can optionally checkout the default branch and returns a GitResult, but it does not discuss dirty-worktree behavior, authentication, or failure modes.

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 short, front-loaded with the action and scope, and then documents the single parameter and return type without filler. Every sentence contributes to correct invocation.

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 mutation tool with one optional parameter and no output schema, the description is adequate but thin. It gives the return type name but not the shape of GitResult, and it omits operational prerequisites such as valid project path or network/remote availability.

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

Parameters4/5

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

Schema description coverage is 0%, so the description carries the burden for the one parameter. It explains that path is the project path and defaults to self.path, which adds useful meaning beyond the schema’s bare null default.

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

Purpose5/5

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

States a specific verb ('Pull') and resource ('single Git project'), and the phrase 'single' distinguishes it from bulk sibling repository_manager_pull_projects. The optional default-branch checkout is also explicitly named, so an agent can understand the scope without opening the schema.

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

Usage Guidelines3/5

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

Usage is implied by 'single Git project', which contrasts with the plural pull tool, but there is no explicit when-to-use guidance, no exclusions, and no named alternative such as repository_manager_pull_projects or rm_git_pull. The description leaves the agent to infer the appropriate context.

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

repository_manager_pull_projectsPull projectsB

Pull updates for multiple projects in parallel.

NameRequiredDescriptionDefault
project_dirsNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already disclose that this is not read-only, is open-world, and is non-destructive. The description adds useful parallel-execution context, but it omits conflict handling, authentication needs, and failure behavior during pulls.

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. Every word contributes to scope and behavior.

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

Completeness2/5

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

For a bulk git-pull operation with no output schema and an undocumented optional parameter, the description is too sparse. It does not clarify whether omitting project_dirs pulls all projects, which is a key invocation detail.

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

Parameters2/5

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

Schema description coverage is 0%, and the single optional parameter project_dirs is not mentioned in the description. It does not explain what directories are expected or what happens when the parameter is omitted, which is important for correct invocation.

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 (“Pull”) and resource (“projects”) and adds scope (“multiple projects in parallel”), which helps distinguish it from the singular pull_project sibling. It does not explicitly name the singular alternative, but the plurality is a clear differentiator.

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 multiple projects in parallel” implies this is the bulk variant, but it does not state when to prefer it over pull_project or rm_git_pull, nor does it mention prerequisites or exclusions. Usage is inferable but not explicit.

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

repository_manager_push_projectPush projectA

Atomically publish a clean checkout's exact current branch and release tag.

Publication runs from a sealed private admin repository, uses only the authorized direct destination, and reads every remote ref back before reporting success. Dirty state, gate failure, identity/config drift, non-fast-forward updates, tag collisions, and partial atomic updates all refuse publication; GitHub push protection returns an actionable error.

NameRequiredDescriptionDefault
pathNo

TDQS

A3.6/5.0
Behavior5/5

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

Annotations only give the safety profile (readOnlyHint=false, openWorldHint=true, destructiveHint=false); the description adds substantial behavior beyond them: atomicity, execution from a sealed private admin repository, use of the authorized direct destination, read-back of every remote ref before success, and the specific failure modes that refuse publication. It also discloses the GitHub push-protection error path, which is exactly the kind of operational detail an agent needs.

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?

Front-loaded with the action and its atomic semantics, followed by environment and refusal conditions. No filler sentences. The failure-mode list is long but each item is a distinct refusal condition that earns its place, so it stays 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?

Failure behavior, atomicity, and verification are covered well, which matters most for a publish operation. But with no output schema and an undescribed 'path' parameter, the definition still leaves open what the argument identifies, what a success result looks like, and whether any dry-run or targeting option exists.

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 single parameter 'path' has 0% schema description coverage, and the description never mentions it or explains what it points at (checkout root? project directory?). With one undocumented parameter the description is the only place this could be clarified and it is not, so it fails to compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb and scope: atomically publishing a clean checkout's exact current branch and release tag. That is far more precise than the title 'Push project'. However it never distinguishes itself from the many sibling push tools (repository_manager_push_projects, repository_manager_phased_push, rm_git_push, repository_manager_validate_and_release), so an agent must still infer the difference from the name.

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 refusal list (dirty state, gate failure, identity/config drift, non-fast-forward, tag collisions) implicitly tells the agent this should only be invoked on a clean, gate-passing checkout, which is useful invocation context. But there is no explicit when-to-use statement and no routing to alternatives such as the plural push_projects or phased_push, so the guidance remains implied.

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

repository_manager_push_projectsPush projectsC

Push updates for multiple projects in parallel.

NameRequiredDescriptionDefault
project_dirsNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations declare the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true), so the agent already knows this is a non-destructive network write. The description adds the genuinely useful 'in parallel' concurrency trait, but says nothing about auth requirements, partial-failure handling, or whether the operation is reversible.

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

Conciseness4/5

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

One short sentence with the concurrency trait front-loaded and zero filler. It is efficient, though its brevity is part of why other dimensions are thin.

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 mutating, open-world bulk tool with one undocumented parameter and no output schema, the description is inadequate: it omits failure semantics, scope defaults, and any result behavior, leaving the agent unable to predict what calling it will do.

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 single parameter project_dirs has 0% schema description coverage and the description does not mention it at all — it doesn't explain the expected directory format, whether it accepts globs, or what happens when it is omitted (default null). The description does not compensate for the schema gap.

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

Purpose4/5

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

States a specific verb (push) and resource (projects), and the plural plus 'in parallel' implicitly distinguishes it from the singular repository_manager_push_project. However, it never clarifies the destination (git remote?) or what 'updates' means, so it stops short of a fully self-contained purpose.

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

Usage Guidelines2/5

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

No when-to-use guidance at all. With siblings like repository_manager_push_project, repository_manager_phased_push, and rm_git_push, the description gives no condition for choosing this bulk variant over them, leaving the agent to infer that 'multiple projects' is the selector.

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

repository_manager_save_workspace_configSave workspace configC

Saves the current or provided WorkspaceConfig to a YAML file.

NameRequiredDescriptionDefault
configNo
yaml_pathYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, and the description's 'saves ... to a YAML file' is consistent with that write profile. It adds the useful detail that the config may be the current in-memory one or an explicitly provided one, but says nothing about overwrite behavior, directory creation, permissions, or failure modes.

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

Conciseness4/5

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

A single front-loaded sentence with no filler. It is efficiently written, though for a tool with such a deeply nested config schema it is arguably under-sized rather than over-sized.

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 very large nested WorkspaceConfig schema, no output schema, and 0% parameter description coverage, the description is not complete enough: it omits overwrite behavior, target path handling, and what the caller should pass when omitting config.

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

Parameters2/5

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

Schema description coverage is 0%, so the schema documents neither parameter beyond its type. The description partially explains 'config' (omitting it saves the current config) but gives no meaning for the required yaml_path parameter, such as path resolution or overwrite semantics.

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

Purpose4/5

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

States a specific verb (saves) and resource (WorkspaceConfig) with a clear target (a YAML file), so the agent can tell it is a serialization/write tool. It does not explicitly distinguish itself from close siblings like repository_manager_load_projects_from_yaml or rm_workspace_save, 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 Guidelines2/5

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

The description gives no when-to-use guidance, no prerequisites, and no mention of alternatives such as rm_workspace_save or the load/setup-from-yaml siblings. The phrase 'current or provided' hints at behavior but never states the condition under which each mode applies.

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

repository_manager_set_threadsSet threadsC

Set the number of threads for parallel processing.

Args: threads (int): The number of threads.

Notes: If the input is invalid, defaults 6

NameRequiredDescriptionDefault
threadsYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, which is a lower bar. The description does add real behavioral context beyond that: invalid input silently falls back to 6 rather than erroring. But it omits whether the change persists across sessions, what it affects, and whether it is reversible.

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

Conciseness3/5

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

Front-loaded and physically short, but the Args block merely echoes the input schema while the Notes line does all the work. Structure is fine; some content does not earn its place.

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

Completeness3/5

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

For a one-parameter mutation tool with annotations but no output schema, an agent still lacks the setting's scope, persistence, and acceptable input range. The one genuinely useful behavioral fact (silent fallback to 6) is present, so it is not wholly inadequate.

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 0% schema description coverage, the description must carry the load and does not. 'threads (int): The number of threads' restates the name and type with no valid range, bounds, or meaning (e.g. whether 0 means auto-detect). The 'defaults 6' note is the only added semantic.

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

Purpose4/5

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

States a specific verb and resource: 'Set the number of threads for parallel processing.' An agent knows it is a configuration setter, and no sibling tool covers the same ground. However, it never says which processing this governs (builds, validation, workspace scans), so the scope is left vague.

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 when-to-use guidance, no prerequisites, no mention of alternatives or whether the setting is global or per-operation. The reader must infer the entire usage context from the verb 'set'.

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

repository_manager_setup_from_yamlSetup from yamlA

Sets up the workspace structure from a YAML file.

install=True extends clone/pull with the fresh-machine bootstrap gap this closes (CONCEPT:RM-BOOTSTRAP): after every repository is cloned or pulled, materialize the .uv-workspace-siblings/ symlinks and run uv sync for agent-connector-sdk and every cloned project that declares a path dependency on it, dependency-ordered (agent-connector-sdk first). See :meth:install_projects for the mechanism and its documented limits. Install failures are reported, never masked -- setup_from_yaml returns status="error" if any project failed to install, even though every repository was still cloned/pulled.

NameRequiredDescriptionDefault
installNo
yaml_pathYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations only tell us it is a non-destructive writer in an open world. The description adds real behavior beyond that: symlink materialization, `uv sync` for path-dependency projects, dependency ordering, and the specific error contract (status="error" if any install fails even though cloning succeeded). It does not say what happens to pre-existing workspace state on re-run, which is the main remaining gap for a write tool.

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 purpose is correctly front-loaded in one sentence. The remainder is a single dense paragraph strewn with RST double-backticks, a CONCEPT:RM-BOOTSTRAP tag, and a cross-reference to :meth:`install_projects`, which reads as internal documentation rather than an agent-facing summary. The content is largely valuable but not tightly edited.

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 two-parameter write tool with no output schema and no annotations beyond safety hints, the description covers the important ground: what install does, ordering guarantees, and return-status semantics on failure. It is only missing the re-run/idempotency story and any hint about the expected YAML structure.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It does a good job explaining `install=True` (bootstrap symlinks, dependency-ordered uv sync) but never states the install=False default behavior explicitly, and `yaml_path` is left entirely undescribed — no format, expected schema, or resolution rules. Partial compensation for a documented parameter.

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

Purpose4/5

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

The opening sentence gives a specific verb and resource: 'Sets up the workspace structure from a YAML file.' It is clear and unambiguous, but it never differentiates itself from the many near-name siblings like repository_manager_load_projects_from_yaml, rm_workspace_setup, or repository_manager_generate_workspace_template, so an agent cannot route between them from the text alone.

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

Usage Guidelines3/5

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

The description implies usage through the install flag: pass install=True on a fresh machine to also bootstrap dependencies. But it never states when to prefer this tool over load_projects_from_yaml or rm_workspace_setup, nor what the default (install=False) path is useful for. Usage must be inferred from the conditional behavior rather than stated.

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

repository_manager_test_projectsTest projectsC

Execute pytests for the specified projects in parallel.

Args: progress_phase: Phase name for live progress updates. progress_dict: Shared mutable dict for live progress reporting.

NameRequiredDescriptionDefault
targetsYes
progress_dictNo
progress_phaseNo

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the safety envelope is partially covered. The description adds the parallel-execution behavior and the live-progress reporting mechanism, which aren't in the annotations, but says nothing about what running tests touches, whether failures abort the run, or how results are surfaced.

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 purpose is front-loaded in a single clear sentence with no padding, which is good. However, the space is spent on internal plumbing args and the single required input receives no coverage, so the structure is misallocated for an agent-facing tool.

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

Completeness2/5

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

With no output schema, no annotation explanation, an undocumented required parameter, and no note on how test results or failures are returned (the progress_dict hint implies in-process state an MCP caller can't meaningfully supply), the definition leaves too much unresolved for correct invocation. Also note the last case is wrong: the last tool listing does include rm_gates_run.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden, yet the Args block documents only the two optional plumbing parameters and completely omits the one required parameter, targets. The expected shape of targets (array of objects mapping arbitrary strings to strings) is left entirely unexplained to the agent.

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

Purpose4/5

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

The description states a specific verb and resource (execute pytests for specified projects) and adds a distinguishing scope detail (in parallel). It does not name any sibling such as rm_gates_run or rm_projects_validate, so an agent cannot tell from the text alone when this is preferred over the other test/validate tools.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisite (e.g. projects must be installed/cloned first), and no alternative named despite many sibling validation and gating tools. The agent must infer usage entirely from the name.

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

repository_manager_update_dependencyUpdate dependencyC

Update a package's pinned version in a deps file (pyproject or requirements).

NameRequiredDescriptionDefault
dry_runNo
file_pathYes
new_versionYes
package_nameYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already establish the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true), so the description's job is to add context. It does not explain the dry_run flag, whether the file is rewritten in place, whether a lockfile is refreshed, or whether the change is reversible. For a file-mutating tool with zero additional behavioral disclosure, this is thin.

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

Conciseness4/5

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

A single front-loaded sentence with no filler; the operation and its target files come first. It is terse to the point of under-specification, but nothing in it is wasted.

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 mutation tool with no output schema, 0% parameter documentation, and a crowded set of overlapping version-bump siblings, the description is too sparse. It omits dry_run behavior, return information, and any differentiation from related tools, leaving the agent to guess.

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

Parameters3/5

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

Schema coverage is 0%, so the description must carry the load. It clarifies the semantics of file_path (a pyproject or requirements deps file), package_name, and new_version by framing the operation as pinning a package's version. The fourth parameter, dry_run, is never mentioned, leaving a real gap.

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

Purpose4/5

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

States a specific verb and resource ('Update a package's pinned version') and narrows scope to deps files (pyproject or requirements), which is more precise than the title. It does not, however, distinguish itself from adjacent sibling tools like repository_manager_bulk_bump or repository_manager_bump_version, which an agent must disambiguate on its own.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of the many sibling bump/version tools that could be chosen instead. The agent gets no signal about when this single-dependency update is preferable to bulk_bump or phased_bumpversion.

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

repository_manager_validate_and_releaseValidate and releaseC

Validate projects in parallel, optionally triggering a release if successful.

NameRequiredDescriptionDefault
threadsNo
auto_bumpNo
auto_pushNo
bump_partNominor

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, openWorldHint=true and destructiveHint=false, and the description's 'optionally triggering a release' is consistent with that. But it omits the significant side effects encoded in the parameters — that auto_push can push to remotes and auto_bump/bump_part mutate version files — so the agent cannot see the true blast radius from the description.

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 well-formed sentence with no filler and the core action front-loaded. It is efficient, though the terseness contributes to the specification gaps rather than being a fault of structure itself.

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?

An output schema exists so return values need not be explained, but the description still leaves four undocumented parameters, undefined release semantics, and no usage routing for a tool that is not read-only. That is insufficient for a mutating, multi-parameter operation.

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

Parameters2/5

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

Schema description coverage is 0% for four parameters, so the description carries the full burden. It only gestures at 'parallel' (threads) and 'release' (auto_bump/auto_push/bump_part) without explaining defaults, allowed bump_part values, or the difference between auto_bump and auto_push.

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

Purpose3/5

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

States a verb ('validate') and resource ('projects') and adds a parallel scope plus an optional release step, which hints at a distinction from repository_manager_validate_single_project. However, it never says which projects are validated (workspace-wide? all configured?) and 'release' is left undefined despite many release-adjacent siblings (bump_version, phased_push, push_project).

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance. It does not tell the agent to prefer repository_manager_validate_single_project for one project or rm_projects_validate for a validation-only pass, so the routing decision is left entirely to inference from the name.

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

repository_manager_validate_single_projectValidate single projectA

Validates a single repository by running its FAST-tier gates.

Delegates to :func:repository_manager.gates.run_gate_stage (the same engine rm_gates uses) with stage="fast" (--hook-stage pre-commit). Under the two-tier gate model a repo's HEAVY hooks (pytest, cargo, uv lock --check, ...) are declared stages: [pre-push, manual] and are therefore correctly excluded here -- use rm_gates action=run stage=heavy for those.

NameRequiredDescriptionDefault
repo_pathYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile with readOnlyHint=false, destructiveHint=false, and openWorldHint=true. The description adds meaningful behavioral context beyond that: it explains the two-tier gate model, says it delegates to the same engine rm_gates uses with stage='fast', and clarifies that heavy hooks are correctly excluded. It stops short of describing failure output or filesystem side effects from running hooks, so it is not fully exhaustive.

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 front-loads the core purpose in the first sentence, then adds implementation and gate-model context that directly supports correct invocation. Every sentence earns its place by clarifying scope or routing the agent to the heavy-stage alternative. There is no filler or redundant restatement of the name.

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

Completeness4/5

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

For a single-parameter tool with no output schema, the description covers purpose, delegation, and the important exclusion of heavy hooks. The safety profile is handled by annotations. The main remaining gap is that the sole parameter is not described anywhere, so an agent still lacks guidance on repo_path. Otherwise the definition is complete enough to invoke correctly.

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

Parameters2/5

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

Schema description coverage is 0%, so the schema does not explain repo_path at all. The description mentions 'a single repository' but never defines the expected path format, whether it is a filesystem path or a project identifier, or any constraints. With one undocumented parameter, the description fails to compensate for the missing schema information.

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 gives a specific verb and resource: 'Validates a single repository by running its FAST-tier gates.' It explicitly scopes the operation to fast-tier gates and distinguishes it from the heavy-stage alternative by naming rm_gates action=run stage=heavy. An agent can tell what this tool does and what it does not do without opening the schema.

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

Usage Guidelines5/5

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

It states when to use this tool (fast-tier validation of a single repository) and when not to use it for heavy hooks, directing the agent to the explicit alternative rm_gates action=run stage=heavy. The exclusion and alternative are both concrete, leaving no ambiguity about the intended use case.

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

repository_manager_worktree_hygieneWorktree hygieneA

Audit (and optionally prune) session worktrees as a release-flow step.

Wraps :meth:WorktreeManager.audit. Read-only by default — it returns the safe_to_prune/do_not_disturb classification so a release run can report what could be cleaned without touching anything. With prune=True it removes only merged worktrees (and dangling admin pointers), never active/stale work or orphaned directories. This is the audit-aware cleanup the release pipeline runs instead of a blind reaper. (CONCEPT:RM-WORKTREE-AUDIT)

NameRequiredDescriptionDefault
baseNomain
pruneNo
stale_daysNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: default is read-only and returns safe_to_prune/do_not_disturb, while prune=True removes only merged worktrees and dangling admin pointers and never active/stale work or orphaned directories. This precisely scopes a non-readOnly tool whose destructive surface is otherwise easy to misjudge.

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?

Front-loaded with the core action, then the read-only default, then the prune semantics — a sensible order with little waste. The parenthetical meth reference and the (CONCEPT:RM-WORKTREE-AUDIT) tag are minor 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?

With an output schema present, the description needn't document return values, and it still clarifies the classification it emits. Annotations cover the safety profile. The remaining gap is the unexplained `base` and `stale_days` parameters, which a caller would have to infer.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. It explains prune=True well and hints at the stale classification, but says nothing about `base` (default 'main') or `stale_days` (default 14), leaving two of three parameters undefined everywhere.

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

Purpose5/5

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

States a specific verb+resource (audit and optionally prune session worktrees) and places it in a concrete workflow (a release-flow step). It also distinguishes itself from the blind reaper siblings, so an agent can tell it apart from rm_worktree_prune/rm_worktree_audit without opening those schemas.

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?

Gives clear when-to-use context: run as a release-flow audit step, and explicitly frames itself as the audit-aware alternative to a blind reaper. It never names the specific sibling tool an agent should avoid, so routing is implied rather than fully explicit.

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

rm_build_artifactsArtifactsC

Artifacts (rm_build). Content-addressed build broker for ANY repository (CONCEPT:RM-TASK-LEDGER).

Keyed by (repo, tree-sha, feature-set, toolchain-fingerprint, target-triple). The DEDUP is the value: N lanes asking for the same build today each pay for a full cargo/pnpm build into their own target-isolated/node_modules — measured at 21.7 GB across 4 duplicate directories after pruning. This tool publishes named artifacts to a shared, checksummed cache instead.

Honest degradation: a dirty tree or an unfingerprintable toolchain BUILDS — it never serves a possibly-stale artifact and never silently skips the cache as though it were consulted.

Co-location: this tool always passes colocated=True to the underlying reservation, because being inside this pinned MCP server process IS the proof of same-node execution that a bare CLI invocation cannot provide — fcntl leases do not arbitrate across nodes, and the lease files live under an NFS-exported path. Route build requests through this tool rather than a bare local invocation when you are not certain you are on the pinned node.

Arbitration is advisory (D-CP-8): an agent running cargo build directly bypasses this broker entirely.

NameRequiredDescriptionDefault
keyNoA cache key, for status/artifacts/explain.
hostNoFor 'request': dispatch to this REGISTERED, authorized remote host (its rm_remote_workers 'register_worker' host_id) instead of building locally. Requires a clean local tree (its HEAD sha + origin are what gets staged and built remotely) and does not yet retrieve artifacts back — see the returned result's 'note'. Omit to build locally (the default, always colocated=True).
specNoWhich declared build spec to use (.buildcache.yaml). Defaults to the repo's first.
repo_pathNoAny working tree of the target repository. Defaults to the server's cwd.
keep_recentNoFor gc: always keep this many most-recent cache entries.
max_age_daysNoFor gc: reclaim cache entries older than this (subject to keep_recent).
wait_timeoutNoSeconds 'request' waits on an in-flight build of the same key before building anyway.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior4/5

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

Adds substantial behavior beyond the annotations: honest degradation (dirty tree or unfingerprintable toolchain always BUILDS, never serves stale), co-location semantics (always colocated=True, fcntl leases don't arbitrate across nodes, NFS-exported lease path), and advisory arbitration. This is consistent with readOnlyHint=false (it publishes into a shared cache) and idempotentHint=false; no contradiction.

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

Conciseness2/5

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

Roughly 200 words organized under bold headers, but front-loaded with a concept declaration rather than the operation, and padded with background that does not aid selection or invocation (the '21.7 GB across 4 duplicate directories' measurement, 'D-CP-8' citation, lease/NFS mechanism details). Several sentences do not earn their place for an agent choosing a tool.

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

Completeness2/5

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

An output schema exists so return values need not be described, but for a 7-parameter tool whose schema is shared across request/status/gc/artifacts verbs, the description leaves the actual artifacts action undefined and does not clarify which parameters apply here. That is a real gap for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents key, host, spec, repo_path, keep_recent, max_age_days, and wait_timeout in detail. The description adds nothing parameter-level beyond the vague 'publishes named artifacts,' so the baseline 3 applies.

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

Purpose2/5

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

The description names the resource ('Artifacts (rm_build)', 'content-addressed build broker') but never states what this tool actually does — list cache artifacts for a key? publish them? The name and title are restated with conceptual framing rather than a specific verb, and the schema's own param hints ('for status/artifacts/explain', 'for gc', 'for request') suggest the operation is one of several, yet the description does not identify which.

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

Usage Guidelines3/5

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

It gives one real routing rule: 'Route build requests through this tool rather than a bare local invocation when you are not certain you are on the pinned node,' which distinguishes it from a bare CLI call. However, it never distinguishes this tool from the obvious siblings rm_build_request, rm_build_status, rm_build_explain, and rm_build_gc, whose verbs are conflated in the same schema.

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

rm_build_explainExplainC

Explain (rm_build). Content-addressed build broker for ANY repository (CONCEPT:RM-TASK-LEDGER).

Keyed by (repo, tree-sha, feature-set, toolchain-fingerprint, target-triple). The DEDUP is the value: N lanes asking for the same build today each pay for a full cargo/pnpm build into their own target-isolated/node_modules — measured at 21.7 GB across 4 duplicate directories after pruning. This tool publishes named artifacts to a shared, checksummed cache instead.

Honest degradation: a dirty tree or an unfingerprintable toolchain BUILDS — it never serves a possibly-stale artifact and never silently skips the cache as though it were consulted.

Co-location: this tool always passes colocated=True to the underlying reservation, because being inside this pinned MCP server process IS the proof of same-node execution that a bare CLI invocation cannot provide — fcntl leases do not arbitrate across nodes, and the lease files live under an NFS-exported path. Route build requests through this tool rather than a bare local invocation when you are not certain you are on the pinned node.

Arbitration is advisory (D-CP-8): an agent running cargo build directly bypasses this broker entirely.

NameRequiredDescriptionDefault
keyNoA cache key, for status/artifacts/explain.
hostNoFor 'request': dispatch to this REGISTERED, authorized remote host (its rm_remote_workers 'register_worker' host_id) instead of building locally. Requires a clean local tree (its HEAD sha + origin are what gets staged and built remotely) and does not yet retrieve artifacts back — see the returned result's 'note'. Omit to build locally (the default, always colocated=True).
specNoWhich declared build spec to use (.buildcache.yaml). Defaults to the repo's first.
repo_pathNoAny working tree of the target repository. Defaults to the server's cwd.
keep_recentNoFor gc: always keep this many most-recent cache entries.
max_age_daysNoFor gc: reclaim cache entries older than this (subject to keep_recent).
wait_timeoutNoSeconds 'request' waits on an in-flight build of the same key before building anyway.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior4/5

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

Annotations set readOnlyHint=false and idempotentHint=false, and the description adds genuinely useful context beyond them: the honest-degradation rule (dirty tree builds rather than serving stale artifacts), the mandatory colocated=True reservation, the fcntl-lease/NFS cross-node limitation, and the advisory-only arbitration. That is real behavioral disclosure, though it is framed for the broker generally and never states whether the explain call itself writes or reserves.

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

Conciseness2/5

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

It is an essay with bold pseudo-headings, ALL-CAPS emphasis and ledger references, most of which serve the broker concept rather than this tool. The one sentence that matters (what explain returns) is absent while multiple paragraphs explain siblings' behavior, so it is both over-long and mis-front-loaded.

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?

An output schema exists, so return-shape detail is unnecessary, but for a 7-parameter tool in a dense family the description still fails to say what explain does with a key, how it resolves repo_path/spec, or how to read the result. The context it supplies is about the family, leaving the specific operation under-defined.

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% and the per-parameter descriptions (host, spec, repo_path, keep_recent, max_age_days, wait_timeout) are detailed, so the schema carries the semantics. The description adds nothing parameter-specific beyond the general colocated=True claim, so the baseline 3 applies.

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

Purpose2/5

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

The opening line is only 'Explain (rm_build)' and the body describes the build broker family as a whole (dedup value, cache keying, co-location leases) rather than what the explain operation actually returns or computes. An agent cannot tell from this text what an 'explain' of a cache key produces, nor how it differs from rm_build_status or rm_build_artifacts, which the schema's own 'key' description bundles together ('for status/artifacts/explain').

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

Usage Guidelines2/5

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

There is advice about routing build requests through the pinned node and the note that arbitration is purely advisory, but that guidance targets the request/build path, not when to call explain versus its siblings. No statement of when explain is the right tool, what input it needs, or when to prefer status/artifacts instead.

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

rm_build_gcGcC

Gc (rm_build). Content-addressed build broker for ANY repository (CONCEPT:RM-TASK-LEDGER).

Keyed by (repo, tree-sha, feature-set, toolchain-fingerprint, target-triple). The DEDUP is the value: N lanes asking for the same build today each pay for a full cargo/pnpm build into their own target-isolated/node_modules — measured at 21.7 GB across 4 duplicate directories after pruning. This tool publishes named artifacts to a shared, checksummed cache instead.

Honest degradation: a dirty tree or an unfingerprintable toolchain BUILDS — it never serves a possibly-stale artifact and never silently skips the cache as though it were consulted.

Co-location: this tool always passes colocated=True to the underlying reservation, because being inside this pinned MCP server process IS the proof of same-node execution that a bare CLI invocation cannot provide — fcntl leases do not arbitrate across nodes, and the lease files live under an NFS-exported path. Route build requests through this tool rather than a bare local invocation when you are not certain you are on the pinned node.

Arbitration is advisory (D-CP-8): an agent running cargo build directly bypasses this broker entirely.

NameRequiredDescriptionDefault
keyNoA cache key, for status/artifacts/explain.
hostNoFor 'request': dispatch to this REGISTERED, authorized remote host (its rm_remote_workers 'register_worker' host_id) instead of building locally. Requires a clean local tree (its HEAD sha + origin are what gets staged and built remotely) and does not yet retrieve artifacts back — see the returned result's 'note'. Omit to build locally (the default, always colocated=True).
specNoWhich declared build spec to use (.buildcache.yaml). Defaults to the repo's first.
repo_pathNoAny working tree of the target repository. Defaults to the server's cwd.
keep_recentNoFor gc: always keep this many most-recent cache entries.
max_age_daysNoFor gc: reclaim cache entries older than this (subject to keep_recent).
wait_timeoutNoSeconds 'request' waits on an in-flight build of the same key before building anyway.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.2/5.0
Behavior2/5

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

The description does add real behavioral context (colocated=True reservation, advisory arbitration, 'honest degradation' on dirty trees), which is more than the bare annotations give. However, for a GC operation the critical behaviors — what gets deleted, whether reclamation is reversible, interaction with active leases — are entirely absent, and `destructiveHint: false` is left unexplained against a tool whose params say it 'reclaim[s] cache entries'. No outright contradiction in the description text itself, but the disclosure misses the operation it names.

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

Conciseness2/5

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

The text is long and back-loaded with meta-commentary (CONCEPT:RM-TASK-LEDGER, D-CP-8, bold ALL-CAPS fragments) before anything actionable. Much of it — 21.7 GB measurements, cargo/pnpm anecdotes, NFS lease details — is irrelevant to invoking this specific tool, and the tool's actual action is never front-loaded.

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?

An output schema exists so return values need no explanation, but the description omits the core of a GC tool: what state it mutates, whether it is safe to run concurrently with builds or lanes, and any prerequisites. Given seven optional params with multi-mode behavior, the description leaves the agent without the information needed to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3; each parameter including `keep_recent`, `max_age_days`, and `wait_timeout` is already documented in the schema. The description adds only the conceptual key tuple `(repo, tree-sha, feature-set, toolchain-fingerprint, target-triple)`, which mildly enriches `key` but does not change how any param is passed.

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

Purpose2/5

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

The name and title say 'Gc', and two params are explicitly 'For gc', yet the description never states that this tool reclaims/garbage-collects cache entries. Instead it describes a build broker that 'publishes named artifacts to a shared, checksummed cache' — an operation belonging to sibling tools like rm_build_request. An agent reading only the description would not know this tool's verb.

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

Usage Guidelines2/5

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

There is guidance for routing build *requests* through the broker and for the remote `host` path, but nothing on when to run a GC, how it interacts with in-flight builds, or when to prefer it over rm_projects_build/cleanup tools. The guidance present is for a different mode than the tool name implies.

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

rm_build_requestRequestB

Request (rm_build). Content-addressed build broker for ANY repository (CONCEPT:RM-TASK-LEDGER).

Keyed by (repo, tree-sha, feature-set, toolchain-fingerprint, target-triple). The DEDUP is the value: N lanes asking for the same build today each pay for a full cargo/pnpm build into their own target-isolated/node_modules — measured at 21.7 GB across 4 duplicate directories after pruning. This tool publishes named artifacts to a shared, checksummed cache instead.

Honest degradation: a dirty tree or an unfingerprintable toolchain BUILDS — it never serves a possibly-stale artifact and never silently skips the cache as though it were consulted.

Co-location: this tool always passes colocated=True to the underlying reservation, because being inside this pinned MCP server process IS the proof of same-node execution that a bare CLI invocation cannot provide — fcntl leases do not arbitrate across nodes, and the lease files live under an NFS-exported path. Route build requests through this tool rather than a bare local invocation when you are not certain you are on the pinned node.

Arbitration is advisory (D-CP-8): an agent running cargo build directly bypasses this broker entirely.

NameRequiredDescriptionDefault
keyNoA cache key, for status/artifacts/explain.
hostNoFor 'request': dispatch to this REGISTERED, authorized remote host (its rm_remote_workers 'register_worker' host_id) instead of building locally. Requires a clean local tree (its HEAD sha + origin are what gets staged and built remotely) and does not yet retrieve artifacts back — see the returned result's 'note'. Omit to build locally (the default, always colocated=True).
specNoWhich declared build spec to use (.buildcache.yaml). Defaults to the repo's first.
repo_pathNoAny working tree of the target repository. Defaults to the server's cwd.
keep_recentNoFor gc: always keep this many most-recent cache entries.
max_age_daysNoFor gc: reclaim cache entries older than this (subject to keep_recent).
wait_timeoutNoSeconds 'request' waits on an in-flight build of the same key before building anyway.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior4/5

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

With annotations declaring readOnlyHint=false, idempotentHint=false and destructiveHint=false, the description adds substantial non-duplicative context: honest degradation (a dirty tree or unfingerprintable toolchain always BUILDS, never serves a possibly-stale artifact, never silently skips the cache), the always-colocated=True invariant and why (fcntl leases don't arbitrate across nodes), and that arbitration is advisory (D-CP-8). It does not say what a gc-mode call destroys, which is the one behavioral gap given the max_age_days/keep_recent parameters in the schema.

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

Conciseness2/5

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

The purpose line is front-loaded and the bold headers give it shape, but the body is heavy with material that does not help an agent act: a measured '21.7 GB across 4 duplicate directories' anecdote, the CONCEPT:RM-TASK-LEDGER tag, and the spec-style 'D-CP-8' citation. Em-dash-laden prose inflates the size well past the information it carries, so few sentences earn their place.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the primary 'request' path plus its degradation and co-location invariants are covered. What is missing is the tool's own mode surface: the schema exposes gc/status/artifacts/explain parameters that the description never acknowledges, leaving the agent unable to tell whether to call this tool or rm_build_gc/rm_build_status/rm_build_artifacts/rm_build_explain.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all seven parameters, making 3 the baseline. The description adds a conceptual gloss on the cache key — the (repo, tree-sha, feature-set, toolchain-fingerprint, target-triple) tuple — which is genuinely beyond the schema's terse 'A cache key, for status/artifacts/explain', but it does not attach that explanation to the `key` parameter explicitly and says nothing about wait_timeout, keep_recent or max_age_days.

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

Purpose3/5

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

The description characterizes the tool as a 'content-addressed build broker' and explains the dedup payoff (publishing named artifacts to a shared checksummed cache instead of N lanes each paying for a full cargo/pnpm build), so the general intent is graspable. However, it never states the primary action as a verb, and the schema's own parameters ('for gc', 'for status/artifacts/explain') reveal this tool also serves GC and status/explain modes that the description never mentions or reconciles with the sibling tools rm_build_gc, rm_build_status, rm_build_artifacts and rm_build_explain. Purpose is therefore clear-ish but muddled about what the tool actually does and where it stops.

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?

There is real guidance for one alternative: 'Route build requests through this tool rather than a bare local invocation when you are not certain you are on the pinned node,' plus the note that a direct `cargo build` bypasses the broker. But the far more decision-relevant routing — this tool vs the four rm_build_* siblings that appear to cover the gc/status/artifacts/explain parameters exposed here — is entirely absent, and no conditions are given for choosing the `host` remote-dispatch path beyond what the schema already says.

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

rm_build_statusStatusC
Read-onlyIdempotent

Status (rm_build). Content-addressed build broker for ANY repository (CONCEPT:RM-TASK-LEDGER).

Keyed by (repo, tree-sha, feature-set, toolchain-fingerprint, target-triple). The DEDUP is the value: N lanes asking for the same build today each pay for a full cargo/pnpm build into their own target-isolated/node_modules — measured at 21.7 GB across 4 duplicate directories after pruning. This tool publishes named artifacts to a shared, checksummed cache instead.

Honest degradation: a dirty tree or an unfingerprintable toolchain BUILDS — it never serves a possibly-stale artifact and never silently skips the cache as though it were consulted.

Co-location: this tool always passes colocated=True to the underlying reservation, because being inside this pinned MCP server process IS the proof of same-node execution that a bare CLI invocation cannot provide — fcntl leases do not arbitrate across nodes, and the lease files live under an NFS-exported path. Route build requests through this tool rather than a bare local invocation when you are not certain you are on the pinned node.

Arbitration is advisory (D-CP-8): an agent running cargo build directly bypasses this broker entirely.

NameRequiredDescriptionDefault
keyNoA cache key, for status/artifacts/explain.
hostNoFor 'request': dispatch to this REGISTERED, authorized remote host (its rm_remote_workers 'register_worker' host_id) instead of building locally. Requires a clean local tree (its HEAD sha + origin are what gets staged and built remotely) and does not yet retrieve artifacts back — see the returned result's 'note'. Omit to build locally (the default, always colocated=True).
specNoWhich declared build spec to use (.buildcache.yaml). Defaults to the repo's first.
repo_pathNoAny working tree of the target repository. Defaults to the server's cwd.
keep_recentNoFor gc: always keep this many most-recent cache entries.
max_age_daysNoFor gc: reclaim cache entries older than this (subject to keep_recent).
wait_timeoutNoSeconds 'request' waits on an in-flight build of the same key before building anyway.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2/5.0
Behavior1/5

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

Annotations declare readOnlyHint=true and idempotentHint=true, but the description attributes mutating behavior directly to this tool: "This tool publishes named artifacts to a shared, checksummed cache instead," "a dirty tree or an unfingerprintable toolchain BUILDS," and "this tool always passes colocated=True to the underlying reservation" (a lease acquisition). A status/query endpoint described as building, publishing, and taking leases is inconsistent with its read-only annotation.

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

Conciseness2/5

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

Four dense bolded sections covering dedup economics, degradation policy, co-location rationale, and advisory arbitration consume far more space than a single status tool warrants, and most of that content is not about this tool's operation. The actionable sentence (the key tuple) is not front-loaded; the reader must wade through broker philosophy to find anything usable.

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?

An output schema exists, so return values need not be described, but for a broker this complex the description still leaves the essential question unanswered: what does a status call report, and how does the agent act on it? With 7 parameters and no mode selector documented, the agent cannot tell which parameters are live for this endpoint versus request/gc.

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%, with per-parameter text already covering key, host, spec, repo_path, keep_recent, max_age_days, and wait_timeout, so the baseline is 3. The description adds only the composite key tuple (repo, tree-sha, feature-set, toolchain-fingerprint, target-triple), which is contextual framing rather than new per-parameter meaning.

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

Purpose2/5

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

The description opens with "Status (rm_build)" and then explains the build broker's value proposition (dedup, caching, co-location) rather than what this specific tool does or returns. It never states the actionable outcome of a status call, and it does not distinguish itself from the sibling endpoints rm_build_request, rm_build_artifacts, rm_build_explain, or rm_build_gc, which the parameter text itself implies exist. The name/verb is clear but the purpose is buried under concept documentation.

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 only routing advice given ("Route build requests through this tool rather than a bare local invocation...") concerns the broker as a whole, not when to call status versus artifacts/explain/gc. There is no guidance on prerequisites (e.g., what a valid cache key is, whether a key is required for a meaningful status result) or on when this tool should be skipped.

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

rm_concepts_getGetC
Read-onlyIdempotent

Get (rm_concepts). Concept-id claim coordination against RMDD-16's central authority.

Repository-manager never allocates a concept id itself: every action here is a thin, MCP/CLI-neutral consumer of an injected authority port. When the central authority (agent_connector_sdk.governance. concept_reservation) is unavailable in this environment, every mutating action refuses with a named dependency_blocked/ConceptAuthorityUnavailable error instead of fabricating a local allocation -- it never mints or reuses an id on its own.

NameRequiredDescriptionDefault
limitNoFor list: page size.
stateNoFor list: filter by claim state.
branchNoFor reserve, optional.
cursorNoFor list: opaque page cursor.
purposeNoFor reserve.
base_shaNoFor reserve, optional.
lane_refYesLane/worktree identity for fragment provenance.
candidateNoFor verify_candidate: a serialized Candidate contract payload.
namespaceNoFor reserve (required) or list (optional filter).
owner_refNoFor release/materialize (must match the claim owner).
repo_pathNoFor verify_candidate/verify_generation: the Git repository to diff.
repo_rootYesRepository working tree root.
candidatesNoFor verify_generation: serialized Candidate contract payloads.
concept_idNoFor reserve.
design_refNoFor reserve, optional.
generationNoFor verify_generation: a serialized Generation contract payload.
tenant_refYesAuthenticated tenant scope.
workitem_refNoFor reserve, optional.
run_trace_refNoFor reserve, optional.
concept_prefixNoFor list: filter by concept-id prefix.
expected_fenceNoFor release/materialize: the claim's current fence.
repository_refNoFor reserve.
reservation_idNoFor get/release/materialize.
provenance_refsNoFor reserve, optional.
request_key_refNoFor reserve: idempotency key.
source_tree_ishNoFor reconcile: the tree-ish to scan for markers.HEAD

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.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 real context — the tool is a thin consumer of a central concept_reservation authority and surfaces dependency_blocked/ConceptAuthorityUnavailable errors rather than failing locally — but it frames this around 'mutating actions', which this read-only tool is not, so it does not describe what get itself does when the authority is down or the reservation is absent.

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 two short paragraphs are not bloated, but the lead sentence is wasted on restating the name and the architecture explanation is largely irrelevant to a read tool. 'Never allocates a concept id itself' and 'never mints or reuses an id on its own' say the same thing twice.

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?

An output schema exists, so return values need not be explained, and annotations cover safety. However, for a tool with 26 parameters and a dense sibling family, the description leaves the core question unanswered: what a get retrieves and how it is identified. The single most important thing an agent needs 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 baseline is 3. The description adds nothing about parameter syntax or meaning beyond the schema's own 'For reserve/list/get' tags; for a 26-parameter surface the schema does the heavy lifting and the prose is silent.

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

Purpose2/5

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

The description opens with 'Get (rm_concepts)' — a near-tautological restatement of the name — then pivots to the architecture of the authority port. It never states what a get operation actually retrieves (a reservation? a claim by id?) or on what key, despite the schema implying 'reservation_id' is the lookup key for get. An agent cannot tell from the text what this tool returns.

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

Usage Guidelines2/5

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

No guidance on when to call get versus rm_concepts_list, rm_concepts_reserve, or the other siblings. The only implicit distinction is that 'every mutating action refuses' when authority is unavailable, which weakly implies get is non-mutating, but this is inferred rather than stated and applies to the whole family.

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

rm_concepts_listListC
Read-onlyIdempotent

List (rm_concepts). Concept-id claim coordination against RMDD-16's central authority.

Repository-manager never allocates a concept id itself: every action here is a thin, MCP/CLI-neutral consumer of an injected authority port. When the central authority (agent_connector_sdk.governance. concept_reservation) is unavailable in this environment, every mutating action refuses with a named dependency_blocked/ConceptAuthorityUnavailable error instead of fabricating a local allocation -- it never mints or reuses an id on its own.

NameRequiredDescriptionDefault
limitNoFor list: page size.
stateNoFor list: filter by claim state.
branchNoFor reserve, optional.
cursorNoFor list: opaque page cursor.
purposeNoFor reserve.
base_shaNoFor reserve, optional.
lane_refYesLane/worktree identity for fragment provenance.
candidateNoFor verify_candidate: a serialized Candidate contract payload.
namespaceNoFor reserve (required) or list (optional filter).
owner_refNoFor release/materialize (must match the claim owner).
repo_pathNoFor verify_candidate/verify_generation: the Git repository to diff.
repo_rootYesRepository working tree root.
candidatesNoFor verify_generation: serialized Candidate contract payloads.
concept_idNoFor reserve.
design_refNoFor reserve, optional.
generationNoFor verify_generation: a serialized Generation contract payload.
tenant_refYesAuthenticated tenant scope.
workitem_refNoFor reserve, optional.
run_trace_refNoFor reserve, optional.
concept_prefixNoFor list: filter by concept-id prefix.
expected_fenceNoFor release/materialize: the claim's current fence.
repository_refNoFor reserve.
reservation_idNoFor get/release/materialize.
provenance_refsNoFor reserve, optional.
request_key_refNoFor reserve: idempotency key.
source_tree_ishNoFor reconcile: the tree-ish to scan for markers.HEAD

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description's only added claim is that 'every mutating action refuses with dependency_blocked' when the authority is missing — behavior for other operations, not this one, and it never says whether list itself works offline or fails. Value added is marginal and partly misdirected.

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

Conciseness2/5

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

The prose is repetitive and back-loaded with an architecture rationale ('thin, MCP/CLI-neutral consumer of an injected authority port') while the single actionable fact — that it lists concept-id claims — appears only as a parenthetical. Structure does not front-load what an agent needs.

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?

An output schema exists so return-shape explanation is unnecessary, but with a 26-parameter union schema spanning list/reserve/get/release/materialize/verify/reconcile, the description should clarify which parameters apply to a list call and what it enumerates. None of that context is present.

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

Parameters3/5

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

Schema description coverage is 100% and every of the 26 parameters carries its own description (including which operation each belongs to), so the schema does the heavy lifting and baseline 3 applies. The description adds nothing about the list-relevant filters (state, namespace, concept_prefix, cursor, limit), but per the coverage rule no penalty below baseline.

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

Purpose2/5

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

The opening 'List (rm_concepts)' merely restates the tool name, and the remaining text describes the rm_concepts family's architectural relationship to 'RMDD-16's central authority' rather than what this tool lists (concept-id claims/reservations). An agent cannot tell what the tool returns or how it differs from rm_concepts_get, rm_concepts_reserve, or rm_concepts_reconcile.

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 of when to use list versus the seven sibling rm_concepts_* operations, and no conditions or prerequisites for listing. The only contextual sentence concerns mutating actions refusing when the authority is unavailable, which is irrelevant to a read-only list and gives no routing guidance.

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

rm_concepts_materializeMaterializeC

Materialize (rm_concepts). Concept-id claim coordination against RMDD-16's central authority.

Repository-manager never allocates a concept id itself: every action here is a thin, MCP/CLI-neutral consumer of an injected authority port. When the central authority (agent_connector_sdk.governance. concept_reservation) is unavailable in this environment, every mutating action refuses with a named dependency_blocked/ConceptAuthorityUnavailable error instead of fabricating a local allocation -- it never mints or reuses an id on its own.

NameRequiredDescriptionDefault
limitNoFor list: page size.
stateNoFor list: filter by claim state.
branchNoFor reserve, optional.
cursorNoFor list: opaque page cursor.
purposeNoFor reserve.
base_shaNoFor reserve, optional.
lane_refYesLane/worktree identity for fragment provenance.
candidateNoFor verify_candidate: a serialized Candidate contract payload.
namespaceNoFor reserve (required) or list (optional filter).
owner_refNoFor release/materialize (must match the claim owner).
repo_pathNoFor verify_candidate/verify_generation: the Git repository to diff.
repo_rootYesRepository working tree root.
candidatesNoFor verify_generation: serialized Candidate contract payloads.
concept_idNoFor reserve.
design_refNoFor reserve, optional.
generationNoFor verify_generation: a serialized Generation contract payload.
tenant_refYesAuthenticated tenant scope.
workitem_refNoFor reserve, optional.
run_trace_refNoFor reserve, optional.
concept_prefixNoFor list: filter by concept-id prefix.
expected_fenceNoFor release/materialize: the claim's current fence.
repository_refNoFor reserve.
reservation_idNoFor get/release/materialize.
provenance_refsNoFor reserve, optional.
request_key_refNoFor reserve: idempotency key.
source_tree_ishNoFor reconcile: the tree-ish to scan for markers.HEAD

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior4/5

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

Beyond the annotations, the description adds meaningful behavioral context: it says repository-manager is a thin consumer of an injected authority port and that mutating actions refuse with dependency_blocked/ConceptAuthorityUnavailable rather than fabricating a local allocation. It also explicitly states it never mints or reuses a concept id on its own, which is useful non-obvious information.

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 reasonably compact for a complex tool and front-loads the domain and failure behavior. The main weakness is that the first sentence is mostly a repeat of the tool name/title, but the remaining sentences earn their place by explaining the authority dependency.

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 and the existing annotations and output schema, the description is only partially complete. It covers the external-authority dependency and refusal behavior, but it omits the action-specific semantics of materialize and any sibling-tool routing guidance.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 26 parameters, including the many per-action notes such as 'For list' and 'For reserve.' The description adds no parameter-level details 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.

Purpose2/5

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

The description opens with 'Materialize (rm_concepts)', which mostly restates the tool name/title, and then gives only a vague domain phrase: 'Concept-id claim coordination against RMDD-16's central authority.' It never says what the materialize operation actually does or how it differs from sibling tools such as rm_concepts_reserve or rm_concepts_release.

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 when-to-use guidance is provided. The description explains dependency failure behavior, but does not state when to choose this tool over alternatives like rm_concepts_reserve, rm_concepts_release, or rm_concepts_get.

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

rm_concepts_reconcileReconcileC

Reconcile (rm_concepts). Concept-id claim coordination against RMDD-16's central authority.

Repository-manager never allocates a concept id itself: every action here is a thin, MCP/CLI-neutral consumer of an injected authority port. When the central authority (agent_connector_sdk.governance. concept_reservation) is unavailable in this environment, every mutating action refuses with a named dependency_blocked/ConceptAuthorityUnavailable error instead of fabricating a local allocation -- it never mints or reuses an id on its own.

NameRequiredDescriptionDefault
limitNoFor list: page size.
stateNoFor list: filter by claim state.
branchNoFor reserve, optional.
cursorNoFor list: opaque page cursor.
purposeNoFor reserve.
base_shaNoFor reserve, optional.
lane_refYesLane/worktree identity for fragment provenance.
candidateNoFor verify_candidate: a serialized Candidate contract payload.
namespaceNoFor reserve (required) or list (optional filter).
owner_refNoFor release/materialize (must match the claim owner).
repo_pathNoFor verify_candidate/verify_generation: the Git repository to diff.
repo_rootYesRepository working tree root.
candidatesNoFor verify_generation: serialized Candidate contract payloads.
concept_idNoFor reserve.
design_refNoFor reserve, optional.
generationNoFor verify_generation: a serialized Generation contract payload.
tenant_refYesAuthenticated tenant scope.
workitem_refNoFor reserve, optional.
run_trace_refNoFor reserve, optional.
concept_prefixNoFor list: filter by concept-id prefix.
expected_fenceNoFor release/materialize: the claim's current fence.
repository_refNoFor reserve.
reservation_idNoFor get/release/materialize.
provenance_refsNoFor reserve, optional.
request_key_refNoFor reserve: idempotency key.
source_tree_ishNoFor reconcile: the tree-ish to scan for markers.HEAD

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior4/5

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

With annotations already declaring readOnlyHint=false, destructiveHint=false, idempotentHint=false, the description still adds real value: it discloses the hard dependency on an injected authority port and that mutating actions refuse with a named dependency_blocked/ConceptAuthorityUnavailable error rather than fabricating a local id. That failure contract and the 'never mints or reuses an id' guarantee are exactly the kind of context annotations cannot carry, though the disclosure is framed at family level rather than for reconcile specifically.

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 prose is not padded, but it is not front-loaded with the operation: the first sentence restates the name, and the remaining sentences describe the shared authority-port architecture rather than this tool. Formatting artifacts (backticks, line breaks, a dotted module path) further dilute the signal.

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 26-parameter tool with three required args, the description never explains reconcile's own operation or how the caller should select among the many operation-specific optional parameters. The presence of an output schema excuses explaining return values, but the missing action semantics leave a real gap.

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

Parameters3/5

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

Schema description coverage is 100% and all 26 parameters (including reconcile's own source_tree_ish) are documented in the schema itself, so the baseline is 3. The description adds no parameter syntax, format, or interaction detail beyond what the schema already provides.

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

Purpose2/5

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

The opening line 'Reconcile (rm_concepts). Concept-id claim coordination against RMDD-16's central authority' largely restates the tool name with a vague gloss and never says what reconcile actually does (the schema hint 'the tree-ish to scan for markers' suggests marker scanning, but the description omits it). It also describes the whole rm_concepts family rather than this member, so it doesn't differentiate reconcile from reserve/get/list/materialize/release/verify_candidate/verify_generation.

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

Usage Guidelines2/5

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

There is no statement of when to call reconcile versus the sibling concept tools or versus the verify_candidate/verify_generation alternatives. The only contextual information is a failure-mode note about unavailable authority, which is behavior, not usage guidance.

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

rm_concepts_releaseReleaseC

Release (rm_concepts). Concept-id claim coordination against RMDD-16's central authority.

Repository-manager never allocates a concept id itself: every action here is a thin, MCP/CLI-neutral consumer of an injected authority port. When the central authority (agent_connector_sdk.governance. concept_reservation) is unavailable in this environment, every mutating action refuses with a named dependency_blocked/ConceptAuthorityUnavailable error instead of fabricating a local allocation -- it never mints or reuses an id on its own.

NameRequiredDescriptionDefault
limitNoFor list: page size.
stateNoFor list: filter by claim state.
branchNoFor reserve, optional.
cursorNoFor list: opaque page cursor.
purposeNoFor reserve.
base_shaNoFor reserve, optional.
lane_refYesLane/worktree identity for fragment provenance.
candidateNoFor verify_candidate: a serialized Candidate contract payload.
namespaceNoFor reserve (required) or list (optional filter).
owner_refNoFor release/materialize (must match the claim owner).
repo_pathNoFor verify_candidate/verify_generation: the Git repository to diff.
repo_rootYesRepository working tree root.
candidatesNoFor verify_generation: serialized Candidate contract payloads.
concept_idNoFor reserve.
design_refNoFor reserve, optional.
generationNoFor verify_generation: a serialized Generation contract payload.
tenant_refYesAuthenticated tenant scope.
workitem_refNoFor reserve, optional.
run_trace_refNoFor reserve, optional.
concept_prefixNoFor list: filter by concept-id prefix.
expected_fenceNoFor release/materialize: the claim's current fence.
repository_refNoFor reserve.
reservation_idNoFor get/release/materialize.
provenance_refsNoFor reserve, optional.
request_key_refNoFor reserve: idempotency key.
source_tree_ishNoFor reconcile: the tree-ish to scan for markers.HEAD

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=false, so the safety profile is largely covered. The description adds genuinely useful non-annotation behavior: the named failure mode (dependency_blocked / ConceptAuthorityUnavailable) and the guarantee that it never mints or reuses an id locally. That is real context beyond the structured fields, though it is written for the whole rm_concepts family rather than this action specifically.

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?

Three sentences of reasonable length, but the lead sentence is an architectural orientation ('against RMDD-16's central authority') rather than the action, and it embeds a dotted import path (agent_connector_sdk.governance.concept_reservation) that an agent can't act on. The behavioral point about refusing rather than fabricating an allocation is buried last.

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 26-parameter, multi-action schema with an output schema present, the description covers the failure semantics but omits the one thing an agent most needs: which parameter combination selects the release path (reservation_id + owner_ref + expected_fence). The output schema removes the need to document return values, which keeps this at a marginal 3 rather than lower.

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% and each of the 26 parameters carries its own 'For list/reserve/release/materialize/verify_*' annotation, so the schema does all the work. The description contributes no parameter-level detail, which is the baseline-3 case when coverage is high.

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

Purpose2/5

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

The description never says what 'release' actually does. It names the domain ('concept-id claim coordination') and then spends its budget describing architecture ('thin, MCP/CLI-neutral consumer of an injected authority port'). The specific verb+resource — releasing/returning a held concept-id claim — is only inferable from the schema entries 'For release/materialize' and 'owner_ref ... must match the claim owner', not from the description. An agent reading only the description cannot distinguish this from rm_concepts_reserve or rm_concepts_materialize.

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?

It states one negative condition (mutating actions refuse with dependency_blocked when the central authority is unavailable), but gives no guidance on when to call release versus rm_concepts_get, rm_concepts_list, rm_concepts_reserve, rm_concepts_materialize, or rm_concepts_reconcile. There is no statement of prerequisites such as needing an existing reservation_id plus a matching owner_ref/expected_fence.

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

rm_concepts_reserveReserveB

Reserve (rm_concepts). Concept-id claim coordination against RMDD-16's central authority.

Repository-manager never allocates a concept id itself: every action here is a thin, MCP/CLI-neutral consumer of an injected authority port. When the central authority (agent_connector_sdk.governance. concept_reservation) is unavailable in this environment, every mutating action refuses with a named dependency_blocked/ConceptAuthorityUnavailable error instead of fabricating a local allocation -- it never mints or reuses an id on its own.

NameRequiredDescriptionDefault
limitNoFor list: page size.
stateNoFor list: filter by claim state.
branchNoFor reserve, optional.
cursorNoFor list: opaque page cursor.
purposeNoFor reserve.
base_shaNoFor reserve, optional.
lane_refYesLane/worktree identity for fragment provenance.
candidateNoFor verify_candidate: a serialized Candidate contract payload.
namespaceNoFor reserve (required) or list (optional filter).
owner_refNoFor release/materialize (must match the claim owner).
repo_pathNoFor verify_candidate/verify_generation: the Git repository to diff.
repo_rootYesRepository working tree root.
candidatesNoFor verify_generation: serialized Candidate contract payloads.
concept_idNoFor reserve.
design_refNoFor reserve, optional.
generationNoFor verify_generation: a serialized Generation contract payload.
tenant_refYesAuthenticated tenant scope.
workitem_refNoFor reserve, optional.
run_trace_refNoFor reserve, optional.
concept_prefixNoFor list: filter by concept-id prefix.
expected_fenceNoFor release/materialize: the claim's current fence.
repository_refNoFor reserve.
reservation_idNoFor get/release/materialize.
provenance_refsNoFor reserve, optional.
request_key_refNoFor reserve: idempotency key.
source_tree_ishNoFor reconcile: the tree-ish to scan for markers.HEAD

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior4/5

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

Annotations already flag readOnlyHint=false, idempotentHint=false, and destructiveHint=false, but the description adds genuinely useful behavior beyond them: the tool never mints or reuses an id locally, and every mutating action refuses with a named dependency_blocked/ConceptAuthorityUnavailable error when the authority is absent. That failure-mode disclosure is exactly the kind of context annotations cannot convey.

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

Conciseness3/5

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

The first line is well front-loaded, but the following paragraph spends several sentences on internal architecture (port injection, agent_connector_sdk.governance path) that an agent does not need in order to invoke the tool. The behavioral payload could be stated in one sentence instead of a paragraph.

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?

An output schema exists, so return values need not be explained, and annotations plus the failure-mode note cover the mutation profile. However, the schema exposes list/verify/release/reconcile parameters on a tool named 'reserve', and the description never resolves whether this is a single-action or dispatcher tool, leaving a real ambiguity for the caller.

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% and all 26 parameters carry their own 'For reserve/For list/For verify_candidate' descriptions, so the schema does the heavy lifting. The prose description adds no parameter-level meaning (e.g., what request_key_ref idempotency does or what namespace must contain), so the baseline 3 applies.

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

Purpose3/5

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

The opening line 'Reserve (rm_concepts). Concept-id claim coordination against RMDD-16's central authority' does name a verb (Reserve) and a resource (concept-id claim), but the rest of the description is architectural prose about port injection rather than clarifying what the tool concretely does. It never distinguishes itself from siblings like rm_concepts_get, rm_concepts_list, or rm_concepts_release, which the schema's 'For list:/For get:' parameters clearly imply exist.

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

Usage Guidelines2/5

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

There is no when-to-use guidance: nothing tells the agent when to call reserve rather than rm_concepts_list, get, release, or materialize. The only conditional statement is about the authority being unavailable, which is a runtime failure mode, not selection guidance.

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

rm_concepts_verify_candidateVerify CandidateC
Read-onlyIdempotent

Verify candidate (rm_concepts). Concept-id claim coordination against RMDD-16's central authority.

Repository-manager never allocates a concept id itself: every action here is a thin, MCP/CLI-neutral consumer of an injected authority port. When the central authority (agent_connector_sdk.governance. concept_reservation) is unavailable in this environment, every mutating action refuses with a named dependency_blocked/ConceptAuthorityUnavailable error instead of fabricating a local allocation -- it never mints or reuses an id on its own.

NameRequiredDescriptionDefault
limitNoFor list: page size.
stateNoFor list: filter by claim state.
branchNoFor reserve, optional.
cursorNoFor list: opaque page cursor.
purposeNoFor reserve.
base_shaNoFor reserve, optional.
lane_refYesLane/worktree identity for fragment provenance.
candidateNoFor verify_candidate: a serialized Candidate contract payload.
namespaceNoFor reserve (required) or list (optional filter).
owner_refNoFor release/materialize (must match the claim owner).
repo_pathNoFor verify_candidate/verify_generation: the Git repository to diff.
repo_rootYesRepository working tree root.
candidatesNoFor verify_generation: serialized Candidate contract payloads.
concept_idNoFor reserve.
design_refNoFor reserve, optional.
generationNoFor verify_generation: a serialized Generation contract payload.
tenant_refYesAuthenticated tenant scope.
workitem_refNoFor reserve, optional.
run_trace_refNoFor reserve, optional.
concept_prefixNoFor list: filter by concept-id prefix.
expected_fenceNoFor release/materialize: the claim's current fence.
repository_refNoFor reserve.
reservation_idNoFor get/release/materialize.
provenance_refsNoFor reserve, optional.
request_key_refNoFor reserve: idempotency key.
source_tree_ishNoFor reconcile: the tree-ish to scan for markers.HEAD

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so the safety profile is covered. The description does add genuine behavioral context: the authority-port dependency and the named dependency_blocked/ConceptAuthorityUnavailable failure mode, plus the guarantee it never mints or reuses an id. However, that behavior is framed for "every mutating action" in the family, which is only marginally relevant to this read-only tool and adds confusion rather than clarity for this specific operation.

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 purpose is front-loaded, but two of the three sentences describe the injected authority port and mutating-family behavior rather than this read-only tool. The content is not padded word-by-word, but it is misdirected for the specific operation.

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?

An output schema exists, so return values need not be explained, but with 26 parameters and a read-only verify operation the description should clarify what is being verified and against what. Instead it spends its budget on family-wide dependency behavior, leaving the core operation undefined.

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% across 26 parameters, so the schema fully documents each field (e.g. candidate, repo_path, expected_fence). The description adds no parameter-level meaning beyond what the schema already provides, so the baseline of 3 is appropriate.

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

Purpose3/5

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

"Verify candidate (rm_concepts)" essentially restates the title, but "Concept-id claim coordination against RMDD-16's central authority" does add domain context (concept-id claim coordination). However, it never states what verification actually does (e.g. diff a candidate against a repo), and it does not differentiate this tool from the closely named sibling rm_concepts_verify_generation.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as rm_concepts_verify_generation or rm_concepts_reserve. The agent is left to infer the selection context entirely from the name and schema.

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

rm_concepts_verify_generationVerify GenerationC
Read-onlyIdempotent

Verify generation (rm_concepts). Concept-id claim coordination against RMDD-16's central authority.

Repository-manager never allocates a concept id itself: every action here is a thin, MCP/CLI-neutral consumer of an injected authority port. When the central authority (agent_connector_sdk.governance. concept_reservation) is unavailable in this environment, every mutating action refuses with a named dependency_blocked/ConceptAuthorityUnavailable error instead of fabricating a local allocation -- it never mints or reuses an id on its own.

NameRequiredDescriptionDefault
limitNoFor list: page size.
stateNoFor list: filter by claim state.
branchNoFor reserve, optional.
cursorNoFor list: opaque page cursor.
purposeNoFor reserve.
base_shaNoFor reserve, optional.
lane_refYesLane/worktree identity for fragment provenance.
candidateNoFor verify_candidate: a serialized Candidate contract payload.
namespaceNoFor reserve (required) or list (optional filter).
owner_refNoFor release/materialize (must match the claim owner).
repo_pathNoFor verify_candidate/verify_generation: the Git repository to diff.
repo_rootYesRepository working tree root.
candidatesNoFor verify_generation: serialized Candidate contract payloads.
concept_idNoFor reserve.
design_refNoFor reserve, optional.
generationNoFor verify_generation: a serialized Generation contract payload.
tenant_refYesAuthenticated tenant scope.
workitem_refNoFor reserve, optional.
run_trace_refNoFor reserve, optional.
concept_prefixNoFor list: filter by concept-id prefix.
expected_fenceNoFor release/materialize: the claim's current fence.
repository_refNoFor reserve.
reservation_idNoFor get/release/materialize.
provenance_refsNoFor reserve, optional.
request_key_refNoFor reserve: idempotency key.
source_tree_ishNoFor reconcile: the tree-ish to scan for markers.HEAD

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.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 real domain context — the tool never mints or reuses a concept id and surfaces a named dependency_blocked/ConceptAuthorityUnavailable error — but it frames this around 'mutating action,' language that does not apply to a read-only verify tool, and says nothing about what a successful verification reports or whether it can fail on claim mismatch.

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 first line names the tool and its family, which is good front-loading, but the remaining prose is dominated by family-wide authority-port philosophy rather than this tool's specific job. Given 26 parameters and a single verify operation, a large share of the text does not earn its place for the caller.

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?

This is a high-complexity tool (26 params, nested candidate/generation payloads) and the description never addresses the core operation, required inputs, or success/failure semantics of a verification. An output schema does exist, so return-value detail is excused, but the invocation-side explanation is far short of what an agent needs.

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

Parameters3/5

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

Schema description coverage is 100%, so all 26 parameters are already documented by the schema (including the 'For verify_generation' tags on generation, candidates and repo_path). The description adds no parameter-level meaning such as payload shape or which fields matter, so the baseline 3 applies.

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

Purpose2/5

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

The description opens with the tool name and says it is 'concept-id claim coordination against RMDD-16's central authority,' but never explains what verifying a generation actually does (e.g., validate a Generation contract, diff a repo, check that candidate ids match a claim). Siblings rm_concepts_verify_candidate and rm_concepts_reconcile are never contrasted, so an agent cannot tell this tool apart from them from the text alone.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance and no routing to alternatives such as rm_concepts_verify_candidate or rm_concepts_get. The only conditional stated ('when the central authority is unavailable ... every mutating action refuses') describes failure behavior for mutating family actions, not when an agent should reach for verify_generation.

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

rm_docs_readiness_applyApplyC

Apply (rm_docs_readiness). Preview/apply/verify artifacts after per-repository readiness setup.

NameRequiredDescriptionDefault
confirmNoRequired for apply; preview and verify are read-only.
manifestNoWorkspace manifest; defaults to workspace.yml under workspace.
workspaceNoWorkspace root; defaults to the configured RM workspace.
repositoryNoExact workspace.yml repository identity (for example agent-packages/agents/repository-manager); basenames and paths outside the manifest are refused. Readiness config must already be generated/adopted; this action does not make a repo rollout-ready.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

Annotations declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, so the agent knows this mutates without being flagged destructive. The description adds no behavioral context beyond that — nothing about what artifacts are written, whether changes are reversible, what confirm actually triggers, or any permission requirement.

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?

Two short sentences with no filler, which is good, but the front-loaded content is spent on enumerating three modes rather than on what this specific tool does. Brevity here costs clarity rather than buying it.

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?

This is a mutating tool with no annotation-based explanation of effects and no statement of what apply produces or alters. The output schema covers return values, but the agent still lacks the core 'what will this change' disclosure needed before invoking a non-idempotent write.

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 confirm, manifest, workspace, and repository are each documented in the schema itself; baseline 3 applies. The description adds no parameter-level meaning, syntax, or defaults beyond what the schema already provides.

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

Purpose3/5

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

Names the verb (apply) and the resource family (rm_docs_readiness artifacts), but the phrase 'Preview/apply/verify artifacts' describes three separate sibling tools rather than this one, blurring rather than sharpening its identity. The parenthetical '(rm_docs_readiness)' helps only weakly, since rm_docs_readiness_preview and rm_docs_readiness_verify are immediately adjacent siblings.

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

Usage Guidelines3/5

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

'after per-repository readiness setup' implies a sequencing prerequisite and the schema text implies confirm is required for apply, but the description never states when to choose this tool over rm_docs_readiness_preview or rm_docs_readiness_verify. Usage is inferable but not spelled out.

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

rm_docs_readiness_previewPreviewC
Read-onlyIdempotent

Preview (rm_docs_readiness). Preview/apply/verify artifacts after per-repository readiness setup.

NameRequiredDescriptionDefault
confirmNoRequired for apply; preview and verify are read-only.
manifestNoWorkspace manifest; defaults to workspace.yml under workspace.
workspaceNoWorkspace root; defaults to the configured RM workspace.
repositoryNoExact workspace.yml repository identity (for example agent-packages/agents/repository-manager); basenames and paths outside the manifest are refused. Readiness config must already be generated/adopted; this action does not make a repo rollout-ready.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/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 fully covered by structured data. The description adds essentially no behavioral context beyond that – no statement that this is a dry run producing no side effects, and only an oblique 'Preview/apply/verify' phrasing hinting at the mutation variant.

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?

Only two short sentences, so it is not bloated, but 'Preview (rm_docs_readiness)' merely restates the tool name before the actual content, and the slash-joined action list is a muddy way to convey the workflow.

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?

An output schema exists, so return values need no explanation, and annotations cover the safety profile. However, for a tool embedded in a preview/apply/verify workflow, the description leaves the agent without clear routing or the precondition that readiness config must already exist.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (confirm, manifest, workspace, repository) are already well documented in the schema. The description adds no parameter meaning beyond that, so the baseline of 3 applies.

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

Purpose3/5

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

The description names the resource (readiness artifacts) and the verb (preview), but the second sentence reads as a fragment listing three actions ('Preview/apply/verify artifacts'), so it is ambiguous whether it describes this tool or the trio. It does not clearly distinguish this preview from its siblings rm_docs_readiness_apply and rm_docs_readiness_verify beyond the word 'Preview'.

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?

'after per-repository readiness setup' gives a light sequencing hint, but there is no explicit when-to-use / when-not, and no routing between preview, apply, and verify. The important precondition (config must already be generated/adopted) lives in the schema parameter text, not the description.

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

rm_docs_readiness_verifyVerifyC
Read-onlyIdempotent

Verify (rm_docs_readiness). Preview/apply/verify artifacts after per-repository readiness setup.

NameRequiredDescriptionDefault
confirmNoRequired for apply; preview and verify are read-only.
manifestNoWorkspace manifest; defaults to workspace.yml under workspace.
workspaceNoWorkspace root; defaults to the configured RM workspace.
repositoryNoExact workspace.yml repository identity (for example agent-packages/agents/repository-manager); basenames and paths outside the manifest are refused. Readiness config must already be generated/adopted; this action does not make a repo rollout-ready.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.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 that verification happens after readiness setup, but its parallel mention of 'apply' alongside a read-only tool is mildly confusing rather than informative. No contradiction is established since the tool itself is the verify step.

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

Conciseness4/5

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

Two short, front-loaded sentences with no padding. It is efficient, though the second sentence's three-verb enumeration is what makes it cryptic rather than the length.

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

Completeness2/5

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

Output schema exists, so return values need not be explained. But in a three-tool docs-readiness workflow the description never states what 'verify' actually checks or how it relates to preview/apply, leaving the agent to guess. For this complexity level it is under-specified.

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%, and the schema's repository field already carries the critical caveats (exact manifest identity, config must pre-exist, this action does not make a repo rollout-ready). The description adds no parameter-level meaning beyond the schema, so the baseline 3 applies.

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

Purpose3/5

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

The description names the domain (rm_docs_readiness) and stage (after per-repository readiness setup) and the object (artifacts). However, the phrase 'Preview/apply/verify artifacts' enumerates three verbs that map to three separate sibling tools, so the agent cannot cleanly tell what *this* tool alone does. Purpose is only minimally distinguishable from rm_docs_readiness_preview and rm_docs_readiness_apply.

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

Usage Guidelines2/5

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

No explicit when-to-use vs the sibling tools, even though rm_docs_readiness_preview and rm_docs_readiness_apply exist and the description itself references preview/apply. The only implicit guidance is 'after per-repository readiness setup'. The minimal precondition ('Readiness config must already be generated/adopted') lives in the schema, not the description.

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

rm_gates_audit_fail_fastAudit Fail FastB
Read-onlyIdempotent

Audit fail fast (rm_gates). Run and inspect the two-tier (fast/heavy) pre-commit gate across repos.

The single tool that can actually drive both tiers of the two-tier gate model: stage="fast" exercises a repo's pre-commit-stage hooks, stage="heavy" exercises its pre-push-stage hooks (pytest, cargo, uv lock --check, ...) via pre-commit run --hook-stage <stage>.

NameRequiredDescriptionDefault
repoNoTarget one repo's latest gate job for 'status'/'explain'/'profile' (alternative to job_id).
fleetNoFor 'audit_fail_fast': scan every repository in the workspace rather than the ones named by 'repos'.
reposNoComma-separated repo names or absolute paths to target. Omit for 'run'/'retest' to target the whole workspace.
stageNo'fast' -> `pre-commit run --hook-stage pre-commit` (formatters/linters, no network/tests). 'heavy' -> `--hook-stage pre-push` (pytest, cargo, `uv lock --check`, ...). For 'run'/'retest'.fast
startNoFor 'phase_direction_here': directory to resolve the repository from (default: this process's current working directory).
top_nNo'profile' with no job_id/repo: how many slowest hooks to report fleet-wide.
job_idNoTarget one gate job for 'status'/'explain'/'profile'.
dry_runNoFor 'xdist_apply': report what would change without writing. Defaults to True on purpose -- rewriting ~40 repositories' pre-commit configs must be an explicit choice, never the consequence of omitting an argument.
summaryNo'status': compact roll-up (counts + failed set) vs the full per-job detail.
threadsNoParallel workers.
timeoutNoPer-repo pre-commit timeout in seconds.
escalateNo'retest' only: when a repo's narrowed retest passes every requested hook, also submit a SECOND job for that repo's full wave (a narrowed pass alone is never sufficient evidence of shippability -- see gate_ledger.is_shippable).

Output 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/idempotentHint/destructiveHint=false, so the safety profile is largely covered; the description adds useful behavioural detail (what the heavy stage actually executes, per-repo timeout, parallel workers, the 'escalate' second-job rule for retest, and the deliberate dry_run=true default for config rewrites). It does not, however, reconcile the write-capable xdist_apply/config-rewrite behaviour it describes with readOnlyHint=true, leaving a latent tension rather than a clean disclosure; no return/pagination detail is needed given the output schema exists.

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

Conciseness4/5

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

Two short paragraphs, front-loaded with the purpose and the stage distinction, with no filler sentences. Minor penalty because the second paragraph duplicates the schema's own 'stage' description almost word-for-word, spending description budget on information the agent already receives from the schema.

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

Completeness3/5

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

With an output schema present, return values need not be described, and the two-tier gate concept is conveyed. But the definition is muddled for invocation: parameter descriptions reference operations from other tools (status/explain/profile/run/retest/xdist_apply, plus a dangling 'phase_direction_here' placeholder) without clarifying which of these this tool actually performs, and it never explains what 'fail fast' auditing means or the default operating scope.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3: every parameter is already documented in the schema and the description mostly restates the stage semantics verbatim. It adds little parameter meaning beyond the schema (it does not clarify repo vs repos vs fleet interplay or scope defaults), so it neither compensates for nor improves on the structured data.

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

Purpose4/5

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

States a concrete verb+resource: it runs and inspects the two-tier (fast/heavy) pre-commit gate across repos, and even claims to be 'the single tool that can actually drive both tiers', which is a differentiation claim against the rm_gates_* family. However it never names the sibling it competes with (rm_gates_run, rm_gates_retest), and the surrounding text blurs the tool's identity by describing modes (status/explain/profile/run/retest/xdist_apply) that belong to other tools, so an agent cannot cleanly tell what THIS tool does by default.

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

Usage Guidelines3/5

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

It explains stage semantics well ('fast' -> pre-commit-stage hooks/formatters, 'heavy' -> pre-push hooks such as pytest/cargo/uv lock --check), which is real usage guidance for parameter selection. But there is no when-to-use-this-tool-vs-alternatives guidance: siblings rm_gates_run, rm_gates_retest, rm_gates_status, rm_gates_explain and rm_gates_profile are never mentioned and no exclusion is stated. 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.

rm_gates_explainExplainC

Explain (rm_gates). Run and inspect the two-tier (fast/heavy) pre-commit gate across repos.

The single tool that can actually drive both tiers of the two-tier gate model: stage="fast" exercises a repo's pre-commit-stage hooks, stage="heavy" exercises its pre-push-stage hooks (pytest, cargo, uv lock --check, ...) via pre-commit run --hook-stage <stage>.

NameRequiredDescriptionDefault
repoNoTarget one repo's latest gate job for 'status'/'explain'/'profile' (alternative to job_id).
fleetNoFor 'audit_fail_fast': scan every repository in the workspace rather than the ones named by 'repos'.
reposNoComma-separated repo names or absolute paths to target. Omit for 'run'/'retest' to target the whole workspace.
stageNo'fast' -> `pre-commit run --hook-stage pre-commit` (formatters/linters, no network/tests). 'heavy' -> `--hook-stage pre-push` (pytest, cargo, `uv lock --check`, ...). For 'run'/'retest'.fast
startNoFor 'phase_direction_here': directory to resolve the repository from (default: this process's current working directory).
top_nNo'profile' with no job_id/repo: how many slowest hooks to report fleet-wide.
job_idNoTarget one gate job for 'status'/'explain'/'profile'.
dry_runNoFor 'xdist_apply': report what would change without writing. Defaults to True on purpose -- rewriting ~40 repositories' pre-commit configs must be an explicit choice, never the consequence of omitting an argument.
summaryNo'status': compact roll-up (counts + failed set) vs the full per-job detail.
threadsNoParallel workers.
timeoutNoPer-repo pre-commit timeout in seconds.
escalateNo'retest' only: when a repo's narrowed retest passes every requested hook, also submit a SECOND job for that repo's full wave (a narrowed pass alone is never sufficient evidence of shippability -- see gate_ledger.is_shippable).

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, i.e. a non-destructive but state-mutating tool; the description never discloses what it writes (job submissions, ledger entries) or that running hooks can modify files via formatters. It adds the fast/heavy hook-stage mechanics, which is useful, but omits side effects and preconditions.

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

Conciseness4/5

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

Short and front-loaded, with the two-tier concept stated first and stage mechanics second. Slightly awkward framing ('The single tool that can actually...') costs a little credibility but the prose is not padded.

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?

A 12-parameter tool supporting multiple actions (status/explain/profile/run/retest/audit_fail_fast/xdist_apply/phase_direction_here) gets only a run-focused description; the 'explain' behavior named by the tool itself is never described. An output schema exists, but the description is not adequate for the tool's surface area.

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% and each parameter already documents its action and semantics, so the baseline is 3. The description's stage explanation largely restates what the 'stage' schema description already says, adding little beyond the schema.

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

Purpose3/5

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

The description gives a verb and resource ('Run and inspect the two-tier ... pre-commit gate across repos') but never explains what the stated 'explain' action actually returns or analyzes. The claim that it is 'the single tool that can actually drive both tiers' is confusing given the presence of rm_gates_run and rm_gates_retest siblings, so an agent cannot cleanly separate this tool's job from theirs.

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?

It clarifies what stage="fast" vs "heavy" executes for run/retest, but gives no guidance on when to use this tool rather than rm_gates_status, rm_gates_profile, or rm_gates_run. The routing information is left to the parameter descriptions rather than the tool description.

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

rm_gates_phase_directionPhase DirectionB

Phase direction (rm_gates). Run and inspect the two-tier (fast/heavy) pre-commit gate across repos.

The single tool that can actually drive both tiers of the two-tier gate model: stage="fast" exercises a repo's pre-commit-stage hooks, stage="heavy" exercises its pre-push-stage hooks (pytest, cargo, uv lock --check, ...) via pre-commit run --hook-stage <stage>.

NameRequiredDescriptionDefault
repoNoTarget one repo's latest gate job for 'status'/'explain'/'profile' (alternative to job_id).
fleetNoFor 'audit_fail_fast': scan every repository in the workspace rather than the ones named by 'repos'.
reposNoComma-separated repo names or absolute paths to target. Omit for 'run'/'retest' to target the whole workspace.
stageNo'fast' -> `pre-commit run --hook-stage pre-commit` (formatters/linters, no network/tests). 'heavy' -> `--hook-stage pre-push` (pytest, cargo, `uv lock --check`, ...). For 'run'/'retest'.fast
startNoFor 'phase_direction_here': directory to resolve the repository from (default: this process's current working directory).
top_nNo'profile' with no job_id/repo: how many slowest hooks to report fleet-wide.
job_idNoTarget one gate job for 'status'/'explain'/'profile'.
dry_runNoFor 'xdist_apply': report what would change without writing. Defaults to True on purpose -- rewriting ~40 repositories' pre-commit configs must be an explicit choice, never the consequence of omitting an argument.
summaryNo'status': compact roll-up (counts + failed set) vs the full per-job detail.
threadsNoParallel workers.
timeoutNoPer-repo pre-commit timeout in seconds.
escalateNo'retest' only: when a repo's narrowed retest passes every requested hook, also submit a SECOND job for that repo's full wave (a narrowed pass alone is never sufficient evidence of shippability -- see gate_ledger.is_shippable).

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, openWorldHint=false, and 'Run' is consistent with a non-read-only operation. The description adds useful context that this actually executes hooks (formatters/linters offline vs. pytest/cargo/network), but it omits auth requirements, side effects on repos, and what the run persists. With annotations present the bar is lower, so a 3 fits.

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 purpose is front-loaded in the first sentence and the fast/heavy explanation follows efficiently in two tight sentences. The framing 'The single tool that can actually drive both tiers' is slightly promotional but does not waste much space.

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 12-parameter tool whose schema references many unlisted modes (audit_fail_fast, status, explain, profile, retest, xdist_apply, phase_direction_here), the description never explains how a mode is selected or which parameters pair with which operation. An output schema exists so return values need no prose, but the operational completeness is a significant gap.

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

Parameters3/5

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

Schema description coverage is 100%, so all 12 parameters are already documented in the schema, and the description only reinforces the stage semantics rather than adding new meaning. Baseline 3 applies when the schema does the heavy lifting; no extra syntax or default rationale is provided beyond what the schema states.

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

Purpose3/5

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

The description states a verb and resource (run/inspect the two-tier pre-commit gate) and adds that it is 'the single tool that can actually drive both tiers,' which is a distinguishing claim. However, it never reconciles this with siblings like rm_gates_run, rm_gates_status, and rm_gates_explain, nor does it explain the mode mechanism its own schema references (status/explain/profile/retest/xdist_apply), leaving the actual scope fuzzy.

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

Usage Guidelines3/5

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

It gives real guidance for the stage parameter (fast -> pre-commit hooks, heavy -> pre-push hooks with pytest/cargo), which is a when-to-use signal. But there is no explicit when-not, no prerequisite, and no named alternative among the many rm_gates_* siblings, so the routing guidance is only implied.

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

rm_gates_phase_direction_herePhase Direction HereC

Phase direction here (rm_gates). Run and inspect the two-tier (fast/heavy) pre-commit gate across repos.

The single tool that can actually drive both tiers of the two-tier gate model: stage="fast" exercises a repo's pre-commit-stage hooks, stage="heavy" exercises its pre-push-stage hooks (pytest, cargo, uv lock --check, ...) via pre-commit run --hook-stage <stage>.

NameRequiredDescriptionDefault
repoNoTarget one repo's latest gate job for 'status'/'explain'/'profile' (alternative to job_id).
fleetNoFor 'audit_fail_fast': scan every repository in the workspace rather than the ones named by 'repos'.
reposNoComma-separated repo names or absolute paths to target. Omit for 'run'/'retest' to target the whole workspace.
stageNo'fast' -> `pre-commit run --hook-stage pre-commit` (formatters/linters, no network/tests). 'heavy' -> `--hook-stage pre-push` (pytest, cargo, `uv lock --check`, ...). For 'run'/'retest'.fast
startNoFor 'phase_direction_here': directory to resolve the repository from (default: this process's current working directory).
top_nNo'profile' with no job_id/repo: how many slowest hooks to report fleet-wide.
job_idNoTarget one gate job for 'status'/'explain'/'profile'.
dry_runNoFor 'xdist_apply': report what would change without writing. Defaults to True on purpose -- rewriting ~40 repositories' pre-commit configs must be an explicit choice, never the consequence of omitting an argument.
summaryNo'status': compact roll-up (counts + failed set) vs the full per-job detail.
threadsNoParallel workers.
timeoutNoPer-repo pre-commit timeout in seconds.
escalateNo'retest' only: when a repo's narrowed retest passes every requested hook, also submit a SECOND job for that repo's full wave (a narrowed pass alone is never sufficient evidence of shippability -- see gate_ledger.is_shippable).

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false, so the agent already knows this is a mutating, non-idempotent, non-destructive local operation. The description adds useful context about what 'running' actually means (executing pre-commit hooks, and that heavy pulls in pytest/cargo/uv lock --check), which implies cost/latency. It does not, however, cover permissions, side effects on the repo, or what a partial/failed run leaves behind.

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 body is two short paragraphs and front-loads the run/inspect purpose reasonably. But the first sentence 'Phase direction here (rm_gates)' is pure filler that restates the name, and the description never touches the multi-mode operation model that its own schema alludes to. Some waste, but not bloated.

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 12 parameters, an output schema, and annotations, the structured fields carry most of the load, and the description covers the fast/heavy dimension adequately. But it is silent on the multiple operations referenced only inside parameter descriptions ('status', 'explain', 'profile', 'run', 'retest', 'audit_fail_fast', 'xdist_apply', 'phase_direction_here') with no visible mode selector in the schema, leaving the agent unable to tell how the tool's behavior is chosen.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 12 parameters, including the fast/heavy stage mapping. The description's stage explanation largely duplicates the schema's own enum description ('fast' -> pre-commit run --hook-stage pre-commit, 'heavy' -> --hook-stage pre-push), adding no syntax or format detail beyond it. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose3/5

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

The second sentence does state a concrete verb+resource: running and inspecting the two-tier (fast/heavy) pre-commit gate across repos. However, the opening clause 'Phase direction here (rm_gates)' is a bare restatement of the placeholder name/title and adds no meaning. It never clearly distinguishes itself from the many gate siblings (rm_gates_run, rm_gates_status, rm_gates_explain, rm_gates_profile) even though its own schema references modes like 'status'/'explain'/'profile'/'run'/'retest' that appear to belong to those siblings.

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

Usage Guidelines2/5

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

The only usage signal is the vague claim that this is 'the single tool that can actually drive both tiers of the two-tier gate model', with no condition stated for when to pick it over rm_gates_run/rm_gates_retest/rm_gates_status. There is no when-to-use, when-not-to-use, or prerequisite guidance for a tool that executes hooks. The stage fast/heavy explanation is parameter guidance, not tool-selection guidance.

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

rm_gates_profileProfileC

Profile (rm_gates). Run and inspect the two-tier (fast/heavy) pre-commit gate across repos.

The single tool that can actually drive both tiers of the two-tier gate model: stage="fast" exercises a repo's pre-commit-stage hooks, stage="heavy" exercises its pre-push-stage hooks (pytest, cargo, uv lock --check, ...) via pre-commit run --hook-stage <stage>.

NameRequiredDescriptionDefault
repoNoTarget one repo's latest gate job for 'status'/'explain'/'profile' (alternative to job_id).
fleetNoFor 'audit_fail_fast': scan every repository in the workspace rather than the ones named by 'repos'.
reposNoComma-separated repo names or absolute paths to target. Omit for 'run'/'retest' to target the whole workspace.
stageNo'fast' -> `pre-commit run --hook-stage pre-commit` (formatters/linters, no network/tests). 'heavy' -> `--hook-stage pre-push` (pytest, cargo, `uv lock --check`, ...). For 'run'/'retest'.fast
startNoFor 'phase_direction_here': directory to resolve the repository from (default: this process's current working directory).
top_nNo'profile' with no job_id/repo: how many slowest hooks to report fleet-wide.
job_idNoTarget one gate job for 'status'/'explain'/'profile'.
dry_runNoFor 'xdist_apply': report what would change without writing. Defaults to True on purpose -- rewriting ~40 repositories' pre-commit configs must be an explicit choice, never the consequence of omitting an argument.
summaryNo'status': compact roll-up (counts + failed set) vs the full per-job detail.
threadsNoParallel workers.
timeoutNoPer-repo pre-commit timeout in seconds.
escalateNo'retest' only: when a repo's narrowed retest passes every requested hook, also submit a SECOND job for that repo's full wave (a narrowed pass alone is never sufficient evidence of shippability -- see gate_ledger.is_shippable).

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the safety profile is partly carried by structured data. The description adds real behavioral context beyond annotations by spelling out what each stage actually executes (pre-commit formatters/linters with no network/tests vs pre-push pytest/cargo/uv lock), but it never discloses the write/mutation surface implied by the non-readonly annotation.

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

Conciseness4/5

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

Two sentences with little waste; the purpose statement is front-loaded before the stage-model detail. The redundant 'Profile (rm_gates).' opener and the over-strong 'single tool' claim cost a point, but the body is reasonably tight.

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?

An output schema exists, so return values need not be explained, but for a 12-parameter tool the description leaves a major gap: parameter descriptions repeatedly reference modes ('status', 'explain', 'profile', 'audit_fail_fast', 'run', 'retest', 'xdist_apply') with no corresponding mode/action parameter or explanation, so an agent has no mental model of how this tool's behavior is selected.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 12 parameters and the baseline is 3. The description contributes additional meaning for the stage enum by mapping 'fast'/'heavy' to concrete hook stages, but says nothing about the many mode-scoped parameters whose descriptions reference verbs not present in this tool's flow.

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

Purpose3/5

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

The description names a resource (the two-tier fast/heavy pre-commit gate) and a verb, but 'Profile' is never actually defined — the text emphasizes running gates rather than profiling hook performance, which is what top_n ('slowest hooks to report') implies. The claim that this is 'the single tool that can actually drive both tiers' conflicts with the sibling rm_gates_run and rm_gates_retest, muddying rather than clarifying differentiation.

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

Usage Guidelines2/5

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

There is no statement of when to choose this tool over rm_gates_status, rm_gates_explain, rm_gates_run, or rm_gates_retest. The parameter descriptions reference modes ('status', 'run', 'retest', 'xdist_apply'), hinting that alternatives exist, but the description never explains which mode belongs to this tool or when to use it.

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

rm_gates_reposReposC

Repos (rm_gates). Run and inspect the two-tier (fast/heavy) pre-commit gate across repos.

The single tool that can actually drive both tiers of the two-tier gate model: stage="fast" exercises a repo's pre-commit-stage hooks, stage="heavy" exercises its pre-push-stage hooks (pytest, cargo, uv lock --check, ...) via pre-commit run --hook-stage <stage>.

NameRequiredDescriptionDefault
repoNoTarget one repo's latest gate job for 'status'/'explain'/'profile' (alternative to job_id).
fleetNoFor 'audit_fail_fast': scan every repository in the workspace rather than the ones named by 'repos'.
reposNoComma-separated repo names or absolute paths to target. Omit for 'run'/'retest' to target the whole workspace.
stageNo'fast' -> `pre-commit run --hook-stage pre-commit` (formatters/linters, no network/tests). 'heavy' -> `--hook-stage pre-push` (pytest, cargo, `uv lock --check`, ...). For 'run'/'retest'.fast
startNoFor 'phase_direction_here': directory to resolve the repository from (default: this process's current working directory).
top_nNo'profile' with no job_id/repo: how many slowest hooks to report fleet-wide.
job_idNoTarget one gate job for 'status'/'explain'/'profile'.
dry_runNoFor 'xdist_apply': report what would change without writing. Defaults to True on purpose -- rewriting ~40 repositories' pre-commit configs must be an explicit choice, never the consequence of omitting an argument.
summaryNo'status': compact roll-up (counts + failed set) vs the full per-job detail.
threadsNoParallel workers.
timeoutNoPer-repo pre-commit timeout in seconds.
escalateNo'retest' only: when a repo's narrowed retest passes every requested hook, also submit a SECOND job for that repo's full wave (a narrowed pass alone is never sufficient evidence of shippability -- see gate_ledger.is_shippable).

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior3/5

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

Annotations give a full profile (readOnlyHint=false, idempotentHint=false, openWorldHint=false) so the safety burden is partly lifted. The description usefully discloses that "heavy" runs pytest/cargo/uv-lock and that "fast" avoids network/tests, adding tier semantics beyond the annotations, but it never warns that executing gates can mutate the working tree (formatters rewriting files) despite readOnlyHint=false, nor notes timeouts/parallelism behavior.

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

Conciseness4/5

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

Front-loaded with the core purpose and then the tier mechanics; two short passages, no padding. The framing clause "The single tool that can actually drive both tiers of the two-tier gate model" is redundant editorializing that does not earn its place.

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

Completeness2/5

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

For a 12-parameter dispatcher covering run/retest/status/explain/profile/audit_fail_fast/xdist_apply/phase_direction, the description never explains how an operation is selected, leaving the agent unable to map intent onto the parameters. An output schema existing relieves return-value explanation, but the missing operation model is a major functional gap.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented, setting the baseline at 3. The description's stage explanation duplicates the schema's own stage description rather than adding syntax, defaults, or interaction rules, so it does not rise above the baseline.

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

Purpose3/5

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

The description states a clear verb+resource ("Run and inspect the two-tier (fast/heavy) pre-commit gate across repos") and explains the fast/heavy tier split. However, it gives no help distinguishing this tool from the many sibling gate/status tools (rm_gates_run, rm_gates_retest, rm_gates_status, rm_gates_explain, rm_gates_profile), and the boast that it is "the single tool that can actually drive both tiers" differentiates only vaguely without naming what it supersedes.

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?

It partially clarifies when to pick stage="fast" vs stage="heavy" (formatters/linters vs pytest/cargo/uv lock), which is usable. But there is no when-to-use-this-tool guidance versus the numerous sibling gate tools, and no mention of the operation-dispatch concept (status/explain/profile/run/retest/audit_fail_fast/xdist_apply) that the schema parameters clearly rely on.

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

rm_gates_retestRetestB

Retest (rm_gates). Run and inspect the two-tier (fast/heavy) pre-commit gate across repos.

The single tool that can actually drive both tiers of the two-tier gate model: stage="fast" exercises a repo's pre-commit-stage hooks, stage="heavy" exercises its pre-push-stage hooks (pytest, cargo, uv lock --check, ...) via pre-commit run --hook-stage <stage>.

NameRequiredDescriptionDefault
repoNoTarget one repo's latest gate job for 'status'/'explain'/'profile' (alternative to job_id).
fleetNoFor 'audit_fail_fast': scan every repository in the workspace rather than the ones named by 'repos'.
reposNoComma-separated repo names or absolute paths to target. Omit for 'run'/'retest' to target the whole workspace.
stageNo'fast' -> `pre-commit run --hook-stage pre-commit` (formatters/linters, no network/tests). 'heavy' -> `--hook-stage pre-push` (pytest, cargo, `uv lock --check`, ...). For 'run'/'retest'.fast
startNoFor 'phase_direction_here': directory to resolve the repository from (default: this process's current working directory).
top_nNo'profile' with no job_id/repo: how many slowest hooks to report fleet-wide.
job_idNoTarget one gate job for 'status'/'explain'/'profile'.
dry_runNoFor 'xdist_apply': report what would change without writing. Defaults to True on purpose -- rewriting ~40 repositories' pre-commit configs must be an explicit choice, never the consequence of omitting an argument.
summaryNo'status': compact roll-up (counts + failed set) vs the full per-job detail.
threadsNoParallel workers.
timeoutNoPer-repo pre-commit timeout in seconds.
escalateNo'retest' only: when a repo's narrowed retest passes every requested hook, also submit a SECOND job for that repo's full wave (a narrowed pass alone is never sufficient evidence of shippability -- see gate_ledger.is_shippable).

Output 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 disclose the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the bar is lower. The description adds useful mechanics, explaining that fast runs pre-commit-stage hooks and heavy runs pre-push-stage hooks (pytest, cargo, uv lock --check), but it omits side effects an agent would want, such as that hook runners may rewrite files and that jobs are submitted asynchronously.

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

Conciseness4/5

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

Two short paragraphs, front-loaded with the verb and resource, with no filler. The only slight redundancy is the '(rm_gates)' parenthetical echoing the title, and the second paragraph re-explaining what the schema already spells out for `stage`.

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?

An output schema exists and the input schema is fully documented, so the description needn't cover return values. However, the schema's own parameter docs reference other actions ('status'/'explain'/'profile'/'audit_fail_fast'/'xdist_apply') that the description never acknowledges, leaving the agent unclear about whether this tool is retest-only or a multi-action dispatcher, and the escalate second-job behavior is never surfaced in prose.

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% and 12 parameters are each documented in the schema itself, including the full fast/heavy semantics of `stage`. The description only restates the stage behavior in prose and adds nothing about `escalate`, `dry_run`, `threads`, or `job_id` that the schema does not already cover, so the baseline 3 applies.

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

Purpose4/5

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

The description gives a specific verb+resource ('Retest ... Run and inspect the two-tier pre-commit gate across repos') and even distinguishes itself from the rest of the family with the claim that it is 'the single tool that can actually drive both tiers'. That differentiates it conceptually from siblings like rm_gates_status/explain/profile, though it never explicitly names rm_gates_run, which an agent would most plausibly confuse it with.

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

Usage Guidelines3/5

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

Usage is only implied: the name and the two-tier explanation suggest this is used to re-run failed hooks, but there is no statement of when to choose retest over rm_gates_run, status, or explain, and no prerequisites or exclusions. The stage paragraph is invocation guidance rather than selection guidance.

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

rm_gates_runRunB

Run (rm_gates). Run and inspect the two-tier (fast/heavy) pre-commit gate across repos.

The single tool that can actually drive both tiers of the two-tier gate model: stage="fast" exercises a repo's pre-commit-stage hooks, stage="heavy" exercises its pre-push-stage hooks (pytest, cargo, uv lock --check, ...) via pre-commit run --hook-stage <stage>.

NameRequiredDescriptionDefault
repoNoTarget one repo's latest gate job for 'status'/'explain'/'profile' (alternative to job_id).
fleetNoFor 'audit_fail_fast': scan every repository in the workspace rather than the ones named by 'repos'.
reposNoComma-separated repo names or absolute paths to target. Omit for 'run'/'retest' to target the whole workspace.
stageNo'fast' -> `pre-commit run --hook-stage pre-commit` (formatters/linters, no network/tests). 'heavy' -> `--hook-stage pre-push` (pytest, cargo, `uv lock --check`, ...). For 'run'/'retest'.fast
startNoFor 'phase_direction_here': directory to resolve the repository from (default: this process's current working directory).
top_nNo'profile' with no job_id/repo: how many slowest hooks to report fleet-wide.
job_idNoTarget one gate job for 'status'/'explain'/'profile'.
dry_runNoFor 'xdist_apply': report what would change without writing. Defaults to True on purpose -- rewriting ~40 repositories' pre-commit configs must be an explicit choice, never the consequence of omitting an argument.
summaryNo'status': compact roll-up (counts + failed set) vs the full per-job detail.
threadsNoParallel workers.
timeoutNoPer-repo pre-commit timeout in seconds.
escalateNo'retest' only: when a repo's narrowed retest passes every requested hook, also submit a SECOND job for that repo's full wave (a narrowed pass alone is never sufficient evidence of shippability -- see gate_ledger.is_shippable).

Output 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=false, destructiveHint=false, idempotentHint=false, so the safety profile is covered. The description usefully adds that the fast stage involves formatters/linters with no network/tests while heavy includes pytest/cargo/uv lock. It does not disclose what happens on hook failure, whether files may be modified by formatters, or any timeout/permission behavior, so it adds moderate rather than rich context.

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

Conciseness4/5

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

The core purpose is front-loaded in the first sentence, and the stage explanation follows efficiently with low redundancy. The leading 'Run (rm_gates).' restates the tool name/title and is slightly wasteful, but overall it is appropriately sized.

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 12 optional parameters, an output schema, and multiple behavioral modes referenced in the schema (status, explain, profile, retest, xdist_apply, audit_fail_fast), the description covers only the run/stage dimension. It never explains how those modes are selected or what each returns, leaving a meaningful gap for such a broad tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all 12 parameters, and the baseline is 3. The description corroborates the meaning of the stage parameter (fast vs heavy hook stages) but adds no format, default, or interaction detail beyond what the schema already states.

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

Purpose4/5

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

States a specific verb and resource: it runs and inspects the two-tier (fast/heavy) pre-commit gate across repos, and it frames itself as the one tool that can drive both tiers via pre-commit run --hook-stage. This distinguishes it somewhat from inspection-only siblings like rm_gates_explain or rm_gates_profile, but the framing 'Run and inspect' is broad for a tool that the schema shows handling many modes (status, explain, profile, retest, xdist_apply).

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 explains what each stage means (fast = formatters/linters, no network/tests; heavy = pytest, cargo, uv lock --check), which implies when to pick a tier. However, it never states when to use this tool versus the many gate siblings (rm_gates_explain, rm_gates_profile, rm_gates_status, rm_gates_retest), nor any prerequisites or exclusions. Usage is inferred rather than directed.

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

rm_gates_statusStatusC
Read-onlyIdempotent

Status (rm_gates). Run and inspect the two-tier (fast/heavy) pre-commit gate across repos.

The single tool that can actually drive both tiers of the two-tier gate model: stage="fast" exercises a repo's pre-commit-stage hooks, stage="heavy" exercises its pre-push-stage hooks (pytest, cargo, uv lock --check, ...) via pre-commit run --hook-stage <stage>.

NameRequiredDescriptionDefault
repoNoTarget one repo's latest gate job for 'status'/'explain'/'profile' (alternative to job_id).
fleetNoFor 'audit_fail_fast': scan every repository in the workspace rather than the ones named by 'repos'.
reposNoComma-separated repo names or absolute paths to target. Omit for 'run'/'retest' to target the whole workspace.
stageNo'fast' -> `pre-commit run --hook-stage pre-commit` (formatters/linters, no network/tests). 'heavy' -> `--hook-stage pre-push` (pytest, cargo, `uv lock --check`, ...). For 'run'/'retest'.fast
startNoFor 'phase_direction_here': directory to resolve the repository from (default: this process's current working directory).
top_nNo'profile' with no job_id/repo: how many slowest hooks to report fleet-wide.
job_idNoTarget one gate job for 'status'/'explain'/'profile'.
dry_runNoFor 'xdist_apply': report what would change without writing. Defaults to True on purpose -- rewriting ~40 repositories' pre-commit configs must be an explicit choice, never the consequence of omitting an argument.
summaryNo'status': compact roll-up (counts + failed set) vs the full per-job detail.
threadsNoParallel workers.
timeoutNoPer-repo pre-commit timeout in seconds.
escalateNo'retest' only: when a repo's narrowed retest passes every requested hook, also submit a SECOND job for that repo's full wave (a narrowed pass alone is never sufficient evidence of shippability -- see gate_ledger.is_shippable).

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior1/5

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

Annotations declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, but the description says this is 'the single tool that can actually drive both tiers' by executing pre-commit hooks, and the dry_run parameter explicitly warns about 'rewriting ~40 repositories' pre-commit configs'. Whatever the default path does, a tool that runs hooks and can write configs is not read-only, so the description contradicts the annotations.

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

Conciseness4/5

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

Short and reasonably front-loaded: purpose first, then the two-tier stage mechanics. The title prefix 'Status (rm_gates)' and the scattered backtick/line-break formatting add a little noise, but there is no filler prose.

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

Completeness2/5

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

With 12 parameters, an output schema and annotations, the description should at minimum tell an agent what a default call (all params defaulted) actually does and how job_id/repo/repos interact. Instead it leaves the multi-action dispatch unexplained and, worse, implies write/execute behavior that the annotations deny, so an agent cannot confidently predict the outcome of invoking it.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds the conceptual frame for `stage` (fast = formatters/linters, heavy = pytest/cargo/uv lock) but no parameter semantics beyond what the schema already documents, and it never explains how the many action-scoped parameters (status/explain/profile/run/retest/xdist_apply) are selected, since no action selector is visible.

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

Purpose4/5

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

States a concrete verb+resource: running and inspecting the two-tier (fast/heavy) pre-commit gate across repos, and explains the fast/heavy stage split with the underlying `pre-commit run --hook-stage` calls. It never distinguishes itself from siblings that appear to do the same thing (rm_gates_run, rm_gates_retest, rm_gates_explain, rm_gates_profile), which is a real gap for a tool named only 'Status'.

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 when-to-use / when-not-to-use guidance is given. The only selection advice is implicit in parameter descriptions (stage='fast' vs 'heavy', summary flag), and nothing tells the agent whether to reach for this tool or for rm_gates_run / rm_gates_explain / rm_gates_retest when several of those actions are apparently reachable here too.

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

rm_gates_xdist_applyXdist ApplyC

Xdist apply (rm_gates). Run and inspect the two-tier (fast/heavy) pre-commit gate across repos.

The single tool that can actually drive both tiers of the two-tier gate model: stage="fast" exercises a repo's pre-commit-stage hooks, stage="heavy" exercises its pre-push-stage hooks (pytest, cargo, uv lock --check, ...) via pre-commit run --hook-stage <stage>.

NameRequiredDescriptionDefault
repoNoTarget one repo's latest gate job for 'status'/'explain'/'profile' (alternative to job_id).
fleetNoFor 'audit_fail_fast': scan every repository in the workspace rather than the ones named by 'repos'.
reposNoComma-separated repo names or absolute paths to target. Omit for 'run'/'retest' to target the whole workspace.
stageNo'fast' -> `pre-commit run --hook-stage pre-commit` (formatters/linters, no network/tests). 'heavy' -> `--hook-stage pre-push` (pytest, cargo, `uv lock --check`, ...). For 'run'/'retest'.fast
startNoFor 'phase_direction_here': directory to resolve the repository from (default: this process's current working directory).
top_nNo'profile' with no job_id/repo: how many slowest hooks to report fleet-wide.
job_idNoTarget one gate job for 'status'/'explain'/'profile'.
dry_runNoFor 'xdist_apply': report what would change without writing. Defaults to True on purpose -- rewriting ~40 repositories' pre-commit configs must be an explicit choice, never the consequence of omitting an argument.
summaryNo'status': compact roll-up (counts + failed set) vs the full per-job detail.
threadsNoParallel workers.
timeoutNoPer-repo pre-commit timeout in seconds.
escalateNo'retest' only: when a repo's narrowed retest passes every requested hook, also submit a SECOND job for that repo's full wave (a narrowed pass alone is never sufficient evidence of shippability -- see gate_ledger.is_shippable).

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the agent knows this is a mutating, non-idempotent operation. The description adds useful context about the execution mechanism (pre-commit run --hook-stage <stage> and what heavy hooks include), but it never discloses the actual write behavior it performs — rewriting pre-commit configs across ~40 repositories — nor the default-dry-run safety posture, both of which appear only in the schema's parameter text. No contradiction with annotations, but the headline prose omits the mutating nature.

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?

Two short paragraphs, reasonably front-loaded, but the second paragraph largely restates the stage mapping that the schema already provides, and the text carries formatting artifacts (doubled backticks, the leading "(rm_gates)" parenthetical). It is not bloated, but several sentences do not earn their place because they duplicate structured data.

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 12-parameter tool with zero required parameters and an output schema, the description omits what an agent most needs: what the tool actually changes, how an action is selected (no action parameter is present), which parameters matter for which action, and the deliberate dry_run=True default. Output handling is covered by the output schema, so that omission is fine, but the behavioral/config-rewrite gap is significant for a tool this broad.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 12 parameters and the baseline of 3 applies. The description's stage discussion duplicates the stage parameter's own schema description rather than adding new meaning, and it offers nothing for repo/fleet/repos/top_n/threads/timeout/escalate. The action-selection hints scattered across the parameters ("'status'", "'retest'", "'xdist_apply'") are never reconciled by the description, which leaves ambiguity about how an action is chosen.

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

Purpose3/5

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

The description names a verb and resource ("Run and inspect the two-tier (fast/heavy) pre-commit gate across repos") and explains what each stage exercises, so the domain is legible. However, it reads as a module-level docstring for the whole rm_gates family rather than naming this tool's specific job: the tool is named "xdist_apply" (and the only place the apply/config-rewrite semantics appear is inside the dry_run parameter description), while the prose describes generic gate running that siblings like rm_gates_run and rm_gates_retest would also claim. No sibling differentiation is offered.

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

Usage Guidelines2/5

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

There is no when-to-use guidance relative to the many sibling gate tools (rm_gates_run, rm_gates_retest, rm_gates_status, rm_gates_profile, rm_gates_audit_fail_fast), and no prerequisites or exclusions. The claim that it is "the single tool that can actually drive both tiers" is a differentiation attempt, but it is unverifiable against the sibling list and conflicts with the existence of rm_gates_run. The stage explanation is parameter semantics, not tool-selection guidance.

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

rm_gates_xdist_planXdist PlanC

Xdist plan (rm_gates). Run and inspect the two-tier (fast/heavy) pre-commit gate across repos.

The single tool that can actually drive both tiers of the two-tier gate model: stage="fast" exercises a repo's pre-commit-stage hooks, stage="heavy" exercises its pre-push-stage hooks (pytest, cargo, uv lock --check, ...) via pre-commit run --hook-stage <stage>.

NameRequiredDescriptionDefault
repoNoTarget one repo's latest gate job for 'status'/'explain'/'profile' (alternative to job_id).
fleetNoFor 'audit_fail_fast': scan every repository in the workspace rather than the ones named by 'repos'.
reposNoComma-separated repo names or absolute paths to target. Omit for 'run'/'retest' to target the whole workspace.
stageNo'fast' -> `pre-commit run --hook-stage pre-commit` (formatters/linters, no network/tests). 'heavy' -> `--hook-stage pre-push` (pytest, cargo, `uv lock --check`, ...). For 'run'/'retest'.fast
startNoFor 'phase_direction_here': directory to resolve the repository from (default: this process's current working directory).
top_nNo'profile' with no job_id/repo: how many slowest hooks to report fleet-wide.
job_idNoTarget one gate job for 'status'/'explain'/'profile'.
dry_runNoFor 'xdist_apply': report what would change without writing. Defaults to True on purpose -- rewriting ~40 repositories' pre-commit configs must be an explicit choice, never the consequence of omitting an argument.
summaryNo'status': compact roll-up (counts + failed set) vs the full per-job detail.
threadsNoParallel workers.
timeoutNoPer-repo pre-commit timeout in seconds.
escalateNo'retest' only: when a repo's narrowed retest passes every requested hook, also submit a SECOND job for that repo's full wave (a narrowed pass alone is never sufficient evidence of shippability -- see gate_ledger.is_shippable).

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the mutation profile is partly covered. The description adds useful context about what 'heavy' actually executes (pytest, cargo, `uv lock --check`, pre-commit run --hook-stage) and that heavy work touches the network/tests, but it does not disclose concurrency/timeout side effects, what a plan versus an actual run produces, or any permission requirements.

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

Conciseness3/5

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

The first sentence is front-loaded and useful, but the second paragraph opens with a promotional claim ('The single tool that can actually drive both tiers') that is unsupported and arguably false given sibling gate tools, and then re-explains the stage enum that the schema already covers. It is not bloated, but it spends words on redundancy and self-promotion.

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

Completeness2/5

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

The input schema exposes no 'action' parameter, yet the description and every parameter description route behavior by action ('status', 'explain', 'profile', 'run', 'retest', 'xdist_apply', 'audit_fail_fast', 'phase_direction_here'). With 12 optional parameters and no documented way to select the operation, the agent lacks the single most important piece of information needed to call this tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 12 parameters including the stage enum and the dry_run safety default, making 3 the correct baseline. The description's explanation of fast/heavy largely restates the stage field rather than adding syntax or interaction semantics beyond it.

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

Purpose3/5

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

The description does name a concrete resource (the two-tier fast/heavy pre-commit gate across repos) and a verb ('Run and inspect'), and it distinguishes itself by claiming to be 'the single tool that can actually drive both tiers.' But that claim sits in tension with the tool's own name ('Xdist Plan') and with siblings like rm_gates_run, rm_gates_retest and rm_gates_status, so an agent cannot cleanly tell whether this plans, runs, or both.

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?

It never states when to choose this tool over rm_gates_run, rm_gates_retest, rm_gates_status, rm_gates_explain or rm_gates_profile, even though it references those tools' action names ('status'/'explain'/'profile'/'run'/'retest'/'xdist_apply'). There are no exclusions and no prerequisites, so routing decisions are left entirely to inference.

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

rm_git_addAddC

Add (rm_git). Typed bulk Git operations; arbitrary host commands are prohibited.

NameRequiredDescriptionDefault
pathNoPath to execute in.
phaseNoStarting phase number for 'phased_push'. Default 1.
job_idNoBackground rm_git job id; required for action='status' or 'cancel'.
commandNoThe Git command to execute for 'raw' action (e.g., 'git status')
messageNoCommit message for 'commit' / 'commit_code' actions.
summaryNoFor action='status': return compact progress by default; false includes full detail.
threadsNoParallel workers for bulk operations.
projectsNoOptional comma-separated list of repository URLs to clone or directory names/paths to pull/push/add/commit.
auto_startNoFor 'phased_push': begin at the lowest phase with unpushed work instead of always 'phase', skipping the inter-phase waits of unchanged upstream phases. Default True; set False to start at 'phase'. Ignored when 'target_project' is set.
run_precommitNoFor 'commit_code': run pre-commit hooks before committing. Default True.
target_projectNoOptional specific project to push for 'phased_push'.

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the mutation profile is covered. The description adds only a family-wide prohibition on arbitrary host commands and says nothing about which files/state are affected, required permissions, or reversibility.

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

Conciseness3/5

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

Very short and front-loaded, but the first token is tautological filler and the second sentence is boilerplate about the whole rm_git family rather than earning its place for this specific operation.

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 an 11-parameter, non-read-only bulk Git mutation with an output schema and annotations, the description should clarify scope and target selection. It leaves the actual operation and its effect on repository state entirely unexplained.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 11 parameters. The description adds no param-level detail (e.g., how projects or path interact with add), so the baseline 3 applies.

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

Purpose2/5

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

"Add (rm_git)" restates the name and title without explaining the operation (presumably staging files, per git add). The only other sentence describes the rm_git family, not this tool, and does not differentiate it from siblings like rm_git_commit or rm_git_phased_push.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no routing to alternatives. "Arbitrary host commands are prohibited" is a constraint that hints at rm_git_raw's existence but never states when to choose add versus commit/push.

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

rm_git_cancelCancelC
DestructiveIdempotent

Cancel (rm_git). Typed bulk Git operations; arbitrary host commands are prohibited.

NameRequiredDescriptionDefault
pathNoPath to execute in.
phaseNoStarting phase number for 'phased_push'. Default 1.
job_idNoBackground rm_git job id; required for action='status' or 'cancel'.
commandNoThe Git command to execute for 'raw' action (e.g., 'git status')
messageNoCommit message for 'commit' / 'commit_code' actions.
summaryNoFor action='status': return compact progress by default; false includes full detail.
threadsNoParallel workers for bulk operations.
projectsNoOptional comma-separated list of repository URLs to clone or directory names/paths to pull/push/add/commit.
auto_startNoFor 'phased_push': begin at the lowest phase with unpushed work instead of always 'phase', skipping the inter-phase waits of unchanged upstream phases. Default True; set False to start at 'phase'. Ignored when 'target_project' is set.
run_precommitNoFor 'commit_code': run pre-commit hooks before committing. Default True.
target_projectNoOptional specific project to push for 'phased_push'.

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is partly covered. The description adds only a prohibition on arbitrary host commands, which is a family-level constraint, and says nothing about what cancellation destroys, whether an in-flight job is killed mid-operation, or what state remains afterward.

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?

It is short and front-loads the tool name, but the second clause is about the rm_git family rather than this operation, so a portion of the very limited text is spent on information that does not help select or invoke this tool.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but the tool is destructive and shares an 11-parameter schema with the rest of the rm_git family with zero required parameters. The description gives an agent no way to know which parameters are relevant to cancelling, leaving a substantial gap for a destructive operation.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no parameter meaning at all — notably it never ties the tool to job_id, which the schema marks as required for cancel — so it neither compensates nor detracts.

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

Purpose2/5

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

The description essentially restates the name and title ('Cancel (rm_git)') without saying what is being cancelled or what effect it has. The only elaboration, 'Typed bulk Git operations; arbitrary host commands are prohibited,' describes the rm_git family generally rather than this tool, so an agent gets no real differentiation from siblings like rm_git_status or rm_git_raw.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance. The description never mentions that this is for cancelling a background rm_git job, nor does it point to how to obtain the job id or what alternatives exist (e.g., polling status instead). Only the schema's job_id text hints at the use case.

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

rm_git_cloneCloneC

Clone (rm_git). Typed bulk Git operations; arbitrary host commands are prohibited.

NameRequiredDescriptionDefault
pathNoPath to execute in.
phaseNoStarting phase number for 'phased_push'. Default 1.
job_idNoBackground rm_git job id; required for action='status' or 'cancel'.
commandNoThe Git command to execute for 'raw' action (e.g., 'git status')
messageNoCommit message for 'commit' / 'commit_code' actions.
summaryNoFor action='status': return compact progress by default; false includes full detail.
threadsNoParallel workers for bulk operations.
projectsNoOptional comma-separated list of repository URLs to clone or directory names/paths to pull/push/add/commit.
auto_startNoFor 'phased_push': begin at the lowest phase with unpushed work instead of always 'phase', skipping the inter-phase waits of unchanged upstream phases. Default True; set False to start at 'phase'. Ignored when 'target_project' is set.
run_precommitNoFor 'commit_code': run pre-commit hooks before committing. Default True.
target_projectNoOptional specific project to push for 'phased_push'.

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, openWorldHint=false, and destructiveHint=false, so the safety profile is covered structurally. The description adds only one behavioral fact — that arbitrary host commands are prohibited — without explaining what a clone overwrites, whether existing directories are replaced, or how the multi-action surface (status/cancel/phased_push) behaves.

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?

Two short sentences are front-loaded and waste no words, which is structurally fine. However, the content is thin and the second clause describes the family rather than this tool, so brevity here reflects under-specification rather than disciplined economy.

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

Completeness2/5

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

This is an 11-parameter, multi-action mega-tool with no required parameters and an output schema, and the description never explains its action model or how path, projects, command, and job_id interact. Even with the output schema handling return values, the description is far too sparse 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?

Schema description coverage is 100%, so the schema already documents all 11 parameters including their action-scoped meanings. The description contributes no additional parameter guidance, which puts this at the baseline 3 for a fully documented schema.

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

Purpose2/5

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

"Clone (rm_git)" essentially restates the name and title, and the second clause ("Typed bulk Git operations") describes a family of Git operations rather than this tool's specific job. The schema shows this tool spans actions like phased_push, status, cancel, commit, and raw, so the description does not distinguish it from siblings such as rm_git_push, rm_git_status, or rm_git_raw.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, and no routing to the many siblings that clearly overlap (rm_git_pull, rm_git_push, rm_git_phased_push, rm_git_status, repository_manager_clone_projects). The only rule given ("arbitrary host commands are prohibited") is a blanket restriction, not a selection criterion.

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

rm_git_commitCommitC

Commit (rm_git). Typed bulk Git operations; arbitrary host commands are prohibited.

NameRequiredDescriptionDefault
pathNoPath to execute in.
phaseNoStarting phase number for 'phased_push'. Default 1.
job_idNoBackground rm_git job id; required for action='status' or 'cancel'.
commandNoThe Git command to execute for 'raw' action (e.g., 'git status')
messageNoCommit message for 'commit' / 'commit_code' actions.
summaryNoFor action='status': return compact progress by default; false includes full detail.
threadsNoParallel workers for bulk operations.
projectsNoOptional comma-separated list of repository URLs to clone or directory names/paths to pull/push/add/commit.
auto_startNoFor 'phased_push': begin at the lowest phase with unpushed work instead of always 'phase', skipping the inter-phase waits of unchanged upstream phases. Default True; set False to start at 'phase'. Ignored when 'target_project' is set.
run_precommitNoFor 'commit_code': run pre-commit hooks before committing. Default True.
target_projectNoOptional specific project to push for 'phased_push'.

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the write-vs-safe profile is covered. The description adds one genuinely useful behavioral constraint ('arbitrary host commands are prohibited'), confirming a sandboxed/typed command surface, but says nothing about permissions, reversibility, or per-action effects.

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

Conciseness3/5

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

Two short sentences, front-loaded and free of padding, so nothing is wasted. However, for an 11-parameter, multi-action tool this level of terseness is under-specification rather than efficient concision.

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?

An output schema exists, so return values need not be described, but the description never discloses that this single tool multiplexes several actions (commit, commit_code, raw, status, cancel, phased_push) that the parameters switch between. With zero required parameters and 11 optional ones, that missing action model leaves an agent unable to invoke it correctly.

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 every parameter including the action-specific ones (message, job_id, command, phase) is already documented in the schema. The description contributes no additional parameter meaning, which is the expected baseline when the schema does the heavy lifting.

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

Purpose2/5

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

The description opens by restating the name/title ('Commit (rm_git)') and then describes the tool only as 'typed bulk Git operations', which is tautological against its own name. It never states what commit actually does or that the schema exposes a multi-action surface (raw, status, cancel, phased_push), so an agent cannot distinguish it from rm_git_raw or rm_git_commit_code.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no routing to alternatives such as rm_git_commit_code or rm_git_raw. The only quasi-guidance is the exclusion of 'arbitrary host commands', which hints at the raw-action boundary but is not framed as selection criteria.

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

rm_git_commit_codeCommit CodeC

Commit code (rm_git). Typed bulk Git operations; arbitrary host commands are prohibited.

NameRequiredDescriptionDefault
pathNoPath to execute in.
phaseNoStarting phase number for 'phased_push'. Default 1.
job_idNoBackground rm_git job id; required for action='status' or 'cancel'.
commandNoThe Git command to execute for 'raw' action (e.g., 'git status')
messageNoCommit message for 'commit' / 'commit_code' actions.
summaryNoFor action='status': return compact progress by default; false includes full detail.
threadsNoParallel workers for bulk operations.
projectsNoOptional comma-separated list of repository URLs to clone or directory names/paths to pull/push/add/commit.
auto_startNoFor 'phased_push': begin at the lowest phase with unpushed work instead of always 'phase', skipping the inter-phase waits of unchanged upstream phases. Default True; set False to start at 'phase'. Ignored when 'target_project' is set.
run_precommitNoFor 'commit_code': run pre-commit hooks before committing. Default True.
target_projectNoOptional specific project to push for 'phased_push'.

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare the mutation profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false, openWorldHint=false). The description adds only the bulk scope and a prohibition on host commands, saying nothing about what state is created or lost, whether a commit message is mandatory, how pre-commit hooks affect the outcome (run_precommit defaults true), or how failures across multiple repositories are handled.

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

Conciseness4/5

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

Two short sentences, front-loaded with the operation name and immediately followed by the scope constraint. No padding or repetition, though the second clause is more of a namespace-level policy statement than tool-specific guidance.

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?

This is an 11-parameter, multi-repo mutation tool with no required parameters and no output-schema-excused gaps in behavior. The description never explains the bulk commit flow, the relationship to background jobs (job_id), or which parameters govern a commit call, leaving an agent to reverse-engineer intent from the schema alone.

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% across all 11 parameters, so the schema carries full parameter documentation. The description adds nothing about parameters, which matches the baseline 3 for a fully-covered schema, but it does not help disambiguate the many parameters that appear redundant for a commit operation (path, projects, message, run_precommit).

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

Purpose2/5

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

"Commit code (rm_git)" essentially restates the tool name rm_git_commit_code and the title "Commit Code." The only additive signal is "typed bulk Git operations," which hints at multi-repo scope but does not say what the tool commits, against what, or how it differs from siblings like rm_git_commit or repository_manager_commit_code_project.

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

Usage Guidelines2/5

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

No when-to-use guidance is given. The statement that "arbitrary host commands are prohibited" implies raw command execution belongs elsewhere (i.e., rm_git_raw), but no alternative is named and no condition for choosing this tool over rm_git_commit, rm_git_pre_commit, or the repository_manager_commit_* variants is stated. The schema even references action values ('commit', 'commit_code', 'status', 'cancel') that the description never routes the agent through.

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

rm_git_enumerateEnumerateC

Enumerate (rm_git). Typed bulk Git operations; arbitrary host commands are prohibited.

NameRequiredDescriptionDefault
pathNoPath to execute in.
phaseNoStarting phase number for 'phased_push'. Default 1.
job_idNoBackground rm_git job id; required for action='status' or 'cancel'.
commandNoThe Git command to execute for 'raw' action (e.g., 'git status')
messageNoCommit message for 'commit' / 'commit_code' actions.
summaryNoFor action='status': return compact progress by default; false includes full detail.
threadsNoParallel workers for bulk operations.
projectsNoOptional comma-separated list of repository URLs to clone or directory names/paths to pull/push/add/commit.
auto_startNoFor 'phased_push': begin at the lowest phase with unpushed work instead of always 'phase', skipping the inter-phase waits of unchanged upstream phases. Default True; set False to start at 'phase'. Ignored when 'target_project' is set.
run_precommitNoFor 'commit_code': run pre-commit hooks before committing. Default True.
target_projectNoOptional specific project to push for 'phased_push'.

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=false, so the safety profile is largely covered. The description adds one genuine piece of context not in annotations – that arbitrary host commands are blocked – but says nothing about the mutating bulk behavior, failure modes, or job/phase semantics referenced by the parameters.

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

Conciseness3/5

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

Two short sentences with no padding, and the prohibition is stated up front. However the brevity is under-specification rather than disciplined concision for an 11-parameter tool with multiple modes.

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

Completeness2/5

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

With 11 parameters, background jobs, phased push phases, and output schema richness, the description omits everything an agent needs to choose and drive this tool, including how it differs from the many rm_git_* siblings. An output schema exists, so return values are not its job, but the operational model is entirely absent.

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% and each parameter (phase, job_id, auto_start, target_project, run_precommit) is documented inline, so the baseline is 3. The description adds nothing to parameters, and notably never explains the missing action selector that the parameter docs repeatedly reference.

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

Purpose2/5

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

"Enumerate (rm_git)" only restates the name, and "Typed bulk Git operations" names a category rather than a specific verb+resource. The many siblings (rm_git_status, rm_git_raw, rm_git_commit, rm_git_push, rm_git_phased_push) mean an agent cannot tell what this tool uniquely does or how it relates to those single-action tools.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of when to prefer this over the action-specific siblings, and no prerequisites. "Arbitrary host commands are prohibited" is a constraint, not a usage rule, so the agent is left to infer everything.

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

rm_git_phased_pushPhased PushC

Phased push (rm_git). Typed bulk Git operations; arbitrary host commands are prohibited.

NameRequiredDescriptionDefault
pathNoPath to execute in.
phaseNoStarting phase number for 'phased_push'. Default 1.
job_idNoBackground rm_git job id; required for action='status' or 'cancel'.
commandNoThe Git command to execute for 'raw' action (e.g., 'git status')
messageNoCommit message for 'commit' / 'commit_code' actions.
summaryNoFor action='status': return compact progress by default; false includes full detail.
threadsNoParallel workers for bulk operations.
projectsNoOptional comma-separated list of repository URLs to clone or directory names/paths to pull/push/add/commit.
auto_startNoFor 'phased_push': begin at the lowest phase with unpushed work instead of always 'phase', skipping the inter-phase waits of unchanged upstream phases. Default True; set False to start at 'phase'. Ignored when 'target_project' is set.
run_precommitNoFor 'commit_code': run pre-commit hooks before committing. Default True.
target_projectNoOptional specific project to push for 'phased_push'.

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=false, so the safety profile is partly covered. The description adds one useful piece of context not in the annotations - that arbitrary host commands are prohibited - but says nothing about phases, inter-phase waits, background jobs, or what a phased push actually mutates. For an 11-parameter bulk write operation this is a substantial gap.

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

Conciseness4/5

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

Two short sentences with the tool identity and the key constraint front-loaded and no filler. It is appropriately sized, though the brevity stems from under-specification rather than disciplined editing.

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 an 11-parameter bulk Git operation with no required parameters and an output schema available, the description omits the phased-execution model, background job lifecycle, and how projects/target_project scope the operation. The output schema excuses it from explaining return values, but the core behavioral model an agent needs is absent.

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%, and many parameters (phase, job_id, command, projects, auto_start, target_project) carry detailed inline descriptions that reference the 'phased_push' action. The tool description adds nothing about any parameter, so baseline 3 applies.

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

Purpose2/5

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

"Phased push (rm_git)" essentially restates the tool name and title, and "Typed bulk Git operations" is a generic category statement rather than a description of what this specific tool does. It never says what a phased push is (ordered multi-phase push across repositories) or how it differs from the sibling rm_git_push or repository_manager_phased_push.

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

Usage Guidelines2/5

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

There is no indication of when to choose this tool over rm_git_push, rm_git_raw, or repository_manager_phased_push. The only directional hint is the negative constraint that arbitrary host commands are prohibited, which implicitly steers the agent elsewhere for raw commands but gives no positive usage context.

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

rm_git_pre_commitPre CommitC

Pre commit (rm_git). Typed bulk Git operations; arbitrary host commands are prohibited.

NameRequiredDescriptionDefault
pathNoPath to execute in.
phaseNoStarting phase number for 'phased_push'. Default 1.
job_idNoBackground rm_git job id; required for action='status' or 'cancel'.
commandNoThe Git command to execute for 'raw' action (e.g., 'git status')
messageNoCommit message for 'commit' / 'commit_code' actions.
summaryNoFor action='status': return compact progress by default; false includes full detail.
threadsNoParallel workers for bulk operations.
projectsNoOptional comma-separated list of repository URLs to clone or directory names/paths to pull/push/add/commit.
auto_startNoFor 'phased_push': begin at the lowest phase with unpushed work instead of always 'phase', skipping the inter-phase waits of unchanged upstream phases. Default True; set False to start at 'phase'. Ignored when 'target_project' is set.
run_precommitNoFor 'commit_code': run pre-commit hooks before committing. Default True.
target_projectNoOptional specific project to push for 'phased_push'.

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=false. The description adds a useful constraint not covered by annotations: it only supports typed Git operations and prohibits arbitrary host commands. However, it still omits mutation effects, permissions, and reversibility details for an 11-parameter tool.

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

Conciseness3/5

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

The description is short and front-loaded, but the first fragment merely repeats the title/name and the middle sentence is overly generic. The final constraint is the only sentence that clearly earns its place, leaving the overall structure underpowered for the tool's complexity.

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

Completeness1/5

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

For an 11-parameter tool with many Git-related siblings and actions referenced in the parameter schema, the description is drastically incomplete. It does not explain the action model, primary use cases, or how this tool relates to alternatives, even though an output schema exists and annotations cover safety hints.

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 parameter-level descriptions already carry the syntax and default details. The tool description adds no additional parameter meaning, but the baseline is 3 when the schema documents all parameters thoroughly.

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

Purpose2/5

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

The description largely restates the tool name/title ('Pre commit (rm_git)') and then gives only a vague category ('Typed bulk Git operations'). It does not state what the pre-commit operation actually does or distinguish it from siblings such as rm_git_commit, rm_git_commit_code, or repository_manager_pre_commit.

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?

It provides no when-to-use guidance, no alternatives, and no preconditions for calling the tool. The prohibition on arbitrary host commands is a boundary, but it does not tell an agent when this tool should be selected over other Git-related siblings.

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

rm_git_pullPullC

Pull (rm_git). Typed bulk Git operations; arbitrary host commands are prohibited.

NameRequiredDescriptionDefault
pathNoPath to execute in.
phaseNoStarting phase number for 'phased_push'. Default 1.
job_idNoBackground rm_git job id; required for action='status' or 'cancel'.
commandNoThe Git command to execute for 'raw' action (e.g., 'git status')
messageNoCommit message for 'commit' / 'commit_code' actions.
summaryNoFor action='status': return compact progress by default; false includes full detail.
threadsNoParallel workers for bulk operations.
projectsNoOptional comma-separated list of repository URLs to clone or directory names/paths to pull/push/add/commit.
auto_startNoFor 'phased_push': begin at the lowest phase with unpushed work instead of always 'phase', skipping the inter-phase waits of unchanged upstream phases. Default True; set False to start at 'phase'. Ignored when 'target_project' is set.
run_precommitNoFor 'commit_code': run pre-commit hooks before committing. Default True.
target_projectNoOptional specific project to push for 'phased_push'.

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the safety profile is largely covered. The description adds one genuinely useful behavioral constraint — arbitrary host commands are prohibited — which is relevant given the schema's free-form 'command' parameter, but it omits what a pull actually mutates and any auth/scope conditions.

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

Conciseness4/5

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

Two short sentences with no filler, and the tool/name anchor is front-loaded. It is efficient, though the brevity is partly under-specification rather than disciplined concision.

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?

This is an 11-parameter multiplexed tool whose schema references distinct actions (status, cancel, raw, commit, phased_push) via job_id, command, phase, and the *_project fields. The description says nothing about that action dispatch model, the bulk/multi-repo behavior, or the threading option. An output schema exists so return values need no explanation, but the operational model is essentially undocumented.

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 every one of the 11 parameters is already documented inline (including action-specific fields like job_id, phase, and target_project). The description contributes no parameter meaning beyond that, so the baseline 3 applies.

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

Purpose2/5

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

"Pull (rm_git)" restates the tool's own title, and the second sentence ("Typed bulk Git operations; arbitrary host commands are prohibited") describes the rm_git family posture rather than what this specific tool does. It never states that it fetches/merges changes into repositories, nor how it differs from rm_git_push, rm_git_raw, or repository_manager_pull_projects.

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 when-to-use guidance, no prerequisites, and no named alternatives among the many sibling Git/pull tools (rm_git_push, rm_git_raw, repository_manager_pull_project(s)). The only directing statement is a prohibition (no arbitrary host commands), which hints at choosing rm_git_raw vs this tool but is not framed as usage guidance.

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

rm_git_pushPushC

Push (rm_git). Typed bulk Git operations; arbitrary host commands are prohibited.

NameRequiredDescriptionDefault
pathNoPath to execute in.
phaseNoStarting phase number for 'phased_push'. Default 1.
job_idNoBackground rm_git job id; required for action='status' or 'cancel'.
commandNoThe Git command to execute for 'raw' action (e.g., 'git status')
messageNoCommit message for 'commit' / 'commit_code' actions.
summaryNoFor action='status': return compact progress by default; false includes full detail.
threadsNoParallel workers for bulk operations.
projectsNoOptional comma-separated list of repository URLs to clone or directory names/paths to pull/push/add/commit.
auto_startNoFor 'phased_push': begin at the lowest phase with unpushed work instead of always 'phase', skipping the inter-phase waits of unchanged upstream phases. Default True; set False to start at 'phase'. Ignored when 'target_project' is set.
run_precommitNoFor 'commit_code': run pre-commit hooks before committing. Default True.
target_projectNoOptional specific project to push for 'phased_push'.

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=false; the description only adds the security constraint that arbitrary host commands are blocked, which is genuinely useful. It says nothing about remote mutation consequences, parallel/bulk execution via threads, background jobs, or the read-only status/cancel actions the schema implies.

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?

Two short sentences with no filler, so nothing is wasted, but for an 11-parameter bulk tool the brevity crosses into under-specification rather than tight 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?

An output schema exists, so return values needn't be explained, but an 11-parameter tool with zero required params and multiple action modes needs the description to explain action selection and the bulk/job model. Neither is covered, leaving the agent dependent entirely on the schema field descriptions.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3; the description adds no parameter meaning of its own. Critically it never mentions the action-selection concept that phase, job_id, command, message, summary, auto_start, run_precommit and target_project all depend on.

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

Purpose2/5

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

"Push (rm_git)" restates the tool name/title, and the only added clause, "Typed bulk Git operations," is a category label rather than a specific verb+resource. Worse, the title says Push while the schema exposes commit, commit_code, status, cancel, raw and phased_push parameters, so an agent cannot tell what this tool actually does.

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

Usage Guidelines2/5

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

There is no guidance on when to call this versus the many siblings (rm_git_status, rm_git_commit, rm_git_raw, rm_git_phased_push, repository_manager_push_projects). The only usage-adjacent statement is the constraint that arbitrary host commands are prohibited, which is a limitation, not a routing rule.

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

rm_git_rawRawC

Raw (rm_git). Typed bulk Git operations; arbitrary host commands are prohibited.

NameRequiredDescriptionDefault
pathNoPath to execute in.
phaseNoStarting phase number for 'phased_push'. Default 1.
job_idNoBackground rm_git job id; required for action='status' or 'cancel'.
commandNoThe Git command to execute for 'raw' action (e.g., 'git status')
messageNoCommit message for 'commit' / 'commit_code' actions.
summaryNoFor action='status': return compact progress by default; false includes full detail.
threadsNoParallel workers for bulk operations.
projectsNoOptional comma-separated list of repository URLs to clone or directory names/paths to pull/push/add/commit.
auto_startNoFor 'phased_push': begin at the lowest phase with unpushed work instead of always 'phase', skipping the inter-phase waits of unchanged upstream phases. Default True; set False to start at 'phase'. Ignored when 'target_project' is set.
run_precommitNoFor 'commit_code': run pre-commit hooks before committing. Default True.
target_projectNoOptional specific project to push for 'phased_push'.

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the mutation profile is partly known from structured data. The description's only added behavioral content is the prohibition on arbitrary host commands, which is vague; it never says what state is modified, whether working trees are altered, or that a background job may be spawned.

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?

Two short sentences, front-loaded and free of padding, but the content is so thin that brevity stems from under-specification rather than disciplined editing. It is appropriately short but not appropriately informative.

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 an 11-parameter, output-schema-bearing tool that routes several actions (raw command, commit, commit_code, status, cancel, phased_push via phase/auto_start/target_project), the description is far too thin. Output schema relieves it of explaining return values, but the action dispatch and parameter families are never described.

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 11 parameters are fully documented in the schema (path, phase, job_id, command, message, summary, threads, projects, auto_start, run_precommit, target_project). The description adds no parameter meaning at all, so the baseline 3 applies.

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

Purpose2/5

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

"Raw (rm_git)" restates the name/title, and "Typed bulk Git operations" describes the rm_git family generically rather than stating what this specific tool does. It never mentions that the tool takes a `command`/action dispatch (e.g. the 'raw' action running 'git status'), and it does not distinguish itself from siblings like rm_git_status, rm_git_commit, or rm_git_add.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no mention of the typed sibling tools that would be the obvious alternatives. "Arbitrary host commands are prohibited" is a constraint, not usage direction, so an agent gets no signal on when to pick raw over the specific typed operations.

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

rm_git_statusStatusC
Read-onlyIdempotent

Status (rm_git). Typed bulk Git operations; arbitrary host commands are prohibited.

NameRequiredDescriptionDefault
pathNoPath to execute in.
phaseNoStarting phase number for 'phased_push'. Default 1.
job_idNoBackground rm_git job id; required for action='status' or 'cancel'.
commandNoThe Git command to execute for 'raw' action (e.g., 'git status')
messageNoCommit message for 'commit' / 'commit_code' actions.
summaryNoFor action='status': return compact progress by default; false includes full detail.
threadsNoParallel workers for bulk operations.
projectsNoOptional comma-separated list of repository URLs to clone or directory names/paths to pull/push/add/commit.
auto_startNoFor 'phased_push': begin at the lowest phase with unpushed work instead of always 'phase', skipping the inter-phase waits of unchanged upstream phases. Default True; set False to start at 'phase'. Ignored when 'target_project' is set.
run_precommitNoFor 'commit_code': run pre-commit hooks before committing. Default True.
target_projectNoOptional specific project to push for 'phased_push'.

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.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 one genuine behavioral constraint (typed operations only, no arbitrary host commands), but says nothing about what status reports, how job_id factors in, or whether it polls or blocks.

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?

Two short sentences are front-loaded and free of padding, so nothing is wasteful. However, the first sentence is pure tautology and the second addresses the family rather than the tool, so the brevity reflects under-specification rather than economy.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but the description still omits the one thing an agent needs: that this tool surfaces status/progress of a background rm_git job (job_id required for action='status'). With 11 parameters referencing multiple actions, the multiplexed nature of the tool is left entirely unexplained.

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

Parameters3/5

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

Schema description coverage is 100%, so all 11 parameters including job_id and summary are already documented in the schema. The description adds no parameter-level meaning, which is the expected baseline when the schema does the heavy lifting.

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

Purpose2/5

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

The description opens by restating the name/title ("Status (rm_git)") without naming a specific verb or resource, so it never says what status actually does (e.g., report progress of a background rm_git job). The second sentence describes the tool family's policy, not this tool's purpose, so an agent cannot distinguish it from rm_git_raw or rm_git_cancel.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance and no sibling is named as an alternative. The only hint, that "arbitrary host commands are prohibited," implies a boundary with rm_git_raw but never states that rm_git_raw is the tool to use instead.

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

rm_lane_doctorDoctorB

Doctor (rm_lane). The lane lifecycle for concurrent agents and humans (CONCEPT:RM-LANE-DOCTOR).

Every check behind this tool exists because a specific collision destroyed real work while the rule that would have prevented it was written down, in prose, in front of the actor who broke it: editing a canonical checkout a background git reset then discarded; a git stash into the ONE refs/stash shared by ~54 worktrees; a shared CARGO_TARGET_DIR that corrupts rather than merely serializes; an unset PRE_COMMIT_HOME whose shared store swallows unstaged work; a foreign or stale worktree-local .venv worth ~167 phantom failures; and measuring a branch TIP that will never be the tree that lands. The exact all-extras environment managed by scripts/uv_workspace.py is accepted because it is lane-partitioned and synchronized before execution.

doctor is the one to reach for when something behaves impossibly — a test failing that cannot fail, a build that will not go green, a merge that keeps being refused. It answers in under a second and mutates nothing.

NameRequiredDescriptionDefault
envNoFor 'doctor': the CALLER's own exported environment (at least PRE_COMMIT_HOME/CARGO_TARGET_DIR/PYTEST_ADDOPTS). Required for a truthful remote check (D-CDX-61) — this server process's own environment is not the lane process's, so omitting this evaluates the checks against server-internal state that has nothing to do with what the caller will actually run with.
baseNoBase branch to fork from / land onto (default main).
pathNoThe lane's working tree for doctor/env/finish (default: cwd).
repoNoRepo basename or absolute path. Required for 'start'.
forceNoFor 'finish': enqueue despite a blocking preflight check. Recorded in the result.
branchNoBranch for 'start'/'finish' ('finish' defaults to that tree's HEAD).

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already establish the safety profile (readOnlyHint=false, openWorld=false, non-idempotent), so the description only needs to add context — and it does add latency ('under a second') plus the important env-source caveat. But the claim 'it mutates nothing' sits awkwardly against the readOnlyHint=false annotation and the schema's mutating 'finish'/force path, creating ambiguity rather than resolving it.

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

Conciseness2/5

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

The definition is long and front-loads lore ('Every check behind this tool exists because a specific collision destroyed real work...') rather than selection essentials. The single most useful sentence for an agent — when to reach for this tool — is buried at the very end, and there is no header-style structure to scan.

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?

An output schema exists, so return values need not be described. The description covers the concept and the caller-env caveat, which is the highest-risk invocation detail, but it never reconciles the 'doctor' framing with the start/finish parameters present in the schema, leaving the tool's actual action surface ambiguous.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds only marginal parameter meaning — the note that the uv_workspace.py all-extras environment is an accepted/partitioned value — while base, path, branch, repo, and force are left entirely to the schema. No syntax, defaults, or interaction details are added.

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

Purpose3/5

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

The tool is identifiable as a fast, read-style diagnostic for 'rm_lane' worktrees — the final sentence states the trigger ('something behaves impossibly') and the shape of the answer (sub-second, no mutation). However, most of the text is narrative justification rather than a compact statement of what the tool actually does, and it never names the checks or outputs in enumerable form. It also gives weak differentiation from siblings like rm_lane_env, rm_lane_heal, or repository_manager_worktree_hygiene.

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 concrete, actionable triggers: a test that cannot fail failing, a build that will not go green, a merge repeatedly refused. That is clear when-to-use context beyond what the schema provides. It does not, however, state any when-not condition or name the alternative diagnostic tool to prefer in adjacent situations.

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

rm_lane_envEnvC

Env (rm_lane). The lane lifecycle for concurrent agents and humans (CONCEPT:RM-LANE-DOCTOR).

Every check behind this tool exists because a specific collision destroyed real work while the rule that would have prevented it was written down, in prose, in front of the actor who broke it: editing a canonical checkout a background git reset then discarded; a git stash into the ONE refs/stash shared by ~54 worktrees; a shared CARGO_TARGET_DIR that corrupts rather than merely serializes; an unset PRE_COMMIT_HOME whose shared store swallows unstaged work; a foreign or stale worktree-local .venv worth ~167 phantom failures; and measuring a branch TIP that will never be the tree that lands. The exact all-extras environment managed by scripts/uv_workspace.py is accepted because it is lane-partitioned and synchronized before execution.

doctor is the one to reach for when something behaves impossibly — a test failing that cannot fail, a build that will not go green, a merge that keeps being refused. It answers in under a second and mutates nothing.

NameRequiredDescriptionDefault
envNoFor 'doctor': the CALLER's own exported environment (at least PRE_COMMIT_HOME/CARGO_TARGET_DIR/PYTEST_ADDOPTS). Required for a truthful remote check (D-CDX-61) — this server process's own environment is not the lane process's, so omitting this evaluates the checks against server-internal state that has nothing to do with what the caller will actually run with.
baseNoBase branch to fork from / land onto (default main).
pathNoThe lane's working tree for doctor/env/finish (default: cwd).
repoNoRepo basename or absolute path. Required for 'start'.
forceNoFor 'finish': enqueue despite a blocking preflight check. Recorded in the result.
branchNoBranch for 'start'/'finish' ('finish' defaults to that tree's HEAD).

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=false. The description adds genuine behavioral context beyond that (doctor 'answers in under a second and mutates nothing', the collision rationale for the checks), but this context is scoped to the doctor operation rather than the tool's mutating start/finish paths, so it only partially covers the tool's behavior.

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

Conciseness2/5

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

The body is a long prose narrative about historical collisions that consumes most of the text without stating what the tool does or how to invoke it. Only the final short paragraph is actionable, and it addresses doctor rather than the tool itself; the structure is poorly front-loaded for tool selection.

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?

An output schema exists, so return values need not be explained. However, for a six-parameter tool spanning start/env/doctor/finish operations, the description never enumerates or differentiates those operations, so an agent cannot determine what invoking rm_lane_env actually does or which parameter combination triggers which path.

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 each of the six parameters (env, base, path, repo, force, branch) is already documented in the schema with operation-specific meaning. The description adds no parameter syntax or format detail beyond what the schema provides, which is the expected baseline when the schema does the heavy lifting.

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

Purpose2/5

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

The description opens by restating the name ('Env (rm_lane)') and gives only a domain ('the lane lifecycle for concurrent agents and humans') rather than a specific verb+resource for what rm_lane_env itself does. It then spends its substance describing a different operation, `doctor`, which is already a sibling tool (rm_lane_doctor), leaving the tool's own action undefined and indistinguishable from siblings.

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

Usage Guidelines2/5

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

The only explicit when-to-use guidance ('doctor is the one to reach for when something behaves impossibly — a test failing that cannot fail...') points at the doctor path rather than routing between rm_lane_env and its actual siblings (rm_lane_start, rm_lane_finish, rm_lane_heal, rm_lane_doctor). No condition selects rm_lane_env itself, and no exclusions are given.

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

rm_lane_finishFinishC

Finish (rm_lane). The lane lifecycle for concurrent agents and humans (CONCEPT:RM-LANE-DOCTOR).

Every check behind this tool exists because a specific collision destroyed real work while the rule that would have prevented it was written down, in prose, in front of the actor who broke it: editing a canonical checkout a background git reset then discarded; a git stash into the ONE refs/stash shared by ~54 worktrees; a shared CARGO_TARGET_DIR that corrupts rather than merely serializes; an unset PRE_COMMIT_HOME whose shared store swallows unstaged work; a foreign or stale worktree-local .venv worth ~167 phantom failures; and measuring a branch TIP that will never be the tree that lands. The exact all-extras environment managed by scripts/uv_workspace.py is accepted because it is lane-partitioned and synchronized before execution.

doctor is the one to reach for when something behaves impossibly — a test failing that cannot fail, a build that will not go green, a merge that keeps being refused. It answers in under a second and mutates nothing.

NameRequiredDescriptionDefault
envNoFor 'doctor': the CALLER's own exported environment (at least PRE_COMMIT_HOME/CARGO_TARGET_DIR/PYTEST_ADDOPTS). Required for a truthful remote check (D-CDX-61) — this server process's own environment is not the lane process's, so omitting this evaluates the checks against server-internal state that has nothing to do with what the caller will actually run with.
baseNoBase branch to fork from / land onto (default main).
pathNoThe lane's working tree for doctor/env/finish (default: cwd).
repoNoRepo basename or absolute path. Required for 'start'.
forceNoFor 'finish': enqueue despite a blocking preflight check. Recorded in the result.
branchNoBranch for 'start'/'finish' ('finish' defaults to that tree's HEAD).

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false. The description adds nothing about this tool's own behavior — what finishing mutates, where the branch goes, what happens when preflight blocks, or what `force` records. Its behavioral content (worktree/stash/target-dir hazards) describes why checks exist, not what finish does.

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

Conciseness2/5

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

A long historical essay enumerating past collisions (canonical checkout, refs/stash, CARGO_TARGET_DIR, PRE_COMMIT_HOME, .venv, branch TIP) crowds out the one line that matters. The final paragraph is entirely about a sibling tool, so a large share of the text does not earn its place for invoking rm_lane_finish.

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 non-read-only lifecycle mutation with six optional parameters, the description omits what finishing actually does, the ordering relative to gating/merge-queue tools, and the consequence of `force`. Output schema exists, so return values need not be explained — but the action itself is never described.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents `env`, `force`, `base`, `path`, `repo`, and `branch`. The description adds no parameter meaning of its own, so the baseline 3 applies rather than any credit or penalty.

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

Purpose2/5

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

The body opens with "Finish (rm_lane)" and then spends every sentence on the rationale for the collision checks rather than stating the action. It never says plainly that finishing lands/enqueues the lane's branch onto `base` after preflight; the closest hints ("the tree that lands", "a merge that keeps being refused") are incidental. An agent reads a manifesto, not a purpose statement.

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 only explicit "when to use" guidance points at a different tool: "`doctor` is the one to reach for when something behaves impossibly." There is no guidance on when to call finish versus rm_lane_doctor, rm_lane_heal, or rm_merge_queue_enqueue/run, nor any prerequisite (e.g. preflight pass, force semantics).

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

rm_lane_healHealC

Heal (rm_lane). The lane lifecycle for concurrent agents and humans (CONCEPT:RM-LANE-DOCTOR).

Every check behind this tool exists because a specific collision destroyed real work while the rule that would have prevented it was written down, in prose, in front of the actor who broke it: editing a canonical checkout a background git reset then discarded; a git stash into the ONE refs/stash shared by ~54 worktrees; a shared CARGO_TARGET_DIR that corrupts rather than merely serializes; an unset PRE_COMMIT_HOME whose shared store swallows unstaged work; a foreign or stale worktree-local .venv worth ~167 phantom failures; and measuring a branch TIP that will never be the tree that lands. The exact all-extras environment managed by scripts/uv_workspace.py is accepted because it is lane-partitioned and synchronized before execution.

doctor is the one to reach for when something behaves impossibly — a test failing that cannot fail, a build that will not go green, a merge that keeps being refused. It answers in under a second and mutates nothing.

NameRequiredDescriptionDefault
envNoFor 'doctor': the CALLER's own exported environment (at least PRE_COMMIT_HOME/CARGO_TARGET_DIR/PYTEST_ADDOPTS). Required for a truthful remote check (D-CDX-61) — this server process's own environment is not the lane process's, so omitting this evaluates the checks against server-internal state that has nothing to do with what the caller will actually run with.
baseNoBase branch to fork from / land onto (default main).
pathNoThe lane's working tree for doctor/env/finish (default: cwd).
repoNoRepo basename or absolute path. Required for 'start'.
forceNoFor 'finish': enqueue despite a blocking preflight check. Recorded in the result.
branchNoBranch for 'start'/'finish' ('finish' defaults to that tree's HEAD).

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false). The description instead spends its length on rationale for lane checks and a claim that "it... mutates nothing" referring to doctor, disclosing nothing about what heal mutates, whether it is reversible, or what auth/state it needs.

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

Conciseness2/5

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

The opening is buried under a long anecdotal list of past collisions (refs/stash, CARGO_TARGET_DIR, PRE_COMMIT_HOME, .venv, branch TIP) that does not help an agent select or invoke the tool. Front-loading is inverted: the actionable content is absent while rationale dominates.

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 non-read-only tool with six parameters, an output schema, and rich annotations, the description should at minimum say what heal does and when to call it. Instead it describes the lane lifecycle and doctor, leaving the actual operation of rm_lane_heal undefined.

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 env/base/path/repo/force/branch, including the truthful-remote-check nuance for env. The description adds no parameter syntax or meaning beyond the schema, so the baseline of 3 applies.

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

Purpose2/5

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

The description opens with "Heal (rm_lane)" but never states what the heal action actually does. The bulk of the text is backstory about why lane checks exist and a pointer to a different subcommand (doctor), so an agent cannot form a verb+resource picture of this tool. It reads as a mismatched copy of lane-doctor documentation, not a purpose statement for rm_lane_heal.

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 only when-to-use guidance ("doctor is the one to reach for when something behaves impossibly") is attributed to a sibling, not to heal, and no condition for selecting heal over rm_lane_doctor/rm_lane_start/rm_lane_finish is given. There are no exclusions or prerequisites for this tool itself.

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

rm_lane_startStartC

Start (rm_lane). The lane lifecycle for concurrent agents and humans (CONCEPT:RM-LANE-DOCTOR).

Every check behind this tool exists because a specific collision destroyed real work while the rule that would have prevented it was written down, in prose, in front of the actor who broke it: editing a canonical checkout a background git reset then discarded; a git stash into the ONE refs/stash shared by ~54 worktrees; a shared CARGO_TARGET_DIR that corrupts rather than merely serializes; an unset PRE_COMMIT_HOME whose shared store swallows unstaged work; a foreign or stale worktree-local .venv worth ~167 phantom failures; and measuring a branch TIP that will never be the tree that lands. The exact all-extras environment managed by scripts/uv_workspace.py is accepted because it is lane-partitioned and synchronized before execution.

doctor is the one to reach for when something behaves impossibly — a test failing that cannot fail, a build that will not go green, a merge that keeps being refused. It answers in under a second and mutates nothing.

NameRequiredDescriptionDefault
envNoFor 'doctor': the CALLER's own exported environment (at least PRE_COMMIT_HOME/CARGO_TARGET_DIR/PYTEST_ADDOPTS). Required for a truthful remote check (D-CDX-61) — this server process's own environment is not the lane process's, so omitting this evaluates the checks against server-internal state that has nothing to do with what the caller will actually run with.
baseNoBase branch to fork from / land onto (default main).
pathNoThe lane's working tree for doctor/env/finish (default: cwd).
repoNoRepo basename or absolute path. Required for 'start'.
forceNoFor 'finish': enqueue despite a blocking preflight check. Recorded in the result.
branchNoBranch for 'start'/'finish' ('finish' defaults to that tree's HEAD).

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false. The description adds real context beyond them — the collision scenarios the checks guard against and the fact that the doctor path is sub-second and non-mutating — but it blurs which mode those traits apply to, and never states what state a 'start' creates or what auth/side effects it has.

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

Conciseness2/5

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

Most of the text is an extended rationale ('a specific collision destroyed real work...') rather than operative guidance for calling the tool. Useful information is back-loaded and the actual action of the tool is never front-loaded.

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?

An output schema exists, so return values need not be explained, but the description still omits the core of what 'start' does — whether it creates a worktree, forks a branch, or acquires a lane. For a 6-parameter multi-mode tool with zero required params, that is a material gap.

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

Parameters3/5

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

Schema description coverage is 100% and each parameter (env, base, path, repo, force, branch) already documents its mode and requirements in detail. The description adds no parameter meaning beyond the schema, so the baseline 3 applies.

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

Purpose2/5

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

The opening 'Start (rm_lane)' largely restates the title, and 'the lane lifecycle for concurrent agents and humans' names a domain rather than the action the tool performs. The bulk of the text justifies why collision checks exist, and the one concrete behavior described ('answers in under a second and mutates nothing') is attributed to `doctor`, which is a sibling tool (rm_lane_doctor). An agent cannot tell from this what `rm_lane_start` actually does.

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

Usage Guidelines2/5

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

It gives explicit when-to-use guidance, but for `doctor` ('when something behaves impossibly'), not for this tool's start action. The schema hints the tool is a multi-mode dispatcher (start/doctor/env/finish), yet the description never states when to invoke start versus those modes or versus rm_worktree_add/rm_lane_heal.

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

rm_merge_queue_configConfigC

Config (rm_merge_queue). Serialized merge queue for ANY git repository (CONCEPT:RM-MERGE-QUEUE).

The canonical driver of parallel development: lanes take worktrees, work, then hand branches here, and the queue gates them as merged, fast-forwards the base, and prunes the worktree and branch. Set push false when a scheduler must leave publication to phased push.

The queue does not know what a gate is. Gates are declared in the target repository's own .mergequeue.yaml — a command, a tier, a timeout, and how to compare its result against the base ref. agent-connector-sdk declares pytest + ruff + its contract scripts; epistemic-graph declares cargo check --all-features + clippy; a docs repo could declare only a link check. A repository with no declaration is REFUSED rather than defaulted, because "declared no gates" and "has no queue configured" must not be the same value.

Gating is differential: only a failure the base ref does not already produce blocks a candidate — the base is legitimately red here, and an absolute gate once deadlocked a queue and stranded 19 branches. A baseline that cannot be produced REFUSES the candidate; it never degrades to allow-all.

run holds that repository's reconciliation-merge LEASE. If another runner holds it the call returns deferred: true with the holder — defer, do not retry in a loop.

landed vs pushed (D-W3WPS-3). Each outcome carries both, separately: landed means the declared base ref fast-forwarded in the LOCAL canonical checkout (proven by re-reading it); when push is true, pushed means that commit also reached the configured remote via the repo's own gated push path (_gate_before_push + push_project — the same pre-commit gates and GH013/divergent-remote handling a manual push gets). With push false, publication is deliberately deferred to the phased-push scheduler. A push failure never fails the landing — landed: true, pushed: false is a legitimate, visible intermediate state; check push_error on the outcome for why. The queue's own run summary also reports pushed/landed_unpushed counts.

NameRequiredDescriptionDefault
baseNoBranch to land onto. Defaults to the repo's declared base.
pushNoPublish a landed base through the repository's gated push path. Set false for the fast queue timer; the phased-push scheduler then owns publication.
pruneNoRemove each landed candidate's worktree and branch through the guarded prune (merge-base re-checked at delete time, a refs/lane-backup anchor written first, `git branch -d` never -D, and a worktree holding uncommitted work is refused).
branchNoCandidate branch for enqueue/withdraw. Defaults to that tree's HEAD.
reasonNoWhy a candidate is being withdrawn.
repo_pathNoAny working tree of the target repository. This is what makes the queue cross-project: one server, N repositories, each with its own lease, candidate store, and gates. Defaults to the server's cwd.
batch_sizeNoCandidates gated together per run (0 = the repo's declared batch_size).

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior4/5

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

Annotations only declare write/non-destructive/non-idempotent; the description goes well beyond them, disclosing lease acquisition and deferral semantics, that an undeclared repo is REFUSED, that gating is differential against the base ref, and the split landed/pushed outcome with push_error. This is rich context an agent could not get from the structured fields, though some of it is internal implementation detail rather than callable behavior.

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 prose is dense, bold-marked, and back-loaded with concept IDs (CONCEPT:RM-MERGE-QUEUE), spec tags (D-W3WPS-3), and internal function names (_gate_before_push, push_project) that do not help selection. The genuinely actionable sentence (defer, do not retry) is buried mid-document rather than front-loaded. It is not padding, but it is poorly prioritized for an agent.

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 need not be explained, yet the description spends most of its length on landed/pushed outcome semantics anyway. The behavioral story is complete, but the operational story (what this specific tool does versus the queue siblings) is missing, leaving the definition incomplete where it matters most.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all seven parameters, and the baseline is 3. The description adds only one small semantic overlap, restating the push=false / phased-push scheduler relationship; base, branch, reason, and batch_size get no additional meaning here.

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

Purpose2/5

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

The description opens with 'Config (rm_merge_queue). Serialized merge queue for ANY git repository,' which characterizes the resource but never states the operation: it is unclear whether this reads config, writes config, or drives a run. The parameters (branch, reason, batch_size) look like queue operations rather than configuration, so the name and the content actively conflict. An agent cannot tell from the text what this call does to the system.

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

Usage Guidelines2/5

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

There is one genuinely useful directive — 'defer, do not retry in a loop' when the lease is held — but no guidance on when to choose this over the many queue siblings (rm_merge_queue_enqueue, rm_merge_queue_run, rm_merge_queue_status, rm_merge_queue_withdraw). No prerequisites or exclusion conditions are stated.

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

rm_merge_queue_enqueueEnqueueA

Enqueue (rm_merge_queue). Serialized merge queue for ANY git repository (CONCEPT:RM-MERGE-QUEUE).

The canonical driver of parallel development: lanes take worktrees, work, then hand branches here, and the queue gates them as merged, fast-forwards the base, and prunes the worktree and branch. Set push false when a scheduler must leave publication to phased push.

The queue does not know what a gate is. Gates are declared in the target repository's own .mergequeue.yaml — a command, a tier, a timeout, and how to compare its result against the base ref. agent-connector-sdk declares pytest + ruff + its contract scripts; epistemic-graph declares cargo check --all-features + clippy; a docs repo could declare only a link check. A repository with no declaration is REFUSED rather than defaulted, because "declared no gates" and "has no queue configured" must not be the same value.

Gating is differential: only a failure the base ref does not already produce blocks a candidate — the base is legitimately red here, and an absolute gate once deadlocked a queue and stranded 19 branches. A baseline that cannot be produced REFUSES the candidate; it never degrades to allow-all.

run holds that repository's reconciliation-merge LEASE. If another runner holds it the call returns deferred: true with the holder — defer, do not retry in a loop.

landed vs pushed (D-W3WPS-3). Each outcome carries both, separately: landed means the declared base ref fast-forwarded in the LOCAL canonical checkout (proven by re-reading it); when push is true, pushed means that commit also reached the configured remote via the repo's own gated push path (_gate_before_push + push_project — the same pre-commit gates and GH013/divergent-remote handling a manual push gets). With push false, publication is deliberately deferred to the phased-push scheduler. A push failure never fails the landing — landed: true, pushed: false is a legitimate, visible intermediate state; check push_error on the outcome for why. The queue's own run summary also reports pushed/landed_unpushed counts.

NameRequiredDescriptionDefault
baseNoBranch to land onto. Defaults to the repo's declared base.
pushNoPublish a landed base through the repository's gated push path. Set false for the fast queue timer; the phased-push scheduler then owns publication.
pruneNoRemove each landed candidate's worktree and branch through the guarded prune (merge-base re-checked at delete time, a refs/lane-backup anchor written first, `git branch -d` never -D, and a worktree holding uncommitted work is refused).
branchNoCandidate branch for enqueue/withdraw. Defaults to that tree's HEAD.
reasonNoWhy a candidate is being withdrawn.
repo_pathNoAny working tree of the target repository. This is what makes the queue cross-project: one server, N repositories, each with its own lease, candidate store, and gates. Defaults to the server's cwd.
batch_sizeNoCandidates gated together per run (0 = the repo's declared batch_size).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

Far exceeds the annotations: it explains differential gating, that an undeclared repo is REFUSED rather than defaulted, the lease/deferred behavior, and the landed vs pushed distinction with push_error on failure. These are exactly the non-obvious traits an agent needs before invoking a mutation tool.

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 key scoping statement is front-loaded, but the body is dense with tangential material (example gate declarations across repos, history of a deadlock) that, while useful background, is not strictly needed to call enqueue correctly. Tightening would improve signal.

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?

An output schema exists so return values need not be spelled out, yet the description still clarifies the landed/pushed/push_error outcome fields. For a 7-param mutation tool with a lease and refusal semantics, coverage is strong though thinner on the withdraw-vs-enqueue boundary.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning: push=false defers to the phased-push scheduler, prune uses a guarded delete with a backup anchor, and repo_path is what makes the queue cross-project. It enriches several parameters beyond their schema text.

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 opening states a specific verb (enqueue) and resource (rm_merge_queue) and explains the mechanism: lanes hand branches here, the queue gates them, fast-forwards the base, and prunes. It is largely clear, but much of the prose describes the queue's overall gate/lease machinery rather than the enqueue action specifically, blurring the line with rm_merge_queue_run.

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?

Offers concrete operational guidance — set push false when a scheduler must leave publication to phased push, and 'defer, do not retry in a loop' when the lease is held. It does not explicitly route the agent between rm_merge_queue_run, rm_merge_queue_withdraw, and this tool, so sibling selection is left to inference.

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

rm_merge_queue_runRunA

Run (rm_merge_queue). Serialized merge queue for ANY git repository (CONCEPT:RM-MERGE-QUEUE).

The canonical driver of parallel development: lanes take worktrees, work, then hand branches here, and the queue gates them as merged, fast-forwards the base, and prunes the worktree and branch. Set push false when a scheduler must leave publication to phased push.

The queue does not know what a gate is. Gates are declared in the target repository's own .mergequeue.yaml — a command, a tier, a timeout, and how to compare its result against the base ref. agent-connector-sdk declares pytest + ruff + its contract scripts; epistemic-graph declares cargo check --all-features + clippy; a docs repo could declare only a link check. A repository with no declaration is REFUSED rather than defaulted, because "declared no gates" and "has no queue configured" must not be the same value.

Gating is differential: only a failure the base ref does not already produce blocks a candidate — the base is legitimately red here, and an absolute gate once deadlocked a queue and stranded 19 branches. A baseline that cannot be produced REFUSES the candidate; it never degrades to allow-all.

run holds that repository's reconciliation-merge LEASE. If another runner holds it the call returns deferred: true with the holder — defer, do not retry in a loop.

landed vs pushed (D-W3WPS-3). Each outcome carries both, separately: landed means the declared base ref fast-forwarded in the LOCAL canonical checkout (proven by re-reading it); when push is true, pushed means that commit also reached the configured remote via the repo's own gated push path (_gate_before_push + push_project — the same pre-commit gates and GH013/divergent-remote handling a manual push gets). With push false, publication is deliberately deferred to the phased-push scheduler. A push failure never fails the landing — landed: true, pushed: false is a legitimate, visible intermediate state; check push_error on the outcome for why. The queue's own run summary also reports pushed/landed_unpushed counts.

NameRequiredDescriptionDefault
baseNoBranch to land onto. Defaults to the repo's declared base.
pushNoPublish a landed base through the repository's gated push path. Set false for the fast queue timer; the phased-push scheduler then owns publication.
pruneNoRemove each landed candidate's worktree and branch through the guarded prune (merge-base re-checked at delete time, a refs/lane-backup anchor written first, `git branch -d` never -D, and a worktree holding uncommitted work is refused).
branchNoCandidate branch for enqueue/withdraw. Defaults to that tree's HEAD.
reasonNoWhy a candidate is being withdrawn.
repo_pathNoAny working tree of the target repository. This is what makes the queue cross-project: one server, N repositories, each with its own lease, candidate store, and gates. Defaults to the server's cwd.
batch_sizeNoCandidates gated together per run (0 = the repo's declared batch_size).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior5/5

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

Goes well beyond the annotations: lease acquisition with a deferred result and named holder, differential gating semantics, refusal on a missing gate declaration, the landed-vs-pushed split with push_error on partial failure, and the guarded prune. The destructiveHint=false annotation is reconciled by the description's detail that prune writes a refs/lane-backup anchor first and uses 'git branch -d' never -D, so deletion is intentionally recoverable.

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?

Well front-loaded — purpose, then push semantics, then lease/push outcomes — but roughly 350 words with formatting emphasis. The middle section on what a gate is, the .mergequeue.yaml examples, and the anecdote about a deadlock stranding 19 branches explain the design rather than help an agent invoke this call, and belong closer to rm_merge_queue_config or rm_gates_explain.

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 complex, lease-holding, multi-repo queue step the description covers the decision-relevant behaviors: deferral, refusal, gating model, push control, and outcome fields. Because an output schema exists it need not enumerate return values, yet it still explains landed/pushed/push_error. Only minor gaps remain (e.g. how batch_size interacts with a run, or the shape of the run summary).

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

Parameters3/5

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

Schema coverage is 100%, so all seven parameters are already documented in the schema, and each schema entry is itself detailed (notably prune and push). The description's push/landed discussion clarifies the meaning of the push flag conceptually, but it does not add syntax or value constraints the schema lacks. Baseline 3 is appropriate when the schema does the heavy lifting.

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 opening line plus the workflow sentence give a specific verb and resource: this is the canonical driver that takes handed-off lane branches, gates them as merged, fast-forwards the base, and prunes. That is far more concrete than the bare title 'Run'. It never names its siblings (rm_merge_queue_enqueue/status/withdraw/config), so the agent has to infer the boundary between 'run the queue' and 'enqueue a candidate' itself.

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?

Gives real conditional guidance: set push=false when a scheduler must leave publication to phased push, and 'defer, do not retry in a loop' when another runner holds the lease. It also states that a repo with no .mergequeue.yaml declaration is REFUSED rather than defaulted. It stops short of an explicit ordering against siblings (e.g. 'enqueue first, then run'), so it is strong context without full alternative routing.

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

rm_merge_queue_statusStatusC
Read-onlyIdempotent

Status (rm_merge_queue). Serialized merge queue for ANY git repository (CONCEPT:RM-MERGE-QUEUE).

The canonical driver of parallel development: lanes take worktrees, work, then hand branches here, and the queue gates them as merged, fast-forwards the base, and prunes the worktree and branch. Set push false when a scheduler must leave publication to phased push.

The queue does not know what a gate is. Gates are declared in the target repository's own .mergequeue.yaml — a command, a tier, a timeout, and how to compare its result against the base ref. agent-connector-sdk declares pytest + ruff + its contract scripts; epistemic-graph declares cargo check --all-features + clippy; a docs repo could declare only a link check. A repository with no declaration is REFUSED rather than defaulted, because "declared no gates" and "has no queue configured" must not be the same value.

Gating is differential: only a failure the base ref does not already produce blocks a candidate — the base is legitimately red here, and an absolute gate once deadlocked a queue and stranded 19 branches. A baseline that cannot be produced REFUSES the candidate; it never degrades to allow-all.

run holds that repository's reconciliation-merge LEASE. If another runner holds it the call returns deferred: true with the holder — defer, do not retry in a loop.

landed vs pushed (D-W3WPS-3). Each outcome carries both, separately: landed means the declared base ref fast-forwarded in the LOCAL canonical checkout (proven by re-reading it); when push is true, pushed means that commit also reached the configured remote via the repo's own gated push path (_gate_before_push + push_project — the same pre-commit gates and GH013/divergent-remote handling a manual push gets). With push false, publication is deliberately deferred to the phased-push scheduler. A push failure never fails the landing — landed: true, pushed: false is a legitimate, visible intermediate state; check push_error on the outcome for why. The queue's own run summary also reports pushed/landed_unpushed counts.

NameRequiredDescriptionDefault
baseNoBranch to land onto. Defaults to the repo's declared base.
pushNoPublish a landed base through the repository's gated push path. Set false for the fast queue timer; the phased-push scheduler then owns publication.
pruneNoRemove each landed candidate's worktree and branch through the guarded prune (merge-base re-checked at delete time, a refs/lane-backup anchor written first, `git branch -d` never -D, and a worktree holding uncommitted work is refused).
branchNoCandidate branch for enqueue/withdraw. Defaults to that tree's HEAD.
reasonNoWhy a candidate is being withdrawn.
repo_pathNoAny working tree of the target repository. This is what makes the queue cross-project: one server, N repositories, each with its own lease, candidate store, and gates. Defaults to the server's cwd.
batch_sizeNoCandidates gated together per run (0 = the repo's declared batch_size).

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2/5.0
Behavior1/5

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

The description instructs the caller to configure publication ('Set push false...'), says the queue 'fast-forwards the base, and prunes the worktree and branch', and the schema exposes a default-true 'prune' that deletes worktrees and branches — all inconsistent with the annotations readOnlyHint=true and destructiveHint=false. The rich behavioral detail present (leases, deferred, gating refusal, landed/pushed) describes run-time semantics of a different operation, so it neither matches nor supplements the declared safety profile of this tool.

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

Conciseness2/5

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

Roughly 350 words of dense system lore — differential gating history, the deadlocked queue that stranded 19 branches, D-W3WPS-3 landed vs pushed — none of which is front-loaded toward what this tool does. The genuinely relevant content (what status reports) is absent while tangential detail dominates.

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?

An output schema exists, so return values need not be described, but the description still omits the essential context for a status tool: what state it reports, how it relates to rm_merge_queue_run/rm_merge_queue_config, and whether the mutation-shaped parameters actually apply here. The supplied context instead describes the surrounding system, leaving the tool's own contract unclear.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all seven parameters fully (base, push, prune, branch, reason, repo_path, batch_size). The description adds almost nothing at parameter level beyond echoing the push=false story. Baseline 3 applies when the schema carries the semantics.

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

Purpose2/5

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

The description opens with 'Status (rm_merge_queue)' and then describes the merge-queue system as a whole (lanes, worktrees, gates, leases, landed vs pushed) rather than what this status call does or returns. It never states the specific verb+resource of the operation, and it does not distinguish this tool from siblings like rm_merge_queue_run, rm_merge_queue_enqueue, or rm_merge_queue_config. The reader cannot tell what a call to this tool actually does.

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

Usage Guidelines2/5

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

There is no statement of when to call this tool versus rm_merge_queue_run/enqueue/withdraw/config. The only imperative guidance ('Set push false when a scheduler must leave publication to phased push', 'defer, do not retry in a loop') reads as instructions for the run operation, not for a status query. Usage is implied at best by the word 'Status'.

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

rm_merge_queue_withdrawWithdrawC

Withdraw (rm_merge_queue). Serialized merge queue for ANY git repository (CONCEPT:RM-MERGE-QUEUE).

The canonical driver of parallel development: lanes take worktrees, work, then hand branches here, and the queue gates them as merged, fast-forwards the base, and prunes the worktree and branch. Set push false when a scheduler must leave publication to phased push.

The queue does not know what a gate is. Gates are declared in the target repository's own .mergequeue.yaml — a command, a tier, a timeout, and how to compare its result against the base ref. agent-connector-sdk declares pytest + ruff + its contract scripts; epistemic-graph declares cargo check --all-features + clippy; a docs repo could declare only a link check. A repository with no declaration is REFUSED rather than defaulted, because "declared no gates" and "has no queue configured" must not be the same value.

Gating is differential: only a failure the base ref does not already produce blocks a candidate — the base is legitimately red here, and an absolute gate once deadlocked a queue and stranded 19 branches. A baseline that cannot be produced REFUSES the candidate; it never degrades to allow-all.

run holds that repository's reconciliation-merge LEASE. If another runner holds it the call returns deferred: true with the holder — defer, do not retry in a loop.

landed vs pushed (D-W3WPS-3). Each outcome carries both, separately: landed means the declared base ref fast-forwarded in the LOCAL canonical checkout (proven by re-reading it); when push is true, pushed means that commit also reached the configured remote via the repo's own gated push path (_gate_before_push + push_project — the same pre-commit gates and GH013/divergent-remote handling a manual push gets). With push false, publication is deliberately deferred to the phased-push scheduler. A push failure never fails the landing — landed: true, pushed: false is a legitimate, visible intermediate state; check push_error on the outcome for why. The queue's own run summary also reports pushed/landed_unpushed counts.

NameRequiredDescriptionDefault
baseNoBranch to land onto. Defaults to the repo's declared base.
pushNoPublish a landed base through the repository's gated push path. Set false for the fast queue timer; the phased-push scheduler then owns publication.
pruneNoRemove each landed candidate's worktree and branch through the guarded prune (merge-base re-checked at delete time, a refs/lane-backup anchor written first, `git branch -d` never -D, and a worktree holding uncommitted work is refused).
branchNoCandidate branch for enqueue/withdraw. Defaults to that tree's HEAD.
reasonNoWhy a candidate is being withdrawn.
repo_pathNoAny working tree of the target repository. This is what makes the queue cross-project: one server, N repositories, each with its own lease, candidate store, and gates. Defaults to the server's cwd.
batch_sizeNoCandidates gated together per run (0 = the repo's declared batch_size).

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior3/5

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

Annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false) already frame this as a non-read, non-destructive, non-idempotent operation, and nothing in the text contradicts them. The prose adds real system context — differential gating, the reconciliation-merge lease and `deferred: true`, and the landed/pushed split with `push_error` — but almost all of it belongs to the queue `run` path, so the specific behavioral traits of withdraw (reversibility, behavior when the branch is not queued) go undisclosed.

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

Conciseness2/5

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

Roughly 450 words are supplied for a withdraw operation, and most of them describe the merge queue's gating model, D-W3WPS-3 landed/pushed semantics, and push error handling — material that does not help call this tool. The tool's own action is never front-loaded or stated plainly, so the length is off-topic padding rather than concision.

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

Completeness2/5

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

With 7 parameters, an output schema, and full annotations, the structured metadata covers much of the surface, but the description omits everything specific to withdraw: what happens to a withdrawn candidate, whether it is recoverable, and what error surfaces if the branch is not enqueued. Given the operation is the destructive-ish queue-mutating counterpart to enqueue, that omission is a real gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all seven parameters, including `reason` ('Why a candidate is being withdrawn') and `branch`. The description's explanations of `push`, `prune`, and the base landing semantics largely restate the schema text rather than adding syntax or edge-case meaning, so the baseline 3 applies.

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

Purpose2/5

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

The definition opens with 'Withdraw (rm_merge_queue)' but then spends nearly all its text describing the merge queue itself — gates, leases, landed vs pushed — rather than what withdrawing a candidate actually does. It never states the concrete effect (removing a queued candidate so it is no longer gated/landed) and never distinguishes itself from siblings like rm_merge_queue_enqueue, rm_merge_queue_run, or rm_merge_queue_status. Only the schema's 'branch' description hints that withdraw is 'candidate branch for enqueue/withdraw'.

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

Usage Guidelines2/5

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

There is no when-to-use guidance for this tool: no condition under which an agent should withdraw rather than enqueue, run, or query status, and no prerequisites. The one imperative present — 'defer, do not retry in a loop' — concerns the `run` lease, not the withdraw operation. The agent is left to infer the trigger entirely.

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

rm_projects_buildBuildB

Build (rm_projects). Bulk install, build, and validate Python projects.

The 'validate' action submits validation as a background job and returns a job_id immediately. Use 'validate_status' with that job_id to poll progress and retrieve results once complete.

NameRequiredDescriptionDefault
extraNoInstall group (e.g. 'all') for 'install'.all
job_idNoJob ID to check status for 'validate_status' action.
summaryNoFor 'validate'/'validate_status': return a COMPACT roll-up (counts + failed set + running names) instead of the full per-job dump. Keeps responses inline-returnable at thousands of repos. Set False for the full per-job detail.
threadsNoParallel workers.
auto_bumpNoAutomatically run phased_bumpversion if validation passes. Begins at the lowest phase that has repository changes (and cascades to every later phase), skipping unchanged upstream phases.
auto_pushNoAutomatically run phased_push if validation passes. Begins at the lowest phase with unpushed work, skipping the inter-phase waits of unchanged upstream phases.
bump_partNoThe part of the version to bump (e.g. minor, patch, major) if auto_bump is used.minor
output_dirNoDirectory to write the validation-reports for 'validate'.
commit_codeNoFor 'validate': after validation passes and BEFORE the version bump, concurrently stage (git add -A), run pre-commit, and commit feature code across ALL targeted repos. Ensures untracked/new files are committed (not left for the push safety net). The bump then waits on this step. Use with commit_message.
failed_onlyNoFor 'validate': target ONLY repositories whose most-recent validation failed (the remediation loop). Ignored if 'repositories' is given. Forces re-validation of that set.
repositoriesNoComma-separated list of specific repositories to target.
commit_messageNoCommit message for the commit_code step. Required when commit_code=True.
generate_reportNoGenerate validation report directory for 'validate'. Default True.
prune_worktreesNoFor 'validate' with auto_bump/auto_push: after the release, prune session worktrees already merged into main (and dangling admin pointers). DESTRUCTIVE. Default False — the release still runs the audit and REPORTS the safe_to_prune/do_not_disturb classification under 'worktree_hygiene_job_id' WITHOUT deleting anything. Never touches active/in-flight or orphaned worktrees.
force_revalidateNoIf true, bypass validation cache and force re-validation of all projects.

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnly=false, destructive=false, idempotent=false, so the safety profile is partly covered. The description adds genuinely new behavioral context — that validation is asynchronous and returns a job_id for polling. It does not, however, mention the commit/bump/push side effects reachable via auto_bump, auto_push, and commit_code, nor the DESTRUCTIVE prune_worktrees option (that detail lives only in the schema).

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

Conciseness4/5

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

Three tight sentences with the core purpose front-loaded and no filler. The async polling note is relevant, though it partly duplicates what belongs to the validate_status sibling, slightly diluting the front-loaded purpose.

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?

An output schema exists and the schema documents all 15 parameters, so the return-value burden is largely off the description. Still, for a large multi-mode tool the central question — how 'install', 'build', and 'validate' are triggered given there is no action parameter — is left unanswered, which is a meaningful completeness gap.

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

Parameters3/5

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

Schema description coverage is 100% and the 15 parameters are well documented in the schema, so the baseline of 3 applies. The description only echoes the job_id polling use case and adds no format or behavioral detail about the other parameters.

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

Purpose4/5

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

The description gives a specific verb set and resource ('Bulk install, build, and validate Python projects'), so the agent knows the general function. However, it never explains how the install/build/validate options are selected — there is no 'action' parameter in the schema — and it does not differentiate itself from the sibling tools rm_projects_install, rm_projects_validate, and rm_projects_validate_status, which appear to cover the same ground.

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

Usage Guidelines3/5

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

It gives useful flow guidance for one path: 'validate' returns a job_id and you poll it with 'validate_status'. But it offers no guidance on when to use install vs. build vs. validate, no prerequisites or ordering, and no when-not-to-use. The agent is left to infer the primary selection criterion.

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

rm_projects_installInstallB

Install (rm_projects). Bulk install, build, and validate Python projects.

The 'validate' action submits validation as a background job and returns a job_id immediately. Use 'validate_status' with that job_id to poll progress and retrieve results once complete.

NameRequiredDescriptionDefault
extraNoInstall group (e.g. 'all') for 'install'.all
job_idNoJob ID to check status for 'validate_status' action.
summaryNoFor 'validate'/'validate_status': return a COMPACT roll-up (counts + failed set + running names) instead of the full per-job dump. Keeps responses inline-returnable at thousands of repos. Set False for the full per-job detail.
threadsNoParallel workers.
auto_bumpNoAutomatically run phased_bumpversion if validation passes. Begins at the lowest phase that has repository changes (and cascades to every later phase), skipping unchanged upstream phases.
auto_pushNoAutomatically run phased_push if validation passes. Begins at the lowest phase with unpushed work, skipping the inter-phase waits of unchanged upstream phases.
bump_partNoThe part of the version to bump (e.g. minor, patch, major) if auto_bump is used.minor
output_dirNoDirectory to write the validation-reports for 'validate'.
commit_codeNoFor 'validate': after validation passes and BEFORE the version bump, concurrently stage (git add -A), run pre-commit, and commit feature code across ALL targeted repos. Ensures untracked/new files are committed (not left for the push safety net). The bump then waits on this step. Use with commit_message.
failed_onlyNoFor 'validate': target ONLY repositories whose most-recent validation failed (the remediation loop). Ignored if 'repositories' is given. Forces re-validation of that set.
repositoriesNoComma-separated list of specific repositories to target.
commit_messageNoCommit message for the commit_code step. Required when commit_code=True.
generate_reportNoGenerate validation report directory for 'validate'. Default True.
prune_worktreesNoFor 'validate' with auto_bump/auto_push: after the release, prune session worktrees already merged into main (and dangling admin pointers). DESTRUCTIVE. Default False — the release still runs the audit and REPORTS the safe_to_prune/do_not_disturb classification under 'worktree_hygiene_job_id' WITHOUT deleting anything. Never touches active/in-flight or orphaned worktrees.
force_revalidateNoIf true, bypass validation cache and force re-validation of all projects.

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

The description adds real behavioral context beyond the annotations: the validate action is asynchronous, returns a job_id immediately, and requires polling. Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the safety baseline is covered, but the description says nothing about the mutation side effects implied by auto_push/auto_bump/commit_code or about the schema's explicitly DESTRUCTIVE prune_worktrees flag. No contradiction with annotations.

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

Conciseness4/5

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

Four short sentences, front-loaded with what the tool does and then the async validate/poll contract. Nothing is padded and no sentence is wasted. It is arguably too terse for a 15-parameter tool, but that is a completeness issue rather than a structural one.

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?

This is a 15-parameter bulk orchestration tool with release-side effects (auto_bump, auto_push, commit_code, prune_worktrees, failed_only remediation loop) and an output schema, yet the description only explains the validate-async polling pattern. The install and build actions named in the first sentence get no elaboration, and the description references 'validate'/'validate_status' actions even though the schema exposes no action parameter — leaving an agent unclear how the actions are selected. Given the complexity, this is thinner than it should be.

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% and the per-parameter descriptions are unusually rich (including the async job_id semantics and the DESTRUCTIVE warning on prune_worktrees), so the schema carries the parameter burden. The tool description adds no parameter-level syntax or format detail beyond that, so the baseline 3 applies.

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

Purpose4/5

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

Opens with a specific verb+resource+scope: 'Bulk install, build, and validate Python projects' under the rm_projects namespace. It is clear what the tool does, but it never distinguishes itself from siblings such as repository_manager_install_projects, rm_projects_build, rm_projects_validate, or rm_projects_validate_status, which overlap heavily with the three actions named.

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

Usage Guidelines3/5

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

It gives one piece of routing advice — that 'validate' returns a job_id and that 'validate_status' should be used to poll it — which is genuinely useful. However, there is no guidance on when to use this tool versus the many sibling install/build/validate tools, and no explanation of which of the three actions (install, build, validate) applies when.

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

rm_projects_validateValidateB

Validate (rm_projects). Bulk install, build, and validate Python projects.

The 'validate' action submits validation as a background job and returns a job_id immediately. Use 'validate_status' with that job_id to poll progress and retrieve results once complete.

NameRequiredDescriptionDefault
extraNoInstall group (e.g. 'all') for 'install'.all
job_idNoJob ID to check status for 'validate_status' action.
summaryNoFor 'validate'/'validate_status': return a COMPACT roll-up (counts + failed set + running names) instead of the full per-job dump. Keeps responses inline-returnable at thousands of repos. Set False for the full per-job detail.
threadsNoParallel workers.
auto_bumpNoAutomatically run phased_bumpversion if validation passes. Begins at the lowest phase that has repository changes (and cascades to every later phase), skipping unchanged upstream phases.
auto_pushNoAutomatically run phased_push if validation passes. Begins at the lowest phase with unpushed work, skipping the inter-phase waits of unchanged upstream phases.
bump_partNoThe part of the version to bump (e.g. minor, patch, major) if auto_bump is used.minor
output_dirNoDirectory to write the validation-reports for 'validate'.
commit_codeNoFor 'validate': after validation passes and BEFORE the version bump, concurrently stage (git add -A), run pre-commit, and commit feature code across ALL targeted repos. Ensures untracked/new files are committed (not left for the push safety net). The bump then waits on this step. Use with commit_message.
failed_onlyNoFor 'validate': target ONLY repositories whose most-recent validation failed (the remediation loop). Ignored if 'repositories' is given. Forces re-validation of that set.
repositoriesNoComma-separated list of specific repositories to target.
commit_messageNoCommit message for the commit_code step. Required when commit_code=True.
generate_reportNoGenerate validation report directory for 'validate'. Default True.
prune_worktreesNoFor 'validate' with auto_bump/auto_push: after the release, prune session worktrees already merged into main (and dangling admin pointers). DESTRUCTIVE. Default False — the release still runs the audit and REPORTS the safe_to_prune/do_not_disturb classification under 'worktree_hygiene_job_id' WITHOUT deleting anything. Never touches active/in-flight or orphaned worktrees.
force_revalidateNoIf true, bypass validation cache and force re-validation of all projects.

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

The description adds genuine behavioral context beyond the annotations: 'validate' runs as a background job and returns a job_id immediately, explaining the async contract. The annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false) only cover the mutation/safety profile; the description does not surface the side-effecting chains (auto_bump, auto_push, commit_code) or the DESTRUCTIVE prune behavior, though the schema does document those.

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

Conciseness4/5

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

Two compact sentences with the purpose front-loaded and then the async contract, no filler. Minor waste in the leading 'Validate (rm_projects).' which merely restates the name and title, and the description is arguably too terse for a 15-parameter tool, but nothing is bloated.

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?

An output schema exists, so return values need not be explained, and the async/job_id model is captured. Still, for a tool with 15 parameters, no action parameter in the schema despite the description referencing 'validate'/'validate_status' actions, and cascading write behavior, the description leaves an agent underinformed about scope and side effects.

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

Parameters3/5

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

Schema description coverage is 100%, so all 15 parameters are already documented in the schema, which establishes a baseline of 3. The description adds no parameter-level meaning beyond the async job_id/validate_status relationship, so it neither compensates nor detracts.

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 gives a specific verb and scope: 'Bulk install, build, and validate Python projects,' which lets an agent separate it from single-project siblings like repository_manager_validate_single_project. However, it does not distinguish itself from the many adjacent bulk tools (rm_projects_build, rm_projects_install, repository_manager_validate_and_release) beyond the one-word 'validate' in the name.

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

Usage Guidelines3/5

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

It explicitly instructs the agent to call 'validate_status' with the returned job_id to poll and retrieve results, which is real workflow guidance. But there is no when-to-use/when-not-to-use guidance against the numerous sibling validate/build/install tools, and none of the parameter-driven modes (failed_only remediation, auto_bump/auto_push chains) are routed from the description.

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

rm_projects_validate_statusValidate StatusA

Validate status (rm_projects). Bulk install, build, and validate Python projects.

The 'validate' action submits validation as a background job and returns a job_id immediately. Use 'validate_status' with that job_id to poll progress and retrieve results once complete.

NameRequiredDescriptionDefault
extraNoInstall group (e.g. 'all') for 'install'.all
job_idNoJob ID to check status for 'validate_status' action.
summaryNoFor 'validate'/'validate_status': return a COMPACT roll-up (counts + failed set + running names) instead of the full per-job dump. Keeps responses inline-returnable at thousands of repos. Set False for the full per-job detail.
threadsNoParallel workers.
auto_bumpNoAutomatically run phased_bumpversion if validation passes. Begins at the lowest phase that has repository changes (and cascades to every later phase), skipping unchanged upstream phases.
auto_pushNoAutomatically run phased_push if validation passes. Begins at the lowest phase with unpushed work, skipping the inter-phase waits of unchanged upstream phases.
bump_partNoThe part of the version to bump (e.g. minor, patch, major) if auto_bump is used.minor
output_dirNoDirectory to write the validation-reports for 'validate'.
commit_codeNoFor 'validate': after validation passes and BEFORE the version bump, concurrently stage (git add -A), run pre-commit, and commit feature code across ALL targeted repos. Ensures untracked/new files are committed (not left for the push safety net). The bump then waits on this step. Use with commit_message.
failed_onlyNoFor 'validate': target ONLY repositories whose most-recent validation failed (the remediation loop). Ignored if 'repositories' is given. Forces re-validation of that set.
repositoriesNoComma-separated list of specific repositories to target.
commit_messageNoCommit message for the commit_code step. Required when commit_code=True.
generate_reportNoGenerate validation report directory for 'validate'. Default True.
prune_worktreesNoFor 'validate' with auto_bump/auto_push: after the release, prune session worktrees already merged into main (and dangling admin pointers). DESTRUCTIVE. Default False — the release still runs the audit and REPORTS the safe_to_prune/do_not_disturb classification under 'worktree_hygiene_job_id' WITHOUT deleting anything. Never touches active/in-flight or orphaned worktrees.
force_revalidateNoIf true, bypass validation cache and force re-validation of all projects.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations are weak (readOnlyHint=false, destructiveHint=false, idempotentHint=false) and don't reveal much. The description adds genuine context about asynchronous job semantics (immediate job_id return, polling for results), which helps. But it describes the 'validate' action's behavior rather than disclosing what this status tool itself returns or its own side effects, so it only partly carries the burden.

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

Conciseness4/5

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

Two tight paragraphs that front-load the async job_id workflow, which is the key thing an agent needs. The only waste is the redundant title restatement and the family-level 'install, build, and validate' line that doesn't apply here.

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?

An output schema exists, so return values needn't be explained, and the async workflow is covered. But the description repeatedly references 'validate'/'validate_status' actions while the schema exposes no action parameter (additionalProperties=false), leaving an agent unsure how the action is selected. That gap keeps it at minimum-viable completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 15 parameters (job_id, summary, threads, etc.) in detail. The description only echoes job_id usage, adding nothing beyond the schema. Baseline 3 is appropriate when structured data does the heavy lifting.

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

Purpose4/5

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

The description names the specific async pattern: 'validate' submits a background job and returns a job_id, while this tool polls progress with that job_id. That cleanly distinguishes it from the sibling rm_projects_validate. However, the opening line 'Bulk install, build, and validate Python projects' describes the whole family rather than this status-only tool, which muddies the header.

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

Usage Guidelines4/5

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

It explicitly states the routing condition: use 'validate_status' with the job_id returned by 'validate' to poll until complete. That names the alternative and the trigger. It does not state what to do if no job_id exists yet or when-not to poll, so it falls short of a 5.

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

rm_remote_workers_dispatch_buildDispatch BuildC

Dispatch build (rm_remote_workers). Remote worker registry, immutable source staging, and artifact transport.

Composes RMDD-15's repository_manager.remote_execution package with the RMDD-08 CapacityInventory resource ledger. The optional tunnel-manager dependency is never required to import this tool: recheck/live remote dispatch refuse with a named, cause-preserving error when it is absent instead of raising an ImportError. host_loss_reconcile always refuses today: no live WorkItem-authoritative ResourceScheduler is wired into any repository-manager entrypoint yet, and this tool never substitutes a local in-memory reservation ledger for that authority.

NameRequiredDescriptionDefault
kindNoFor receive_artifact: 'artifact' (default) or 'log'.
pathNoFor seed_from_inventory: override the inventory.yaml path (default ~/.config/agent-connectors/inventory.yaml).
rootNoFor receive_artifact: store root.
actorNoFor recheck: the requesting actor.
fenceNoFor host_loss_reconcile.
labelsNoFor register_worker.
originNoFor stage_source: credential-free Git origin.
reasonNoFor host_loss_reconcile, optional.
attemptNoFor host_loss_reconcile.
commandNoFor dispatch_build: the fixed argv to run on the remote host after staging.
host_idNoTarget host id.
workdirNoFor dispatch_build: path relative to the staged worktree root to run 'command' in (default '.', the worktree root itself).
disk_mibNoFor register_worker.
tree_shaNoFor stage_source: the full 40-hex immutable commit SHA.
cpu_weightNoFor register_worker.
media_typeNoFor receive_artifact, optional.
memory_mibNoFor register_worker.
toolchainsNoFor register_worker.
destinationNoFor verify_source.
parent_rootNoFor stage_source: the worker's authorized parent root.
expected_shaNoFor verify_source.
work_item_idNoFor host_loss_reconcile.
process_slotsNoFor register_worker.
relative_pathNoFor receive_artifact.
repository_idNoFor recheck/stage_source/verify_source.
worktree_nameNoFor stage_source.
content_base64NoFor receive_artifact.
reservation_idNoFor host_loss_reconcile.
declared_digestNoFor receive_artifact, optional.
execute_locallyNoFor stage_source: also run+verify the commands via a local executor.
inventory_aliasNoFor register_worker/recheck: the tunnel-manager inventory alias.
timeout_secondsNoFor stage_source/dispatch_build.
repository_rootsNoFor register_worker: repository id -> authorized absolute worktree root.
required_toolchainNoFor recheck.
source_descriptionNoFor receive_artifact.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so the safety profile is covered externally. The description adds genuine behavioral context beyond that: the tunnel-manager dependency is optional, refusals are named and cause-preserving rather than raising ImportError, and host_loss_reconcile is unconditionally unavailable. However, it discloses nothing about the target operation's own side effects or required preconditions.

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

Conciseness2/5

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

The description is long, jargon-dense ('RMDD-15', 'CapacityInventory resource ledger', 'WorkItem-authoritative ResourceScheduler') and spends most of its length on module architecture and the refusal behavior of sibling operations. It is not front-loaded on what this tool does, so most sentences do not earn their place for the calling agent.

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 35-parameter, multi-operation tool with an output schema, the description never explains how one tool multiplexes register_worker/recheck/stage_source/dispatch_build or what dispatch_build requires end-to-end (a staged source, host_id, command argv). The most important routing and prerequisite information is absent.

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% and every parameter carries a 'For <operation>:' note, so the schema fully documents meaning. The description adds no parameter-level semantics at all, which is the expected baseline of 3 when the schema does the heavy lifting.

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

Purpose2/5

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

The opening line 'Dispatch build (rm_remote_workers)' merely restates the name/title, and the remainder describes the module's scope ('Remote worker registry, immutable source staging, and artifact transport') rather than this tool's specific operation. An agent cannot tell from the description what dispatch_build actually does that distinguishes it from rm_remote_workers_stage_source or rm_remote_workers_receive_artifact.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance versus the many rm_remote_workers_* siblings. The only conditional information is about failure modes ('refuse ... when it is absent', 'host_loss_reconcile always refuses today'), which describes other operations and never routes the agent to the right tool.

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

rm_remote_workers_host_loss_reconcileHost Loss ReconcileB

Host loss reconcile (rm_remote_workers). Remote worker registry, immutable source staging, and artifact transport.

Composes RMDD-15's repository_manager.remote_execution package with the RMDD-08 CapacityInventory resource ledger. The optional tunnel-manager dependency is never required to import this tool: recheck/live remote dispatch refuse with a named, cause-preserving error when it is absent instead of raising an ImportError. host_loss_reconcile always refuses today: no live WorkItem-authoritative ResourceScheduler is wired into any repository-manager entrypoint yet, and this tool never substitutes a local in-memory reservation ledger for that authority.

NameRequiredDescriptionDefault
kindNoFor receive_artifact: 'artifact' (default) or 'log'.
pathNoFor seed_from_inventory: override the inventory.yaml path (default ~/.config/agent-connectors/inventory.yaml).
rootNoFor receive_artifact: store root.
actorNoFor recheck: the requesting actor.
fenceNoFor host_loss_reconcile.
labelsNoFor register_worker.
originNoFor stage_source: credential-free Git origin.
reasonNoFor host_loss_reconcile, optional.
attemptNoFor host_loss_reconcile.
commandNoFor dispatch_build: the fixed argv to run on the remote host after staging.
host_idNoTarget host id.
workdirNoFor dispatch_build: path relative to the staged worktree root to run 'command' in (default '.', the worktree root itself).
disk_mibNoFor register_worker.
tree_shaNoFor stage_source: the full 40-hex immutable commit SHA.
cpu_weightNoFor register_worker.
media_typeNoFor receive_artifact, optional.
memory_mibNoFor register_worker.
toolchainsNoFor register_worker.
destinationNoFor verify_source.
parent_rootNoFor stage_source: the worker's authorized parent root.
expected_shaNoFor verify_source.
work_item_idNoFor host_loss_reconcile.
process_slotsNoFor register_worker.
relative_pathNoFor receive_artifact.
repository_idNoFor recheck/stage_source/verify_source.
worktree_nameNoFor stage_source.
content_base64NoFor receive_artifact.
reservation_idNoFor host_loss_reconcile.
declared_digestNoFor receive_artifact, optional.
execute_locallyNoFor stage_source: also run+verify the commands via a local executor.
inventory_aliasNoFor register_worker/recheck: the tunnel-manager inventory alias.
timeout_secondsNoFor stage_source/dispatch_build.
repository_rootsNoFor register_worker: repository id -> authorized absolute worktree root.
required_toolchainNoFor recheck.
source_descriptionNoFor receive_artifact.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=false, idempotentHint=false, and the description goes well beyond them: it discloses that the tool always refuses, that the tunnel-manager dependency is optional at import time and produces a named, cause-preserving error when absent, and that no local in-memory ledger is ever substituted. That is real failure-mode and authority semantics an agent cannot get from 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.

Conciseness2/5

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

The text opens with a generic family blurb, then spends most of its length on implementation archaeology (RMDD-15, RMDD-08, ImportError behavior, ResourceScheduler wiring) in Sphinx double-backtick prose. The single actionable fact — the tool always refuses — is placed last rather than front-loaded, and much of the remainder does not earn 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?

An output schema exists and schema coverage is full, so return values and parameter meaning need no elaboration here. The description supplies the decisive operational fact (the operation is a guaranteed refusal) and the dependency behavior, which is sufficient for an agent to decide correctly. Only some clutter around the edges keeps it from being exemplary.

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% — every one of the 35 parameters carries an operation-scoped description (e.g. 'For host_loss_reconcile', 'For register_worker'), so the schema already does the heavy lifting. The description adds no parameter meaning whatsoever, which is the baseline-3 case for high coverage.

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

Purpose3/5

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

The lead sentence is a family-level summary ('Remote worker registry, immutable source staging, and artifact transport') that describes the whole rm_remote_workers group rather than this tool, and the name/title restate each other. The one genuinely distinguishing fact — 'host_loss_reconcile always refuses today' — is buried at the end of the second paragraph. An agent can eventually learn what this is, but only after wading through internal package references.

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?

There is no explicit 'use this when' or 'use X instead' statement, but 'host_loss_reconcile always refuses today' functions as clear implied negative guidance: don't call it expecting a result. However, the description never routes the agent to the sibling operations (recheck, stage_source, verify_source, dispatch_build) that the shared 35-parameter schema clearly serves, so selection guidance is incomplete.

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

rm_remote_workers_profileProfileC

Profile (rm_remote_workers). Remote worker registry, immutable source staging, and artifact transport.

Composes RMDD-15's repository_manager.remote_execution package with the RMDD-08 CapacityInventory resource ledger. The optional tunnel-manager dependency is never required to import this tool: recheck/live remote dispatch refuse with a named, cause-preserving error when it is absent instead of raising an ImportError. host_loss_reconcile always refuses today: no live WorkItem-authoritative ResourceScheduler is wired into any repository-manager entrypoint yet, and this tool never substitutes a local in-memory reservation ledger for that authority.

NameRequiredDescriptionDefault
kindNoFor receive_artifact: 'artifact' (default) or 'log'.
pathNoFor seed_from_inventory: override the inventory.yaml path (default ~/.config/agent-connectors/inventory.yaml).
rootNoFor receive_artifact: store root.
actorNoFor recheck: the requesting actor.
fenceNoFor host_loss_reconcile.
labelsNoFor register_worker.
originNoFor stage_source: credential-free Git origin.
reasonNoFor host_loss_reconcile, optional.
attemptNoFor host_loss_reconcile.
commandNoFor dispatch_build: the fixed argv to run on the remote host after staging.
host_idNoTarget host id.
workdirNoFor dispatch_build: path relative to the staged worktree root to run 'command' in (default '.', the worktree root itself).
disk_mibNoFor register_worker.
tree_shaNoFor stage_source: the full 40-hex immutable commit SHA.
cpu_weightNoFor register_worker.
media_typeNoFor receive_artifact, optional.
memory_mibNoFor register_worker.
toolchainsNoFor register_worker.
destinationNoFor verify_source.
parent_rootNoFor stage_source: the worker's authorized parent root.
expected_shaNoFor verify_source.
work_item_idNoFor host_loss_reconcile.
process_slotsNoFor register_worker.
relative_pathNoFor receive_artifact.
repository_idNoFor recheck/stage_source/verify_source.
worktree_nameNoFor stage_source.
content_base64NoFor receive_artifact.
reservation_idNoFor host_loss_reconcile.
declared_digestNoFor receive_artifact, optional.
execute_locallyNoFor stage_source: also run+verify the commands via a local executor.
inventory_aliasNoFor register_worker/recheck: the tunnel-manager inventory alias.
timeout_secondsNoFor stage_source/dispatch_build.
repository_rootsNoFor register_worker: repository id -> authorized absolute worktree root.
required_toolchainNoFor recheck.
source_descriptionNoFor receive_artifact.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior3/5

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

Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), and the description adds real behavioral context beyond them: tunnel-manager is optional at import time and missing dependencies produce named, cause-preserving errors instead of ImportError, and host_loss_reconcile unconditionally refuses. This is useful disclosure, though much of it applies to sibling operations rather than this tool itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is not front-loaded with purpose and instead leads with internal package composition and RMDD-15/RMDD-08 cross-references that do not help an agent decide or invoke. Only a minority of the sentences earn their place for tool selection.

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 35-parameter tool with an output schema and no required parameters, the description should at minimum state what the tool does and how its many operation-specific parameters are selected. It never does, leaving the core action and parameter-selection model unexplained.

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% across 35 parameters, so the schema already carries the full burden of per-parameter documentation. The description adds no parameter semantics of its own, which matches the baseline-3 rule for high coverage schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description restates the tool name ('Profile (rm_remote_workers)') and then lists the subsystem's domain ('remote worker registry, immutable source staging, and artifact transport') without ever stating what this tool actually does or returns. It describes the package composition rather than the tool's action, so an agent cannot tell what invoking rm_remote_workers_profile accomplishes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is some implicit guidance — recheck/live remote dispatch refuse without tunnel-manager, and host_loss_reconcile always refuses today — but these read as failure-mode notes about other operations, not when-to-use-this-tool guidance. No alternatives among the many rm_remote_workers_* siblings are named or differentiated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rm_remote_workers_receive_artifactReceive ArtifactC

Receive artifact (rm_remote_workers). Remote worker registry, immutable source staging, and artifact transport.

Composes RMDD-15's repository_manager.remote_execution package with the RMDD-08 CapacityInventory resource ledger. The optional tunnel-manager dependency is never required to import this tool: recheck/live remote dispatch refuse with a named, cause-preserving error when it is absent instead of raising an ImportError. host_loss_reconcile always refuses today: no live WorkItem-authoritative ResourceScheduler is wired into any repository-manager entrypoint yet, and this tool never substitutes a local in-memory reservation ledger for that authority.

NameRequiredDescriptionDefault
kindNoFor receive_artifact: 'artifact' (default) or 'log'.
pathNoFor seed_from_inventory: override the inventory.yaml path (default ~/.config/agent-connectors/inventory.yaml).
rootNoFor receive_artifact: store root.
actorNoFor recheck: the requesting actor.
fenceNoFor host_loss_reconcile.
labelsNoFor register_worker.
originNoFor stage_source: credential-free Git origin.
reasonNoFor host_loss_reconcile, optional.
attemptNoFor host_loss_reconcile.
commandNoFor dispatch_build: the fixed argv to run on the remote host after staging.
host_idNoTarget host id.
workdirNoFor dispatch_build: path relative to the staged worktree root to run 'command' in (default '.', the worktree root itself).
disk_mibNoFor register_worker.
tree_shaNoFor stage_source: the full 40-hex immutable commit SHA.
cpu_weightNoFor register_worker.
media_typeNoFor receive_artifact, optional.
memory_mibNoFor register_worker.
toolchainsNoFor register_worker.
destinationNoFor verify_source.
parent_rootNoFor stage_source: the worker's authorized parent root.
expected_shaNoFor verify_source.
work_item_idNoFor host_loss_reconcile.
process_slotsNoFor register_worker.
relative_pathNoFor receive_artifact.
repository_idNoFor recheck/stage_source/verify_source.
worktree_nameNoFor stage_source.
content_base64NoFor receive_artifact.
reservation_idNoFor host_loss_reconcile.
declared_digestNoFor receive_artifact, optional.
execute_locallyNoFor stage_source: also run+verify the commands via a local executor.
inventory_aliasNoFor register_worker/recheck: the tunnel-manager inventory alias.
timeout_secondsNoFor stage_source/dispatch_build.
repository_rootsNoFor register_worker: repository id -> authorized absolute worktree root.
required_toolchainNoFor recheck.
source_descriptionNoFor receive_artifact.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare a non-read-only, non-idempotent, non-destructive, closed-world mutation surface, and the description usefully adds that recheck/live dispatch raise a named cause-preserving error when tunnel-manager is missing and that host_loss_reconcile always refuses pending a live ResourceScheduler. That is genuine context beyond annotations, but core traits (what gets written where, permissions, whether artifacts persist) are absent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is dominated by internal design notes (RMDD-15, RMDD-08, CapacityInventory, ImportError behavior) rather than front-loaded operational information. The most useful sentence for an agent is buried at the end, and the opening scope phrase is not developed.

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 35-parameter, 0-required umbrella tool spanning eight operations, the description omits the single most important fact for correct invocation: how an operation is selected and what the tool returns for each. An output schema exists so return values need not be restated, but the operation-selection gap is disqualifying.

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 per-parameter "For <op>: ..." strings already carry the semantics; baseline 3 applies. The description adds nothing about parameter meaning or how the 35 fields map onto an operation, but it does not need to given the schema's verbosity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first line gives a verb+resource ("Receive artifact") and a subsystem scope ("Remote worker registry, immutable source staging, and artifact transport"), but the schema exposes ~8 distinct operations (receive_artifact, seed_from_inventory, register_worker, stage_source, verify_source, recheck, host_loss_reconcile, dispatch_build) that all have dedicated sibling tools. The description never reconciles the name "receive_artifact" with this umbrella surface, so an agent cannot tell what this tool uniquely does versus its siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus rm_remote_workers_register_worker, stage_source, dispatch_build, etc., nor how to select an operation from the shared parameter bag. The only conditional information (tunnel-manager absence, host_loss_reconcile refusal) is about failure modes, not selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rm_remote_workers_recheckRecheckC

Recheck (rm_remote_workers). Remote worker registry, immutable source staging, and artifact transport.

Composes RMDD-15's repository_manager.remote_execution package with the RMDD-08 CapacityInventory resource ledger. The optional tunnel-manager dependency is never required to import this tool: recheck/live remote dispatch refuse with a named, cause-preserving error when it is absent instead of raising an ImportError. host_loss_reconcile always refuses today: no live WorkItem-authoritative ResourceScheduler is wired into any repository-manager entrypoint yet, and this tool never substitutes a local in-memory reservation ledger for that authority.

NameRequiredDescriptionDefault
kindNoFor receive_artifact: 'artifact' (default) or 'log'.
pathNoFor seed_from_inventory: override the inventory.yaml path (default ~/.config/agent-connectors/inventory.yaml).
rootNoFor receive_artifact: store root.
actorNoFor recheck: the requesting actor.
fenceNoFor host_loss_reconcile.
labelsNoFor register_worker.
originNoFor stage_source: credential-free Git origin.
reasonNoFor host_loss_reconcile, optional.
attemptNoFor host_loss_reconcile.
commandNoFor dispatch_build: the fixed argv to run on the remote host after staging.
host_idNoTarget host id.
workdirNoFor dispatch_build: path relative to the staged worktree root to run 'command' in (default '.', the worktree root itself).
disk_mibNoFor register_worker.
tree_shaNoFor stage_source: the full 40-hex immutable commit SHA.
cpu_weightNoFor register_worker.
media_typeNoFor receive_artifact, optional.
memory_mibNoFor register_worker.
toolchainsNoFor register_worker.
destinationNoFor verify_source.
parent_rootNoFor stage_source: the worker's authorized parent root.
expected_shaNoFor verify_source.
work_item_idNoFor host_loss_reconcile.
process_slotsNoFor register_worker.
relative_pathNoFor receive_artifact.
repository_idNoFor recheck/stage_source/verify_source.
worktree_nameNoFor stage_source.
content_base64NoFor receive_artifact.
reservation_idNoFor host_loss_reconcile.
declared_digestNoFor receive_artifact, optional.
execute_locallyNoFor stage_source: also run+verify the commands via a local executor.
inventory_aliasNoFor register_worker/recheck: the tunnel-manager inventory alias.
timeout_secondsNoFor stage_source/dispatch_build.
repository_rootsNoFor register_worker: repository id -> authorized absolute worktree root.
required_toolchainNoFor recheck.
source_descriptionNoFor receive_artifact.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations covering only the safety profile (readOnly=false, destructive=false, non-idempotent), the description earns credit by disclosing real failure semantics: the optional tunnel-manager dependency is never required to import, and recheck/live remote dispatch refuse with a named, cause-preserving error rather than raising ImportError. It also flags that host_loss_reconcile always refuses today because no live ResourceScheduler is wired in — a fact an agent could not obtain from annotations or schema.

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?

Reasonably sized but back-loaded: the useful dependency-refusal behavior sits in the middle of a long compound sentence, while the lead is a name restatement. References to internal tickets (RMDD-15, RMDD-08) and RST double-backtick markup cost space without informing an agent.

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 35-parameter tool with zero required parameters, an output schema, and eight implicit sub-operations, the description omits the single most important fact — that operations are selected by which parameters are supplied and that most parameters are ignored per call. The dependency caveats are valuable but do not compensate for the missing dispatch model.

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% and every parameter carries its own 'For <operation>:' note in the schema, so the schema does the heavy lifting. The description adds no parameter-level syntax, format, or interaction detail beyond the schema, which is the expected baseline-3 outcome.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line restates the tool name ('Recheck') and then lists the whole package's domain (remote worker registry, staging, artifact transport) rather than stating what this tool does. Critically, it never discloses that this single tool is a multi-operation dispatcher — its 35 parameters fork into recheck, register_worker, seed_from_inventory, stage_source, verify_source, receive_artifact, dispatch_build and host_loss_reconcile — so an agent cannot infer the actual action from the text.

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 when-to-use guidance, prerequisites, or exclusions appear anywhere. This is severe here because the sibling list contains dedicated tools (rm_remote_workers_stage_source, rm_remote_workers_verify_source, rm_remote_workers_register_worker, rm_remote_workers_receive_artifact, rm_remote_workers_dispatch_build) that duplicate this tool's sub-operations, and the description gives no basis for choosing between the dispatcher and the single-purpose siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rm_remote_workers_register_workerRegister WorkerC

Register worker (rm_remote_workers). Remote worker registry, immutable source staging, and artifact transport.

Composes RMDD-15's repository_manager.remote_execution package with the RMDD-08 CapacityInventory resource ledger. The optional tunnel-manager dependency is never required to import this tool: recheck/live remote dispatch refuse with a named, cause-preserving error when it is absent instead of raising an ImportError. host_loss_reconcile always refuses today: no live WorkItem-authoritative ResourceScheduler is wired into any repository-manager entrypoint yet, and this tool never substitutes a local in-memory reservation ledger for that authority.

NameRequiredDescriptionDefault
kindNoFor receive_artifact: 'artifact' (default) or 'log'.
pathNoFor seed_from_inventory: override the inventory.yaml path (default ~/.config/agent-connectors/inventory.yaml).
rootNoFor receive_artifact: store root.
actorNoFor recheck: the requesting actor.
fenceNoFor host_loss_reconcile.
labelsNoFor register_worker.
originNoFor stage_source: credential-free Git origin.
reasonNoFor host_loss_reconcile, optional.
attemptNoFor host_loss_reconcile.
commandNoFor dispatch_build: the fixed argv to run on the remote host after staging.
host_idNoTarget host id.
workdirNoFor dispatch_build: path relative to the staged worktree root to run 'command' in (default '.', the worktree root itself).
disk_mibNoFor register_worker.
tree_shaNoFor stage_source: the full 40-hex immutable commit SHA.
cpu_weightNoFor register_worker.
media_typeNoFor receive_artifact, optional.
memory_mibNoFor register_worker.
toolchainsNoFor register_worker.
destinationNoFor verify_source.
parent_rootNoFor stage_source: the worker's authorized parent root.
expected_shaNoFor verify_source.
work_item_idNoFor host_loss_reconcile.
process_slotsNoFor register_worker.
relative_pathNoFor receive_artifact.
repository_idNoFor recheck/stage_source/verify_source.
worktree_nameNoFor stage_source.
content_base64NoFor receive_artifact.
reservation_idNoFor host_loss_reconcile.
declared_digestNoFor receive_artifact, optional.
execute_locallyNoFor stage_source: also run+verify the commands via a local executor.
inventory_aliasNoFor register_worker/recheck: the tunnel-manager inventory alias.
timeout_secondsNoFor stage_source/dispatch_build.
repository_rootsNoFor register_worker: repository id -> authorized absolute worktree root.
required_toolchainNoFor recheck.
source_descriptionNoFor receive_artifact.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=false, idempotentHint=false and readOnlyHint=false. The description adds genuinely useful failure-mode context - the optional tunnel-manager dependency is never needed to import, and affected operations refuse with a named, cause-preserving error rather than raising ImportError - but that context is about recheck/dispatch, not about registration's own behavior (e.g. whether re-registering a host replaces or errors). 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is backtick-heavy implementation prose about package composition, RMDD ticket numbers and import semantics - none of which helps an agent invoke the tool. It front-loads package internals ahead of any statement of purpose, and the sentences do not earn their place for a caller.

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 35-parameter tool with zero required parameters and an output schema present, the description should explain which parameters matter for a registration call and how registration relates to the sibling operations. It instead omits the tool's own semantics entirely, leaving the multiplexed parameter surface undirected beyond the schema tags.

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% and every one of the 35 parameters carries its own 'For <op>:' annotation, so the schema already does the routing work. The description adds nothing about parameters, and in particular never clarifies that the 0-required-parameter surface is conditionally required per operation. Baseline 3 applies when the schema carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line 'Register worker (rm_remote_workers)' essentially restates the name and title, and the follow-on 'Remote worker registry, immutable source staging, and artifact transport' describes the package as a whole rather than what registering a worker does. Nothing distinguishes this tool from rm_remote_workers_recheck, rm_remote_workers_stage_source, or the other seven siblings in its family.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no alternative named, and no statement of what preconditions registration requires. The only conditional behavior discussed (tunnel-manager absence, host_loss_reconcile always refusing) applies to sibling operations, never to register_worker itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rm_remote_workers_seed_from_inventorySeed From InventoryC

Seed from inventory (rm_remote_workers). Remote worker registry, immutable source staging, and artifact transport.

Composes RMDD-15's repository_manager.remote_execution package with the RMDD-08 CapacityInventory resource ledger. The optional tunnel-manager dependency is never required to import this tool: recheck/live remote dispatch refuse with a named, cause-preserving error when it is absent instead of raising an ImportError. host_loss_reconcile always refuses today: no live WorkItem-authoritative ResourceScheduler is wired into any repository-manager entrypoint yet, and this tool never substitutes a local in-memory reservation ledger for that authority.

NameRequiredDescriptionDefault
kindNoFor receive_artifact: 'artifact' (default) or 'log'.
pathNoFor seed_from_inventory: override the inventory.yaml path (default ~/.config/agent-connectors/inventory.yaml).
rootNoFor receive_artifact: store root.
actorNoFor recheck: the requesting actor.
fenceNoFor host_loss_reconcile.
labelsNoFor register_worker.
originNoFor stage_source: credential-free Git origin.
reasonNoFor host_loss_reconcile, optional.
attemptNoFor host_loss_reconcile.
commandNoFor dispatch_build: the fixed argv to run on the remote host after staging.
host_idNoTarget host id.
workdirNoFor dispatch_build: path relative to the staged worktree root to run 'command' in (default '.', the worktree root itself).
disk_mibNoFor register_worker.
tree_shaNoFor stage_source: the full 40-hex immutable commit SHA.
cpu_weightNoFor register_worker.
media_typeNoFor receive_artifact, optional.
memory_mibNoFor register_worker.
toolchainsNoFor register_worker.
destinationNoFor verify_source.
parent_rootNoFor stage_source: the worker's authorized parent root.
expected_shaNoFor verify_source.
work_item_idNoFor host_loss_reconcile.
process_slotsNoFor register_worker.
relative_pathNoFor receive_artifact.
repository_idNoFor recheck/stage_source/verify_source.
worktree_nameNoFor stage_source.
content_base64NoFor receive_artifact.
reservation_idNoFor host_loss_reconcile.
declared_digestNoFor receive_artifact, optional.
execute_locallyNoFor stage_source: also run+verify the commands via a local executor.
inventory_aliasNoFor register_worker/recheck: the tunnel-manager inventory alias.
timeout_secondsNoFor stage_source/dispatch_build.
repository_rootsNoFor register_worker: repository id -> authorized absolute worktree root.
required_toolchainNoFor recheck.
source_descriptionNoFor receive_artifact.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false), so the bar here is lower. The description does add real, non-obvious behavioral context: an optional tunnel-manager dependency that degrades to a named, cause-preserving error instead of ImportError, and the fact that host_loss_reconcile is permanently non-functional. That is meaningful, but it covers only a slice of the tool's behavior and says nothing about side effects or authorization for the other operations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and free of repetition, but it front-loads implementation trivia ('Composes RMDD-15's repository_manager.remote_execution package with the RMDD-08 CapacityInventory resource ledger') that does not help an agent select or call the tool, while omitting the operation set that would. The prose is reasonably tight but the emphasis is misplaced.

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?

This is a complex 35-parameter, zero-required, multi-operation tool with an output schema, so the description need not explain return values. It does, however, need to explain what operations exist and how to select them, which it never does; the operations are only inferable from parameter descriptions. For a tool of this complexity, that is a substantial omission.

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% and every parameter carries a 'For <operation>:' description, so the schema already does the heavy lifting. The description adds no syntax, format, or defaulting detail beyond what the schema provides (e.g., it does not explain how the operation itself is selected). Baseline 3 is appropriate when coverage is this high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line 'Seed from inventory (rm_remote_workers)' mostly restates the name/title, and the follow-on 'Remote worker registry, immutable source staging, and artifact transport' is a topic list rather than a specific verb+resource. It never explains what seeding actually does, nor does it distinguish this tool from the many sibling tools it overlaps (rm_remote_workers_register_worker, rm_remote_workers_stage_source, rm_remote_workers_recheck, rm_remote_workers_receive_artifact, rm_remote_workers_dispatch_build, rm_remote_workers_host_loss_reconcile). An agent cannot tell from the description whether this is a distinct operation or a multiplexed superset.

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 gives some when-not behavior (recheck/live remote dispatch refuse without tunnel-manager; host_loss_reconcile always refuses), which is genuinely useful. However, it gives no guidance on when to pick this tool over the numerous dedicated rm_remote_workers_* siblings, and no explanation of how the agent selects among the operations implied by the 35 'For <op>:' parameters. Context is asserted but selection is left entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rm_remote_workers_stage_sourceStage SourceC

Stage source (rm_remote_workers). Remote worker registry, immutable source staging, and artifact transport.

Composes RMDD-15's repository_manager.remote_execution package with the RMDD-08 CapacityInventory resource ledger. The optional tunnel-manager dependency is never required to import this tool: recheck/live remote dispatch refuse with a named, cause-preserving error when it is absent instead of raising an ImportError. host_loss_reconcile always refuses today: no live WorkItem-authoritative ResourceScheduler is wired into any repository-manager entrypoint yet, and this tool never substitutes a local in-memory reservation ledger for that authority.

NameRequiredDescriptionDefault
kindNoFor receive_artifact: 'artifact' (default) or 'log'.
pathNoFor seed_from_inventory: override the inventory.yaml path (default ~/.config/agent-connectors/inventory.yaml).
rootNoFor receive_artifact: store root.
actorNoFor recheck: the requesting actor.
fenceNoFor host_loss_reconcile.
labelsNoFor register_worker.
originNoFor stage_source: credential-free Git origin.
reasonNoFor host_loss_reconcile, optional.
attemptNoFor host_loss_reconcile.
commandNoFor dispatch_build: the fixed argv to run on the remote host after staging.
host_idNoTarget host id.
workdirNoFor dispatch_build: path relative to the staged worktree root to run 'command' in (default '.', the worktree root itself).
disk_mibNoFor register_worker.
tree_shaNoFor stage_source: the full 40-hex immutable commit SHA.
cpu_weightNoFor register_worker.
media_typeNoFor receive_artifact, optional.
memory_mibNoFor register_worker.
toolchainsNoFor register_worker.
destinationNoFor verify_source.
parent_rootNoFor stage_source: the worker's authorized parent root.
expected_shaNoFor verify_source.
work_item_idNoFor host_loss_reconcile.
process_slotsNoFor register_worker.
relative_pathNoFor receive_artifact.
repository_idNoFor recheck/stage_source/verify_source.
worktree_nameNoFor stage_source.
content_base64NoFor receive_artifact.
reservation_idNoFor host_loss_reconcile.
declared_digestNoFor receive_artifact, optional.
execute_locallyNoFor stage_source: also run+verify the commands via a local executor.
inventory_aliasNoFor register_worker/recheck: the tunnel-manager inventory alias.
timeout_secondsNoFor stage_source/dispatch_build.
repository_rootsNoFor register_worker: repository id -> authorized absolute worktree root.
required_toolchainNoFor recheck.
source_descriptionNoFor receive_artifact.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=false, so the safety profile is covered structurally. The description does add genuine behavioral context beyond that: the optional tunnel-manager dependency degrades to a named, cause-preserving error rather than an ImportError, and host_loss_reconcile is unconditionally refused. However, it says nothing about what staging actually mutates, its side effects, or error modes for the stage_source action itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is dominated by internal implementation references (RMDD-15, RMDD-08, package names, CapacityInventory) that are irrelevant to tool selection, and it is not front-loaded toward the action. ReST backticks and compound clauses make it slow to parse for an agent deciding whether to call this tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a 35-parameter mega-tool where the operation is implicitly selected by which optional parameters are supplied (the schema itself uses 'For recheck:', 'For dispatch_build:', etc.), yet the description never explains that dispatch mechanism or how to invoke a specific action. With an output schema and annotations already present, the remaining burden was to clarify action selection and side effects, which it does not do.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all 35 parameters are already documented by the schema (including per-parameter 'For X:' routing hints). The description adds no parameter syntax, format, or coupling detail beyond that, so the baseline 3 is appropriate for a schema that carries the full load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The leading phrase 'Stage source (rm_remote_workers)' gestures at the verb+resource, but the body immediately expands into a subsystem inventory ('Remote worker registry, immutable source staging, and artifact transport') that describes the whole tool family rather than this tool. It never states what stage_source itself produces or how it differs from siblings like verify_source, dispatch_build, or receive_artifact, all of which are separate tools mentioned only obliquely.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance for stage_source itself. The only conditional behavior described ('recheck'/live dispatch refuse without tunnel-manager; host_loss_reconcile always refuses) concerns sibling operations, not this tool, so an agent gains no selection criteria for choosing stage_source.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rm_remote_workers_verify_sourceVerify SourceC
Read-onlyIdempotent

Verify source (rm_remote_workers). Remote worker registry, immutable source staging, and artifact transport.

Composes RMDD-15's repository_manager.remote_execution package with the RMDD-08 CapacityInventory resource ledger. The optional tunnel-manager dependency is never required to import this tool: recheck/live remote dispatch refuse with a named, cause-preserving error when it is absent instead of raising an ImportError. host_loss_reconcile always refuses today: no live WorkItem-authoritative ResourceScheduler is wired into any repository-manager entrypoint yet, and this tool never substitutes a local in-memory reservation ledger for that authority.

NameRequiredDescriptionDefault
kindNoFor receive_artifact: 'artifact' (default) or 'log'.
pathNoFor seed_from_inventory: override the inventory.yaml path (default ~/.config/agent-connectors/inventory.yaml).
rootNoFor receive_artifact: store root.
actorNoFor recheck: the requesting actor.
fenceNoFor host_loss_reconcile.
labelsNoFor register_worker.
originNoFor stage_source: credential-free Git origin.
reasonNoFor host_loss_reconcile, optional.
attemptNoFor host_loss_reconcile.
commandNoFor dispatch_build: the fixed argv to run on the remote host after staging.
host_idNoTarget host id.
workdirNoFor dispatch_build: path relative to the staged worktree root to run 'command' in (default '.', the worktree root itself).
disk_mibNoFor register_worker.
tree_shaNoFor stage_source: the full 40-hex immutable commit SHA.
cpu_weightNoFor register_worker.
media_typeNoFor receive_artifact, optional.
memory_mibNoFor register_worker.
toolchainsNoFor register_worker.
destinationNoFor verify_source.
parent_rootNoFor stage_source: the worker's authorized parent root.
expected_shaNoFor verify_source.
work_item_idNoFor host_loss_reconcile.
process_slotsNoFor register_worker.
relative_pathNoFor receive_artifact.
repository_idNoFor recheck/stage_source/verify_source.
worktree_nameNoFor stage_source.
content_base64NoFor receive_artifact.
reservation_idNoFor host_loss_reconcile.
declared_digestNoFor receive_artifact, optional.
execute_locallyNoFor stage_source: also run+verify the commands via a local executor.
inventory_aliasNoFor register_worker/recheck: the tunnel-manager inventory alias.
timeout_secondsNoFor stage_source/dispatch_build.
repository_rootsNoFor register_worker: repository id -> authorized absolute worktree root.
required_toolchainNoFor recheck.
source_descriptionNoFor receive_artifact.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description does add real behavioral disclosure beyond the schema: the optional tunnel-manager dependency never blocks import, refusals are named and cause-preserving rather than ImportError, and host_loss_reconcile always refuses. However, none of this describes verify_source's own runtime behavior, so it is context without being operation-specific.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five dense sentences are devoted to package composition and the refusal semantics of other operations, while this tool's own purpose is never elaborated. The content is neither front-loaded with the verify_source operation nor trimmed to what an agent needs to call this tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and annotations cover the safety profile. But for a 35-parameter multiplexing tool, the description omits what verification compares, what a success or mismatch outcome means, and which inputs activate this path — a significant gap for an agent trying to invoke it correctly.

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%, and every parameter carries a "For X:" note, so the schema already documents all 35 fields. The description adds no meaning to the two parameters actually relevant here (destination, expected_sha) and does not clarify how the multiplexed parameter sets dispatch among the eight embedded operations. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with "Verify source (rm_remote_workers)", which merely restates the tool name and title without explaining what verification actually entails (e.g., comparing a staged tree against expected_sha at a destination). The remainder describes the module family (remote worker registry, artifact transport, CapacityInventory composition) rather than this tool's specific operation, and never distinguishes it from the sibling rm_remote_workers_stage_source or rm_remote_workers_recheck.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to invoke verify_source versus sibling tools such as rm_remote_workers_stage_source or rm_remote_workers_recheck, nor any stated prerequisite (e.g., that a source must first be staged). The only conditional behavior discussed (tunnel-manager absence, host_loss_reconcile always refusing) concerns other operations, not this one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rm_workspace_fleet_evidence_checkFleet Evidence CheckD

Fleet evidence check (rm_workspace). Core workspace organization, configuration, and maintenance.

NameRequiredDescriptionDefault
partNoVersion part to bump for 'maintain' (major, minor, patch).patch
forceNoFor 'maintain': bump even when no code changes are detected, and override an orphan local 'next-version' tag (delete it and re-bump) — only if that tag is NOT on the remote.
phaseNoStarting phase number for 'maintain'.
job_idNoJob ID to check status for 'maintain_status' action.
dry_runNoPerform a dry run for 'maintain'.
installNoFor 'setup': after clone/pull, materialize each project's .uv-workspace-siblings/agent-connector-sdk symlink and run `uv sync`, dependency-ordered (agent-connector-sdk first, since every fleet member depends on it and it is not yet published to PyPI at the required floor). Best-effort per project; a partial failure is reported (status='error' with per-project detail in 'data'), never masked as a uniform success. See CONCEPT:RM-BOOTSTRAP.
summaryNoFor 'maintain_status': return a COMPACT roll-up (per-phase counts + failed set + active names + remaining count) instead of the full per-repo phase dump. Keeps the response inline at 200+ repos. Set False for the full per-repo detail.
projectsNoFor 'maintain': comma-separated repo names to bump ONLY those (e.g. re-bump repos a prior run skipped) instead of the whole topological set. Restricts the bulk phase to these names.
yml_pathNoPath to workspace.yml (for 'setup', 'template', 'save').
auto_startNoFor 'maintain': begin at the lowest phase with repository changes instead of always 'phase', cascading to every later phase and skipping unchanged upstream phases. Default True; set False to start at 'phase'. Ignored when 'projects' or 'force' is set.
config_dictNoDictionary representation of WorkspaceConfig (for 'save').
use_defaultNoUse the pre-filled package template for 'template'.
fleet_evidence_jsonNoBounded immutable reference JSON for fleet_evidence_check.

Output Schema

NameRequiredDescription
resultYes

TDQS

D1.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, idempotentHint=false, openWorldHint=false, so this is a state-mutating, non-idempotent local operation — yet the 'check' framing in both name and description implies a passive read, creating a misleading impression the description never corrects. Nothing is added beyond the annotations: no side effects, no required inputs, no failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short, but brevity without content is under-specification, not conciseness. The opening sentence merely echoes the name and the second sentence is generic module boilerplate that does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter, non-idempotent tool with an output schema and multiple verification siblings, the description supplies none of the context an agent needs: what 'evidence' is validated, what the check guarantees, or when to prefer it. The output schema excuses explaining return values, but nothing else is covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 13 parameters (part, force, phase, job_id, dry_run, fleet_evidence_json, etc.) are already documented in the schema, which sets the baseline at 3. The description adds zero parameter meaning — notably it never explains fleet_evidence_json, the parameter that appears to be this tool's core input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description restates the tool name ('Fleet evidence check') and adds only a module-level boilerplate tagline ('Core workspace organization, configuration, and maintenance') that describes rm_workspace as a whole, not this tool. It never says what evidence is checked, against what, or what a 'check' produces — an agent cannot distinguish this from siblings like rm_concepts_verify_candidate or rm_gates_audit_fail_fast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use, when-not-to-use, prerequisites, or named alternatives appear anywhere. With dozens of verification/audit siblings in the namespace, the complete absence of routing guidance leaves selection to guesswork.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rm_workspace_listListD
Read-onlyIdempotent

List (rm_workspace). Core workspace organization, configuration, and maintenance.

NameRequiredDescriptionDefault
partNoVersion part to bump for 'maintain' (major, minor, patch).patch
forceNoFor 'maintain': bump even when no code changes are detected, and override an orphan local 'next-version' tag (delete it and re-bump) — only if that tag is NOT on the remote.
phaseNoStarting phase number for 'maintain'.
job_idNoJob ID to check status for 'maintain_status' action.
dry_runNoPerform a dry run for 'maintain'.
installNoFor 'setup': after clone/pull, materialize each project's .uv-workspace-siblings/agent-connector-sdk symlink and run `uv sync`, dependency-ordered (agent-connector-sdk first, since every fleet member depends on it and it is not yet published to PyPI at the required floor). Best-effort per project; a partial failure is reported (status='error' with per-project detail in 'data'), never masked as a uniform success. See CONCEPT:RM-BOOTSTRAP.
summaryNoFor 'maintain_status': return a COMPACT roll-up (per-phase counts + failed set + active names + remaining count) instead of the full per-repo phase dump. Keeps the response inline at 200+ repos. Set False for the full per-repo detail.
projectsNoFor 'maintain': comma-separated repo names to bump ONLY those (e.g. re-bump repos a prior run skipped) instead of the whole topological set. Restricts the bulk phase to these names.
yml_pathNoPath to workspace.yml (for 'setup', 'template', 'save').
auto_startNoFor 'maintain': begin at the lowest phase with repository changes instead of always 'phase', cascading to every later phase and skipping unchanged upstream phases. Default True; set False to start at 'phase'. Ignored when 'projects' or 'force' is set.
config_dictNoDictionary representation of WorkspaceConfig (for 'save').
use_defaultNoUse the pre-filled package template for 'template'.
fleet_evidence_jsonNoBounded immutable reference JSON for fleet_evidence_check.

Output Schema

NameRequiredDescription
resultYes

TDQS

D1.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint=true, idempotentHint=true, destructiveHint=false) are the only behavioral signal, and the description adds nothing — no mention of the version bumping, orphan 'next-version' tag deletion, clone/pull, uv sync execution, or dry-run semantics that the parameters clearly imply. The description also fails to reconcile the read-only annotation with the plainly mutating behavior of 'maintain'/'setup', leaving the agent with a misleading safety picture.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short but by under-specification, not conciseness: two fragments that carry no actionable information. Brevity here is a defect rather than an efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A 13-parameter, zero-required tool that performs version bumps, tag deletion, dependency installs and dry runs deserves far more than a category label; the description leaves the agent unable to decide when to use it or what it will do. The presence of an output schema removes the need to explain return values, but nothing else is covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; each parameter is well documented in the schema itself (including per-action scoping). The description adds nothing to parameter meaning, and notably never explains how an action is selected, even though no 'action' parameter exists in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"List (rm_workspace)" restates the tool name and title, and the second clause ("Core workspace organization, configuration, and maintenance") is a vague category label, not a description of an operation. The schema shows the tool actually drives 'maintain', 'maintain_status', 'setup', 'template', 'save' and 'fleet_evidence_check' behaviors, yet the description never says so or distinguishes it from siblings like rm_workspace_maintain or rm_workspace_setup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusions, and no routing to alternatives, despite heavy overlap with at least six sibling tools (rm_workspace_maintain, rm_workspace_setup, rm_workspace_template, rm_workspace_save, rm_workspace_maintain_status, rm_workspace_fleet_evidence_check) whose names appear verbatim as action values in the parameter descriptions. An agent cannot infer from this text whether to call this tool or the dedicated sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rm_workspace_list_branchesList BranchesC
Read-onlyIdempotent

List branches (rm_workspace). Core workspace organization, configuration, and maintenance.

NameRequiredDescriptionDefault
partNoVersion part to bump for 'maintain' (major, minor, patch).patch
forceNoFor 'maintain': bump even when no code changes are detected, and override an orphan local 'next-version' tag (delete it and re-bump) — only if that tag is NOT on the remote.
phaseNoStarting phase number for 'maintain'.
job_idNoJob ID to check status for 'maintain_status' action.
dry_runNoPerform a dry run for 'maintain'.
installNoFor 'setup': after clone/pull, materialize each project's .uv-workspace-siblings/agent-connector-sdk symlink and run `uv sync`, dependency-ordered (agent-connector-sdk first, since every fleet member depends on it and it is not yet published to PyPI at the required floor). Best-effort per project; a partial failure is reported (status='error' with per-project detail in 'data'), never masked as a uniform success. See CONCEPT:RM-BOOTSTRAP.
summaryNoFor 'maintain_status': return a COMPACT roll-up (per-phase counts + failed set + active names + remaining count) instead of the full per-repo phase dump. Keeps the response inline at 200+ repos. Set False for the full per-repo detail.
projectsNoFor 'maintain': comma-separated repo names to bump ONLY those (e.g. re-bump repos a prior run skipped) instead of the whole topological set. Restricts the bulk phase to these names.
yml_pathNoPath to workspace.yml (for 'setup', 'template', 'save').
auto_startNoFor 'maintain': begin at the lowest phase with repository changes instead of always 'phase', cascading to every later phase and skipping unchanged upstream phases. Default True; set False to start at 'phase'. Ignored when 'projects' or 'force' is set.
config_dictNoDictionary representation of WorkspaceConfig (for 'save').
use_defaultNoUse the pre-filled package template for 'template'.
fleet_evidence_jsonNoBounded immutable reference JSON for fleet_evidence_check.

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.5/5.0
Behavior2/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 by structured data. The description adds nothing beyond that — no scoping, no indication of what is returned or filtered. Worse, it offers no explanation for why a "list branches" tool carries 13 mutation-flavored parameters (force, dry_run, install, save), which is genuinely confusing context an agent would need.

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?

It is short and the action is front-loaded, which is good. But the second sentence is pure boilerplate that could be deleted without losing information, so it is brief rather than truly economical.

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?

An output schema exists, so return values need not be described. But for a read-only tool whose schema is dominated by unrelated maintain/setup/save parameters, the description should clarify the action, scope, and why those parameters exist. That critical framing is absent.

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 13 parameters in detail — this sets the baseline at 3 per the rubric. The description supplies no parameter meaning at all and never reconciles the listing action with the maintain/setup/template params in the schema, so it does nothing to raise the score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first clause names a concrete verb+resource ("List branches"), so the action is identifiable. However, it gives no scope (which repo/workspace) and does nothing to distinguish it from the near-identical sibling repository_manager_list_branches. The trailing "Core workspace organization, configuration, and maintenance" is generic filler that adds no discriminating information.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no reference to the obvious alternative (repository_manager_list_branches or rm_workspace_list). "Core workspace organization, configuration, and maintenance" is a category label, not usage direction, leaving the agent to guess which of the many siblings to pick.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rm_workspace_maintainMaintainC

Maintain (rm_workspace). Core workspace organization, configuration, and maintenance.

NameRequiredDescriptionDefault
partNoVersion part to bump for 'maintain' (major, minor, patch).patch
forceNoFor 'maintain': bump even when no code changes are detected, and override an orphan local 'next-version' tag (delete it and re-bump) — only if that tag is NOT on the remote.
phaseNoStarting phase number for 'maintain'.
job_idNoJob ID to check status for 'maintain_status' action.
dry_runNoPerform a dry run for 'maintain'.
installNoFor 'setup': after clone/pull, materialize each project's .uv-workspace-siblings/agent-connector-sdk symlink and run `uv sync`, dependency-ordered (agent-connector-sdk first, since every fleet member depends on it and it is not yet published to PyPI at the required floor). Best-effort per project; a partial failure is reported (status='error' with per-project detail in 'data'), never masked as a uniform success. See CONCEPT:RM-BOOTSTRAP.
summaryNoFor 'maintain_status': return a COMPACT roll-up (per-phase counts + failed set + active names + remaining count) instead of the full per-repo phase dump. Keeps the response inline at 200+ repos. Set False for the full per-repo detail.
projectsNoFor 'maintain': comma-separated repo names to bump ONLY those (e.g. re-bump repos a prior run skipped) instead of the whole topological set. Restricts the bulk phase to these names.
yml_pathNoPath to workspace.yml (for 'setup', 'template', 'save').
auto_startNoFor 'maintain': begin at the lowest phase with repository changes instead of always 'phase', cascading to every later phase and skipping unchanged upstream phases. Default True; set False to start at 'phase'. Ignored when 'projects' or 'force' is set.
config_dictNoDictionary representation of WorkspaceConfig (for 'save').
use_defaultNoUse the pre-filled package template for 'template'.
fleet_evidence_jsonNoBounded immutable reference JSON for fleet_evidence_check.

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the safety profile is covered structurally. The description adds nothing beyond that: it does not say what state is mutated (the schema hints at version bumps and tag overrides), what permissions are needed, or that operations may partially fail. No contradiction, but no added behavioral value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short and front-loaded, but the second sentence ('Core workspace organization, configuration, and maintenance') is filler that earns no place — it just re-labels the tool. This is under-specification rather than true conciseness, though it wastes no words.

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 13-parameter tool that appears to span several actions (maintain, setup, template, save, maintain_status, fleet_evidence_check) and mutates version/tag state, the description leaves critical context unstated: the action model, prerequisites, and scope of changes. The presence of an output schema excuses return-value detail, but not the missing purpose and dispatch explanation.

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 13 parameters in detail (including cross-action notes for part, force, projects, auto_start, install). The description contributes no parameter meaning at all, so the baseline of 3 for high schema coverage applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is essentially a restatement of the name: 'Maintain (rm_workspace). Core workspace organization, configuration, and maintenance.' It names no specific verb+resource outcome and does nothing to separate this tool from siblings like rm_workspace_setup, rm_workspace_template, rm_workspace_save, or rm_workspace_maintain_status. An agent cannot tell what 'maintain' concretely does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use, when-not-to-use, or alternative-selection guidance anywhere in the description. The schema repeatedly references actions ('for maintain', 'for setup', 'for template', 'for save', 'for maintain_status'), implying a multi-action dispatch that the description never explains or routes. The agent is left to infer everything.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rm_workspace_maintain_statusMaintain StatusC

Maintain status (rm_workspace). Core workspace organization, configuration, and maintenance.

NameRequiredDescriptionDefault
partNoVersion part to bump for 'maintain' (major, minor, patch).patch
forceNoFor 'maintain': bump even when no code changes are detected, and override an orphan local 'next-version' tag (delete it and re-bump) — only if that tag is NOT on the remote.
phaseNoStarting phase number for 'maintain'.
job_idNoJob ID to check status for 'maintain_status' action.
dry_runNoPerform a dry run for 'maintain'.
installNoFor 'setup': after clone/pull, materialize each project's .uv-workspace-siblings/agent-connector-sdk symlink and run `uv sync`, dependency-ordered (agent-connector-sdk first, since every fleet member depends on it and it is not yet published to PyPI at the required floor). Best-effort per project; a partial failure is reported (status='error' with per-project detail in 'data'), never masked as a uniform success. See CONCEPT:RM-BOOTSTRAP.
summaryNoFor 'maintain_status': return a COMPACT roll-up (per-phase counts + failed set + active names + remaining count) instead of the full per-repo phase dump. Keeps the response inline at 200+ repos. Set False for the full per-repo detail.
projectsNoFor 'maintain': comma-separated repo names to bump ONLY those (e.g. re-bump repos a prior run skipped) instead of the whole topological set. Restricts the bulk phase to these names.
yml_pathNoPath to workspace.yml (for 'setup', 'template', 'save').
auto_startNoFor 'maintain': begin at the lowest phase with repository changes instead of always 'phase', cascading to every later phase and skipping unchanged upstream phases. Default True; set False to start at 'phase'. Ignored when 'projects' or 'force' is set.
config_dictNoDictionary representation of WorkspaceConfig (for 'save').
use_defaultNoUse the pre-filled package template for 'template'.
fleet_evidence_jsonNoBounded immutable reference JSON for fleet_evidence_check.

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=false, openWorldHint=false, and destructiveHint=false, so the safety posture is partly covered structurally. The description adds nothing beyond that — no mention of what the maintain action mutates (version bumps, tags), no note that force can delete an orphan local next-version tag, and no indication that install performs symlink/uv sync side effects. It does not contradict 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two very short sentences, but neither earns its place: the first is a name restatement and the second is filler boilerplate. Brevity here is under-specification rather than effective concision, since the front-loaded content conveys no actionable 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?

An output schema exists so return values need not be explained, and the schema carries parameter detail. But for a multi-action tool with 13 parameters and no required fields, the description omits the one thing only prose can supply — which action this invocation corresponds to and what each action does — leaving the agent to reverse-engineer behavior from parameter descriptions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 13 parameters richly (including action-scoping notes like 'for maintain_status'). Per the rubric, a high-coverage schema sets the baseline at 3 even when the description contributes no parameter detail, which is the case here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description restates the tool name and title ('Maintain status') and pads it with a generic mission statement ('Core workspace organization, configuration, and maintenance') that could describe dozens of sibling tools. It never says what the tool actually does — the schema reveals it is an action dispatcher covering 'maintain', 'maintain_status', 'setup', 'template', and 'save', none of which the description mentions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no mention of alternatives such as rm_workspace_maintain, rm_gates_status, or rm_build_status. For a 13-parameter umbrella tool whose parameters select between five different operations, the absence of any routing instruction is a real gap, not merely a stylistic one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rm_workspace_saveSaveD

Save (rm_workspace). Core workspace organization, configuration, and maintenance.

NameRequiredDescriptionDefault
partNoVersion part to bump for 'maintain' (major, minor, patch).patch
forceNoFor 'maintain': bump even when no code changes are detected, and override an orphan local 'next-version' tag (delete it and re-bump) — only if that tag is NOT on the remote.
phaseNoStarting phase number for 'maintain'.
job_idNoJob ID to check status for 'maintain_status' action.
dry_runNoPerform a dry run for 'maintain'.
installNoFor 'setup': after clone/pull, materialize each project's .uv-workspace-siblings/agent-connector-sdk symlink and run `uv sync`, dependency-ordered (agent-connector-sdk first, since every fleet member depends on it and it is not yet published to PyPI at the required floor). Best-effort per project; a partial failure is reported (status='error' with per-project detail in 'data'), never masked as a uniform success. See CONCEPT:RM-BOOTSTRAP.
summaryNoFor 'maintain_status': return a COMPACT roll-up (per-phase counts + failed set + active names + remaining count) instead of the full per-repo phase dump. Keeps the response inline at 200+ repos. Set False for the full per-repo detail.
projectsNoFor 'maintain': comma-separated repo names to bump ONLY those (e.g. re-bump repos a prior run skipped) instead of the whole topological set. Restricts the bulk phase to these names.
yml_pathNoPath to workspace.yml (for 'setup', 'template', 'save').
auto_startNoFor 'maintain': begin at the lowest phase with repository changes instead of always 'phase', cascading to every later phase and skipping unchanged upstream phases. Default True; set False to start at 'phase'. Ignored when 'projects' or 'force' is set.
config_dictNoDictionary representation of WorkspaceConfig (for 'save').
use_defaultNoUse the pre-filled package template for 'template'.
fleet_evidence_jsonNoBounded immutable reference JSON for fleet_evidence_check.

Output Schema

NameRequiredDescription
resultYes

TDQS

D1.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false). The description is consistent with a write operation but adds nothing beyond that: no statement about which actions mutate state, whether force can delete a local 'next-version' tag, or that setup/install runs `uv sync`. All of that behavioral context lives only in the schema parameter descriptions, so the description itself earns no credit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentence fragments with no waste but also almost no content; this is under-specification rather than genuine conciseness. The brevity buys nothing because the omitted information (actions, scope, prerequisites) is exactly what an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter, multi-action dispatcher with a hidden action dimension, this description is inadequate: it omits action enumeration, prerequisites, and interaction rules among parameters (e.g., that auto_start is ignored when projects or force is set). An output schema exists, so return values need not be described, but the input-side context is entirely 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 already documents all 13 parameters with rich action-specific detail, which sets the baseline at 3. The description contributes nothing further about parameters and does not surface the fact that parameters are action-scoped, so it cannot be scored above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description largely restates the tool name ('Save (rm_workspace)') and then appends a vague category phrase, 'Core workspace organization, configuration, and maintenance,' which describes the whole workspace family rather than this tool. It never explains what is actually saved (config_dict? yml_path? both?), and it does not distinguish the tool from siblings such as rm_workspace_maintain, rm_workspace_setup, rm_workspace_template, or repository_manager_save_workspace_config, which the schema's action keywords ('maintain', 'setup', 'template', 'save') suggest it overlaps with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus the many sibling workspace tools, and no mention of the actions the schema clearly implies ('maintain', 'maintain_status', 'setup', 'template', 'save'). An agent has no way to know from the description which of these operations it is about to trigger.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rm_workspace_setupSetupC

Setup (rm_workspace). Core workspace organization, configuration, and maintenance.

NameRequiredDescriptionDefault
partNoVersion part to bump for 'maintain' (major, minor, patch).patch
forceNoFor 'maintain': bump even when no code changes are detected, and override an orphan local 'next-version' tag (delete it and re-bump) — only if that tag is NOT on the remote.
phaseNoStarting phase number for 'maintain'.
job_idNoJob ID to check status for 'maintain_status' action.
dry_runNoPerform a dry run for 'maintain'.
installNoFor 'setup': after clone/pull, materialize each project's .uv-workspace-siblings/agent-connector-sdk symlink and run `uv sync`, dependency-ordered (agent-connector-sdk first, since every fleet member depends on it and it is not yet published to PyPI at the required floor). Best-effort per project; a partial failure is reported (status='error' with per-project detail in 'data'), never masked as a uniform success. See CONCEPT:RM-BOOTSTRAP.
summaryNoFor 'maintain_status': return a COMPACT roll-up (per-phase counts + failed set + active names + remaining count) instead of the full per-repo phase dump. Keeps the response inline at 200+ repos. Set False for the full per-repo detail.
projectsNoFor 'maintain': comma-separated repo names to bump ONLY those (e.g. re-bump repos a prior run skipped) instead of the whole topological set. Restricts the bulk phase to these names.
yml_pathNoPath to workspace.yml (for 'setup', 'template', 'save').
auto_startNoFor 'maintain': begin at the lowest phase with repository changes instead of always 'phase', cascading to every later phase and skipping unchanged upstream phases. Default True; set False to start at 'phase'. Ignored when 'projects' or 'force' is set.
config_dictNoDictionary representation of WorkspaceConfig (for 'save').
use_defaultNoUse the pre-filled package template for 'template'.
fleet_evidence_jsonNoBounded immutable reference JSON for fleet_evidence_check.

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the agent knows this mutates state non-idempotently. The description adds nothing beyond a vague 'maintenance' implication — no note on which actions are irreversible, permission requirements, or that 'setup' clone/pull operations are network-dependent. It is also scoped as 'setup' while the schema covers maintain/save/template, adding confusion rather than clarity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short, but neither of its two sentences earns its place: one restates the title and the other is filler category language. Brevity without information is under-specification, not conciseness, especially for a 13-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex, multi-action, 13-parameter mutation tool with an output schema and dozens of overlapping siblings, the description supplies none of the routing, default-action, or safety context an agent needs. The only informative content lives in the schema, leaving the description functionally empty.

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% and the 13 parameter descriptions are detailed (action-gating, defaults, and side effects all documented), so the schema carries the semantics. The description contributes nothing to parameter meaning, which is the expected baseline-3 outcome when coverage is high. It notably fails to explain the missing action discriminator that ties those parameters together.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence is a tautology that restates the name and title ('Setup (rm_workspace)'), and the second ('Core workspace organization, configuration, and maintenance') is a vague category label rather than a specific verb+resource. It fails to distinguish this tool from siblings like rm_workspace_maintain, rm_workspace_template, and rm_workspace_save, which the parameter descriptions actually mention ('maintain', 'template', 'save').

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 at all on when to use this tool versus the many sibling workspace tools (rm_workspace_maintain, rm_workspace_list, rm_workspace_template, rm_workspace_save). The schema's per-parameter references to 'setup', 'maintain', 'maintain_status', 'template', and 'save' actions suggest a multi-action surface, but the description never explains the selection logic or a default.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rm_workspace_templateTemplateD

Template (rm_workspace). Core workspace organization, configuration, and maintenance.

NameRequiredDescriptionDefault
partNoVersion part to bump for 'maintain' (major, minor, patch).patch
forceNoFor 'maintain': bump even when no code changes are detected, and override an orphan local 'next-version' tag (delete it and re-bump) — only if that tag is NOT on the remote.
phaseNoStarting phase number for 'maintain'.
job_idNoJob ID to check status for 'maintain_status' action.
dry_runNoPerform a dry run for 'maintain'.
installNoFor 'setup': after clone/pull, materialize each project's .uv-workspace-siblings/agent-connector-sdk symlink and run `uv sync`, dependency-ordered (agent-connector-sdk first, since every fleet member depends on it and it is not yet published to PyPI at the required floor). Best-effort per project; a partial failure is reported (status='error' with per-project detail in 'data'), never masked as a uniform success. See CONCEPT:RM-BOOTSTRAP.
summaryNoFor 'maintain_status': return a COMPACT roll-up (per-phase counts + failed set + active names + remaining count) instead of the full per-repo phase dump. Keeps the response inline at 200+ repos. Set False for the full per-repo detail.
projectsNoFor 'maintain': comma-separated repo names to bump ONLY those (e.g. re-bump repos a prior run skipped) instead of the whole topological set. Restricts the bulk phase to these names.
yml_pathNoPath to workspace.yml (for 'setup', 'template', 'save').
auto_startNoFor 'maintain': begin at the lowest phase with repository changes instead of always 'phase', cascading to every later phase and skipping unchanged upstream phases. Default True; set False to start at 'phase'. Ignored when 'projects' or 'force' is set.
config_dictNoDictionary representation of WorkspaceConfig (for 'save').
use_defaultNoUse the pre-filled package template for 'template'.
fleet_evidence_jsonNoBounded immutable reference JSON for fleet_evidence_check.

Output Schema

NameRequiredDescription
resultYes

TDQS

D1.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the agent knows it is a non-destructive write operation. The description adds a vague domain label ('workspace organization, configuration, and maintenance') but no behavioral context such as what gets mutated, permission needs, or side effects. It does not contradict annotations, but it adds almost no value beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences but severely under-specified. It is not verbose, yet it fails to earn its place by omitting essential information about the tool's purpose and actions. This is under-specification rather than true conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 13 parameters, multiple implied actions (setup, maintain, template, save, maintain_status, fleet_evidence_check), and an output schema, the description is grossly incomplete. It omits any explanation of the tool's capabilities, the available actions, or how to select the right parameters. An agent cannot correctly invoke this tool based on the description alone.

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 each of the 13 parameters is already thoroughly documented in the schema. The description provides no additional parameter meaning or mapping to actions. Baseline 3 is appropriate when the schema does the heavy lifting and the description contributes nothing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Template (rm_workspace). Core workspace organization, configuration, and maintenance.' merely restates the tool name and title with a generic domain label. It provides no specific verb or resource, and does not distinguish the tool from siblings like rm_workspace_setup or rm_workspace_maintain. An agent cannot tell what this tool actually does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. The description gives no context, no exclusions, and no mention of the multiple actions (setup, maintain, template, save) that the parameters imply. Usage is completely left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rm_worktree_addAddC

Add (rm_worktree). Manage git worktrees for concurrent multi-session development (CONCEPT:RM-WORKTREE).

Each session works a repo in its own worktree on its own branch under <WORKTREE_ROOT>/<repo>/<branch> (shared .git, no re-clone), leaving the canonical checkout on its default branch so a working-tree reset never disturbs in-flight session work.

NameRequiredDescriptionDefault
baseNoBase branch to fork from / sync against.main
intoNoTarget branch for 'merge', or the reset target for 'reset_branch'.main
pathNoWorkspace root override.
repoNoRepo basename (e.g. 'epistemic-graph') or absolute path. Omit for 'list'/'prune' across all repos.
adoptNoFor 'add': move the canonical checkout's uncommitted WIP onto the new branch via a private ref (never the shared refs/stash stack).
forceNoFor 'remove': override git's own dirty-tree refusal once lane occupancy has already cleared (never bypasses occupancy itself, D-CDX-15).
reposNoFor 'bulk_add': comma-separated repo basenames (default: every workspace repo).
branchNoWorktree branch name (each session uses a distinct branch).
strategyNoFor 'sync': 'rebase' or 'merge'.rebase
stale_daysNoFor 'audit': an unmerged worktree quiet for longer than this many days is classified 'stale' (review) rather than 'active'.
prune_mergedNoFor 'audit': DESTRUCTIVE. After classifying, remove every 'merged' worktree (and delete its branch) plus prune 'dangling' admin pointers. Never touches 'active'/'stale' work or orphaned directories.
delete_branchNoFor 'remove': also delete the branch.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so the safety profile is covered. The description adds genuine non-obvious context — shared .git with no re-clone, and the guarantee that the canonical checkout stays on its default branch so resets never disturb in-flight work — but says nothing about what happens if the branch or path already exists, or any prerequisite.

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?

It is short and front-loaded, but the opening sentence restates the title and the remainder describes the worktree subsystem rather than this tool's action, so a meaningful share of the text does not earn its place for this specific tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter tool whose schema mixes flags belonging to add/remove/merge/sync/audit, the description never identifies which parameters this tool actually uses, never distinguishes it from the many sibling worktree tools, and gives no failure behavior. The existing output schema absolves it of explain return values, but the selection-side gaps remain.

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% and every parameter carries its own description (including op-specific ones like 'adopt' and 'strategy'), so the schema does the heavy lifting. The description adds no parameter meaning beyond that; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Add (rm_worktree)' and then pivots to the worktree family concept ('Manage git worktrees for concurrent multi-session development'). It conveys the domain and the worktree layout (<WORKTREE_ROOT>/<repo>/<branch>) but never states what the add operation itself creates, so the agent must infer its purpose from the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no mention of alternatives, despite a dense sibling set including rm_worktree_bulk_add, rm_worktree_remove, rm_worktree_sync, rm_worktree_merge and rm_worktree_list. An agent has nothing to route on.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rm_worktree_auditAuditC
Read-onlyIdempotent

Audit (rm_worktree). Manage git worktrees for concurrent multi-session development (CONCEPT:RM-WORKTREE).

Each session works a repo in its own worktree on its own branch under <WORKTREE_ROOT>/<repo>/<branch> (shared .git, no re-clone), leaving the canonical checkout on its default branch so a working-tree reset never disturbs in-flight session work.

NameRequiredDescriptionDefault
baseNoBase branch to fork from / sync against.main
intoNoTarget branch for 'merge', or the reset target for 'reset_branch'.main
pathNoWorkspace root override.
repoNoRepo basename (e.g. 'epistemic-graph') or absolute path. Omit for 'list'/'prune' across all repos.
adoptNoFor 'add': move the canonical checkout's uncommitted WIP onto the new branch via a private ref (never the shared refs/stash stack).
forceNoFor 'remove': override git's own dirty-tree refusal once lane occupancy has already cleared (never bypasses occupancy itself, D-CDX-15).
reposNoFor 'bulk_add': comma-separated repo basenames (default: every workspace repo).
branchNoWorktree branch name (each session uses a distinct branch).
strategyNoFor 'sync': 'rebase' or 'merge'.rebase
stale_daysNoFor 'audit': an unmerged worktree quiet for longer than this many days is classified 'stale' (review) rather than 'active'.
prune_mergedNoFor 'audit': DESTRUCTIVE. After classifying, remove every 'merged' worktree (and delete its branch) plus prune 'dangling' admin pointers. Never touches 'active'/'stale' work or orphaned directories.
delete_branchNoFor 'remove': also delete the branch.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, destructiveHint=false and idempotentHint=true, but the tool exposes 'prune_merged', which the schema explicitly labels DESTRUCTIVE and which removes worktrees, deletes branches, and prunes admin pointers — directly at odds with the read-only safety profile. The description body adds useful architectural context (shared .git, no re-clone, canonical checkout left on the default branch so resets don't disturb sessions), but it never states the classification behavior of audit itself or the destructive escalation path.

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 only two sentences and reasonably sized, but it is not front-loaded on the tool's function — it opens with a tautological 'Audit (rm_worktree)' and spends its budget on generic subsystem background rather than tool-specific facts. Efficient in volume, poorly targeted in content.

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 12-parameter tool with an output schema and a destructive escalation flag, the description never explains the audit action itself (what gets classified, what the report contains, what prune_merged does) nor how it relates to rm_worktree_list/prune. Since an output schema exists, return values needn't be described, but the gap around purpose and the destructive path is significant.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 12 parameters (including per-action scoping like 'For audit:', 'For remove:', 'For bulk_add:'), which sets the baseline at 3. The description body contributes no additional parameter meaning beyond the schema, so no credit above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Audit (rm_worktree)" simply restates the name and title, and the remaining sentences describe the worktree subsystem in general (shared .git, per-session branches) rather than what the audit action actually does — e.g. that it classifies worktrees as active/stale/merged/dangling. The distinctive behavior only leaks out through the 'stale_days' and 'prune_merged' parameter text, not the description body. An agent cannot tell from this text how 'audit' differs from siblings like rm_worktree_list, rm_worktree_prune, or repository_manager_worktree_hygiene.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use, when-not-to-use, or which-sibling guidance anywhere in the description; the closest thing is the per-parameter 'For audit:' clauses buried in the schema. Given the dense family of worktree tools (add, bulk_add, list, merge, prune, remove, reset_branch, sync), the absence of routing guidance is a real gap. Usage is only implied by the parameter text.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rm_worktree_bulk_addBulk AddC

Bulk add (rm_worktree). Manage git worktrees for concurrent multi-session development (CONCEPT:RM-WORKTREE).

Each session works a repo in its own worktree on its own branch under <WORKTREE_ROOT>/<repo>/<branch> (shared .git, no re-clone), leaving the canonical checkout on its default branch so a working-tree reset never disturbs in-flight session work.

NameRequiredDescriptionDefault
baseNoBase branch to fork from / sync against.main
intoNoTarget branch for 'merge', or the reset target for 'reset_branch'.main
pathNoWorkspace root override.
repoNoRepo basename (e.g. 'epistemic-graph') or absolute path. Omit for 'list'/'prune' across all repos.
adoptNoFor 'add': move the canonical checkout's uncommitted WIP onto the new branch via a private ref (never the shared refs/stash stack).
forceNoFor 'remove': override git's own dirty-tree refusal once lane occupancy has already cleared (never bypasses occupancy itself, D-CDX-15).
reposNoFor 'bulk_add': comma-separated repo basenames (default: every workspace repo).
branchNoWorktree branch name (each session uses a distinct branch).
strategyNoFor 'sync': 'rebase' or 'merge'.rebase
stale_daysNoFor 'audit': an unmerged worktree quiet for longer than this many days is classified 'stale' (review) rather than 'active'.
prune_mergedNoFor 'audit': DESTRUCTIVE. After classifying, remove every 'merged' worktree (and delete its branch) plus prune 'dangling' admin pointers. Never touches 'active'/'stale' work or orphaned directories.
delete_branchNoFor 'remove': also delete the branch.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations provided, the description adds useful context: worktrees share the same .git directory (no re-clone) and leave the canonical checkout untouched so resets do not disturb session work. However, it does not disclose behavior specific to the bulk_add operation, such as whether it creates one worktree per repo or how it interacts with existing worktrees.

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 reasonably sized but front-loads a tautological label and then spends its second paragraph on generic worktree concept rather than the specific bulk_add operation. The concept is relevant background but could be more tightly focused.

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 an output schema and full parameter documentation, the description is incomplete for tool selection: it does not explain what bulk_add actually does, when to choose it over sibling worktree tools, or how the 'repos' parameter (default: every workspace repo) shapes the operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 12 parameters. The description adds no parameter syntax or format details beyond the general worktree model, matching the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening 'Bulk add (rm_worktree)' is largely a restatement of the tool name, and the rest explains the general worktree concept rather than what this specific tool does. It does not distinguish this tool from siblings like rm_worktree_add, rm_worktree_audit, or rm_worktree_prune, leaving the actual 'bulk add' behavior undefined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as rm_worktree_add or rm_worktree_audit. The context about concurrent multi-session development is background, not a selection rule or prerequisite.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rm_worktree_listListC
Read-onlyIdempotent

List (rm_worktree). Manage git worktrees for concurrent multi-session development (CONCEPT:RM-WORKTREE).

Each session works a repo in its own worktree on its own branch under <WORKTREE_ROOT>/<repo>/<branch> (shared .git, no re-clone), leaving the canonical checkout on its default branch so a working-tree reset never disturbs in-flight session work.

NameRequiredDescriptionDefault
baseNoBase branch to fork from / sync against.main
intoNoTarget branch for 'merge', or the reset target for 'reset_branch'.main
pathNoWorkspace root override.
repoNoRepo basename (e.g. 'epistemic-graph') or absolute path. Omit for 'list'/'prune' across all repos.
adoptNoFor 'add': move the canonical checkout's uncommitted WIP onto the new branch via a private ref (never the shared refs/stash stack).
forceNoFor 'remove': override git's own dirty-tree refusal once lane occupancy has already cleared (never bypasses occupancy itself, D-CDX-15).
reposNoFor 'bulk_add': comma-separated repo basenames (default: every workspace repo).
branchNoWorktree branch name (each session uses a distinct branch).
strategyNoFor 'sync': 'rebase' or 'merge'.rebase
stale_daysNoFor 'audit': an unmerged worktree quiet for longer than this many days is classified 'stale' (review) rather than 'active'.
prune_mergedNoFor 'audit': DESTRUCTIVE. After classifying, remove every 'merged' worktree (and delete its branch) plus prune 'dangling' admin pointers. Never touches 'active'/'stale' work or orphaned directories.
delete_branchNoFor 'remove': also delete the branch.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, and non-destructive behavior, so the bar is lower. The description adds shared .git and canonical-checkout context, but does not disclose list-specific behavior such as filters, scope, or what the listing is based on, although an output schema exists.

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 definition is compact and front-loads 'List', then gives one concept paragraph. The content is relevant worktree context, though not specific to the list operation, and there is no obvious bloat.

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 and rich annotations, return values and safety profile need not be repeated. However, for a 12-parameter worktree tool surrounded by many siblings, the lack of usage guidance and operation-specific scope leaves it only adequately 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 description coverage is 100%; all 12 parameters are documented in the schema, including defaults and per-action notes. The description adds no parameter semantics beyond the schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first token 'List' gives a verb, and the parenthetical ties it to rm_worktree, but the description never states what is listed or how the result differs from siblings like rm_worktree_audit, rm_worktree_prune, or rm_worktree_remove. The following paragraph describes worktree architecture rather than this tool's specific operation.

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 when-to-use, prerequisites, or alternatives are given. With many sibling worktree tools such as add, audit, prune, remove, and sync, the agent gets no routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rm_worktree_mergeMergeC

Merge (rm_worktree). Manage git worktrees for concurrent multi-session development (CONCEPT:RM-WORKTREE).

Each session works a repo in its own worktree on its own branch under <WORKTREE_ROOT>/<repo>/<branch> (shared .git, no re-clone), leaving the canonical checkout on its default branch so a working-tree reset never disturbs in-flight session work.

NameRequiredDescriptionDefault
baseNoBase branch to fork from / sync against.main
intoNoTarget branch for 'merge', or the reset target for 'reset_branch'.main
pathNoWorkspace root override.
repoNoRepo basename (e.g. 'epistemic-graph') or absolute path. Omit for 'list'/'prune' across all repos.
adoptNoFor 'add': move the canonical checkout's uncommitted WIP onto the new branch via a private ref (never the shared refs/stash stack).
forceNoFor 'remove': override git's own dirty-tree refusal once lane occupancy has already cleared (never bypasses occupancy itself, D-CDX-15).
reposNoFor 'bulk_add': comma-separated repo basenames (default: every workspace repo).
branchNoWorktree branch name (each session uses a distinct branch).
strategyNoFor 'sync': 'rebase' or 'merge'.rebase
stale_daysNoFor 'audit': an unmerged worktree quiet for longer than this many days is classified 'stale' (review) rather than 'active'.
prune_mergedNoFor 'audit': DESTRUCTIVE. After classifying, remove every 'merged' worktree (and delete its branch) plus prune 'dangling' admin pointers. Never touches 'active'/'stale' work or orphaned directories.
delete_branchNoFor 'remove': also delete the branch.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=false, so the safety profile is largely covered by structured data. The description adds the worktree model (shared .git, no re-clone, canonical checkout stays on the default branch), which is useful environmental context. However, it says nothing about merge-specific behavior such as conflict handling or what state the branch is left in after the merge.

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 opening line duplicates the name and title, and the bulk of the text is a general worktree concept primer that is tangential to the merge operation. It is reasonably front-loaded and not bloated, but a significant share of the text is not earning its place relative to the tool's actual job.

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?

This is a 12-parameter tool whose schema references many distinct operations (add, remove, audit, sync, list, bulk_add, merge) with no action discriminator, yet the description never clarifies which operation this tool performs or how its parameters map to it. An output schema exists, so return values need not be explained, but the invocation-side completeness for such a complex surface is inadequate.

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 each of the 12 parameters (base, into, strategy, etc.) is already documented in the schema, including the operation-specific notes like "strategy: 'rebase' or 'merge'". The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens by restating the name/title ('Merge (rm_worktree)') and then spends its whole length explaining the general worktree concept rather than what the merge operation itself does (merge which branch into what, and when the operation is warranted). An agent cannot tell from this text how rm_worktree_merge differs from rm_worktree_sync, rm_worktree_reset_branch, or the rm_merge_queue_* siblings. It is background orientation, not a 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 Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance, and no named alternative among the many overlapping siblings (sync, reset_branch, merge queue). The description never indicates the conditions under which a merge is the right call versus a rebase/sync or a queued merge. No explicit context is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rm_worktree_prunePruneC

Prune (rm_worktree). Manage git worktrees for concurrent multi-session development (CONCEPT:RM-WORKTREE).

Each session works a repo in its own worktree on its own branch under <WORKTREE_ROOT>/<repo>/<branch> (shared .git, no re-clone), leaving the canonical checkout on its default branch so a working-tree reset never disturbs in-flight session work.

NameRequiredDescriptionDefault
baseNoBase branch to fork from / sync against.main
intoNoTarget branch for 'merge', or the reset target for 'reset_branch'.main
pathNoWorkspace root override.
repoNoRepo basename (e.g. 'epistemic-graph') or absolute path. Omit for 'list'/'prune' across all repos.
adoptNoFor 'add': move the canonical checkout's uncommitted WIP onto the new branch via a private ref (never the shared refs/stash stack).
forceNoFor 'remove': override git's own dirty-tree refusal once lane occupancy has already cleared (never bypasses occupancy itself, D-CDX-15).
reposNoFor 'bulk_add': comma-separated repo basenames (default: every workspace repo).
branchNoWorktree branch name (each session uses a distinct branch).
strategyNoFor 'sync': 'rebase' or 'merge'.rebase
stale_daysNoFor 'audit': an unmerged worktree quiet for longer than this many days is classified 'stale' (review) rather than 'active'.
prune_mergedNoFor 'audit': DESTRUCTIVE. After classifying, remove every 'merged' worktree (and delete its branch) plus prune 'dangling' admin pointers. Never touches 'active'/'stale' work or orphaned directories.
delete_branchNoFor 'remove': also delete the branch.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only tell the agent this is a non-readOnly, non-idempotent mutation; the description adds no behavioral context whatsoever — it never says what gets pruned, that branches may be deleted, or that pruning is irreversible. The closing claim about resets not disturbing in-flight work is a generic subsystem property, not a disclosure about this tool's effects. It does not, however, contradict 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is reasonably short and front-loaded, but the entire body is concept boilerplate that is not specific to pruning, so most of it does not earn its place for the purpose of invoking this tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter mutation tool with no required parameters, mode-dependent behavior, and a destructive prune_merged option, the description omits the operation semantics entirely. The presence of an output schema excuses explaining return values, but not the missing account of what prune does and when.

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% and all 12 parameters (including mode-specific ones like prune_merged, stale_days, force, adopt) are documented in the schema itself, so the baseline of 3 applies. The description contributes nothing beyond the schema — it does not clarify which parameter set corresponds to a prune invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Prune (rm_worktree)" merely restates the tool name and title, and the remaining sentences describe the worktree subsystem in general (shared .git, branch layout, canonical checkout) rather than what this tool actually does. Nothing distinguishes it from siblings like rm_worktree_audit, rm_worktree_remove, or repository_manager_worktree_hygiene, and the fact that prune deletes merged worktrees and admin pointers (per the schema's prune_merged param) is never stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no named alternatives despite a dense family of worktree tools (rm_worktree_audit, rm_worktree_remove, rm_worktree_hygiene, rm_worktree_list). The generic architecture blurb implies a worktree context but never tells the agent when prune is the right call versus those siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rm_worktree_removeRemoveC
DestructiveIdempotent

Remove (rm_worktree). Manage git worktrees for concurrent multi-session development (CONCEPT:RM-WORKTREE).

Each session works a repo in its own worktree on its own branch under <WORKTREE_ROOT>/<repo>/<branch> (shared .git, no re-clone), leaving the canonical checkout on its default branch so a working-tree reset never disturbs in-flight session work.

NameRequiredDescriptionDefault
baseNoBase branch to fork from / sync against.main
intoNoTarget branch for 'merge', or the reset target for 'reset_branch'.main
pathNoWorkspace root override.
repoNoRepo basename (e.g. 'epistemic-graph') or absolute path. Omit for 'list'/'prune' across all repos.
adoptNoFor 'add': move the canonical checkout's uncommitted WIP onto the new branch via a private ref (never the shared refs/stash stack).
forceNoFor 'remove': override git's own dirty-tree refusal once lane occupancy has already cleared (never bypasses occupancy itself, D-CDX-15).
reposNoFor 'bulk_add': comma-separated repo basenames (default: every workspace repo).
branchNoWorktree branch name (each session uses a distinct branch).
strategyNoFor 'sync': 'rebase' or 'merge'.rebase
stale_daysNoFor 'audit': an unmerged worktree quiet for longer than this many days is classified 'stale' (review) rather than 'active'.
prune_mergedNoFor 'audit': DESTRUCTIVE. After classifying, remove every 'merged' worktree (and delete its branch) plus prune 'dangling' admin pointers. Never touches 'active'/'stale' work or orphaned directories.
delete_branchNoFor 'remove': also delete the branch.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, openWorldHint=false, so the safety profile is covered. The description adds only a generic worktree layout explanation and discloses nothing removal-specific: that the branch survives unless delete_branch is set, that a dirty tree is refused unless force is passed, or that removal interacts with lane occupancy. For a destructive operation this is thin added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The front-loaded sentence is just a name restatement, and the bulk of the text is a multi-line conceptual digression about worktree architecture that does not help an agent call this specific tool. Substantial word count with little tool-specific payoff.

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?

An output schema exists and the schema documents all 12 parameters, so those burdens are lifted, but the description never completes the picture for a destructive removal: no success/failure conditions, no note that the canonical checkout is untouched, and no differentiation from the prune/audit siblings that can also delete merged worktrees. Given a 12-parameter destructive tool, the generic concept text leaves meaningful 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 description coverage is 100%, so baseline is 3. The parameter descriptions themselves carry the real semantics (force's occupancy caveat, delete_branch, repo/branch targeting), and the tool description contributes no additional parameter meaning. Baseline is correct here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The lead 'Remove (rm_worktree)' restates the tool name and verb rather than describing the specific action, then pivots into a generic description of the worktree system as a whole. It never says what is actually removed (a worktree directory, optionally its branch) nor how it differs from rm_worktree_prune or rm_worktree_audit. The verb is present but the resource and scope are left to the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to call remove versus rm_worktree_prune, rm_worktree_audit (with prune_merged), or rm_worktree_list, despite those siblings covering closely overlapping work. No prerequisites (e.g. that the lane must be idle) or exclusions are stated. The description reads like a shared concept blurb rather than routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rm_worktree_reset_branchReset BranchC
DestructiveIdempotent

Reset branch (rm_worktree). Manage git worktrees for concurrent multi-session development (CONCEPT:RM-WORKTREE).

Each session works a repo in its own worktree on its own branch under <WORKTREE_ROOT>/<repo>/<branch> (shared .git, no re-clone), leaving the canonical checkout on its default branch so a working-tree reset never disturbs in-flight session work.

NameRequiredDescriptionDefault
baseNoBase branch to fork from / sync against.main
intoNoTarget branch for 'merge', or the reset target for 'reset_branch'.main
pathNoWorkspace root override.
repoNoRepo basename (e.g. 'epistemic-graph') or absolute path. Omit for 'list'/'prune' across all repos.
adoptNoFor 'add': move the canonical checkout's uncommitted WIP onto the new branch via a private ref (never the shared refs/stash stack).
forceNoFor 'remove': override git's own dirty-tree refusal once lane occupancy has already cleared (never bypasses occupancy itself, D-CDX-15).
reposNoFor 'bulk_add': comma-separated repo basenames (default: every workspace repo).
branchNoWorktree branch name (each session uses a distinct branch).
strategyNoFor 'sync': 'rebase' or 'merge'.rebase
stale_daysNoFor 'audit': an unmerged worktree quiet for longer than this many days is classified 'stale' (review) rather than 'active'.
prune_mergedNoFor 'audit': DESTRUCTIVE. After classifying, remove every 'merged' worktree (and delete its branch) plus prune 'dangling' admin pointers. Never touches 'active'/'stale' work or orphaned directories.
delete_branchNoFor 'remove': also delete the branch.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false. The description adds some contextual safety information ('reset never disturbs in-flight session work') and describes the shared .git / no-re-clone model, but it does not clarify what the reset operation destroys, resets, or requires.

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 relatively short, but it is front-loaded with a title restatement followed by a generic worktree-management concept. The operational meaning of 'reset branch' is not front-loaded, and the text spends most of its space on context that applies broadly to sibling worktree tools.

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 12 parameters, many worktree siblings, and a destructive reset operation, the description omits crucial selection context: how this tool relates to rm_worktree_sync, rm_worktree_merge, rm_worktree_remove, and rm_worktree_prune. The output schema and annotations cover some structured details, but the natural-language definition is not complete enough to help an agent choose this tool confidently.

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 fully documents all 12 parameters and their mode-specific meanings. The description adds no parameter-level semantics beyond what the schema already provides, 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.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a verb and resource ('Reset branch'), but it does not explain what resetting the branch actually does, nor does it distinguish this operation from the many sibling worktree tools such as rm_worktree_sync, rm_worktree_merge, or rm_worktree_remove. The rest of the text is broad worktree-concept context rather than a tool-specific purpose statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives. The description explains the general worktree model, but does not say when a reset is appropriate, what preconditions exist, or how it differs from sync, merge, or remove.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rm_worktree_syncSyncC

Sync (rm_worktree). Manage git worktrees for concurrent multi-session development (CONCEPT:RM-WORKTREE).

Each session works a repo in its own worktree on its own branch under <WORKTREE_ROOT>/<repo>/<branch> (shared .git, no re-clone), leaving the canonical checkout on its default branch so a working-tree reset never disturbs in-flight session work.

NameRequiredDescriptionDefault
baseNoBase branch to fork from / sync against.main
intoNoTarget branch for 'merge', or the reset target for 'reset_branch'.main
pathNoWorkspace root override.
repoNoRepo basename (e.g. 'epistemic-graph') or absolute path. Omit for 'list'/'prune' across all repos.
adoptNoFor 'add': move the canonical checkout's uncommitted WIP onto the new branch via a private ref (never the shared refs/stash stack).
forceNoFor 'remove': override git's own dirty-tree refusal once lane occupancy has already cleared (never bypasses occupancy itself, D-CDX-15).
reposNoFor 'bulk_add': comma-separated repo basenames (default: every workspace repo).
branchNoWorktree branch name (each session uses a distinct branch).
strategyNoFor 'sync': 'rebase' or 'merge'.rebase
stale_daysNoFor 'audit': an unmerged worktree quiet for longer than this many days is classified 'stale' (review) rather than 'active'.
prune_mergedNoFor 'audit': DESTRUCTIVE. After classifying, remove every 'merged' worktree (and delete its branch) plus prune 'dangling' admin pointers. Never touches 'active'/'stale' work or orphaned directories.
delete_branchNoFor 'remove': also delete the branch.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=false, so the safety profile is partly covered. The description adds architectural context (shared .git, no re-clone, canonical checkout stays on the default branch so resets don't disturb sessions) but says nothing about what 'sync' changes on the branch, conflict/failure behavior, or the destructive prune_merged path noted in the schema. Adequate context, clear tool-specific gaps.

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?

Two sentences, appropriately sized, but the lead 'Sync (rm_worktree).' is a restatement of the name/title and the following sentence spends its budget on worktree architecture rather than the tool's job. Structure is fine; front-loading is wasted on a non-informative opener.

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 12-parameter tool with an output schema and annotations, the description is missing the essentials: what the sync operation does, which sibling tool to use instead for add/remove/list/merge/audit, and how the operation-keyed parameters ('For add', 'For sync', 'For audit') are selected when no operation parameter exists. An agent cannot confidently call this correctly from the description alone.

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% across all 12 parameters, so the schema already carries the semantics and the baseline is 3. The description contributes no parameter-level information (no mention of base/into/strategy/adopt/force or the operation keywords those parameters key off), so it neither compensates nor detracts.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description's operative statement is 'Manage git worktrees for concurrent multi-session development', a broad category verb that never says what this tool (named 'sync') actually performs. It identifies the domain and the CONCEPT:RM-WORKTREE tag but does not distinguish rm_worktree_sync from the ~9 overlapping siblings (rm_worktree_add, rm_worktree_merge, rm_worktree_audit, rm_worktree_prune, etc.). The only specific content is about the worktree layout, not the tool's action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool, when not to, or which sibling to prefer for a given worktree operation. The per-operation hints ('For add:', 'For remove:', 'For audit:') live in the schema property descriptions, not the tool description, and no operation selector is even exposed in the schema, so an agent gets no routing help from the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 122 tool updatesv3.5.1
    • First observedrepository_ingest_repositories
    • First observedrepository_manager_add_project
    • First observedrepository_manager_add_projects
    • First observedrepository_manager_build_projects
    • First observedrepository_manager_bulk_bump
    • First observedrepository_manager_bump_version
    • First observedrepository_manager_cleanup_artifacts
    • First observedrepository_manager_clone_projects
    • First observedrepository_manager_clone_repository
    • First observedrepository_manager_commit_code_project
    • First observedrepository_manager_commit_code_projects
    • First observedrepository_manager_commit_project
    • First observedrepository_manager_commit_projects
    • First observedrepository_manager_create_project
    • First observedrepository_manager_discover_projects
    • First observedrepository_manager_generate_markdown_summary
    • First observedrepository_manager_generate_workspace_template
    • First observedrepository_manager_get_consolidated_skill_paths
    • First observedrepository_manager_get_project_map
    • First observedrepository_manager_get_readme
    • First observedrepository_manager_get_workspace_projects
    • First observedrepository_manager_git_action
    • First observedrepository_manager_install_project
    • First observedrepository_manager_install_projects
    • First observedrepository_manager_list_branches
    • First observedrepository_manager_load_projects_from_yaml
    • First observedrepository_manager_maintain_projects
    • First observedrepository_manager_phased_bumpversion
    • First observedrepository_manager_phased_push
    • First observedrepository_manager_pre_commit
    • First observedrepository_manager_pre_commit_projects
    • First observedrepository_manager_pull_project
    • First observedrepository_manager_pull_projects
    • First observedrepository_manager_push_project
    • First observedrepository_manager_push_projects
    • First observedrepository_manager_save_workspace_config
    • First observedrepository_manager_set_threads
    • First observedrepository_manager_setup_from_yaml
    • First observedrepository_manager_test_projects
    • First observedrepository_manager_update_dependency
    • First observedrepository_manager_validate_and_release
    • First observedrepository_manager_validate_single_project
    • First observedrepository_manager_worktree_hygiene
    • First observedrm_build_artifacts
    • First observedrm_build_explain
    • First observedrm_build_gc
    • First observedrm_build_request
    • First observedrm_build_status
    • First observedrm_concepts_get
    • First observedrm_concepts_list
    • First observedrm_concepts_materialize
    • First observedrm_concepts_reconcile
    • First observedrm_concepts_release
    • First observedrm_concepts_reserve
    • First observedrm_concepts_verify_candidate
    • First observedrm_concepts_verify_generation
    • First observedrm_docs_readiness_apply
    • First observedrm_docs_readiness_preview
    • First observedrm_docs_readiness_verify
    • First observedrm_gates_audit_fail_fast
    • First observedrm_gates_explain
    • First observedrm_gates_phase_direction
    • First observedrm_gates_phase_direction_here
    • First observedrm_gates_profile
    • First observedrm_gates_repos
    • First observedrm_gates_retest
    • First observedrm_gates_run
    • First observedrm_gates_status
    • First observedrm_gates_xdist_apply
    • First observedrm_gates_xdist_plan
    • First observedrm_git_add
    • First observedrm_git_cancel
    • First observedrm_git_clone
    • First observedrm_git_commit
    • First observedrm_git_commit_code
    • First observedrm_git_enumerate
    • First observedrm_git_phased_push
    • First observedrm_git_pre_commit
    • First observedrm_git_pull
    • First observedrm_git_push
    • First observedrm_git_raw
    • First observedrm_git_status
    • First observedrm_lane_doctor
    • First observedrm_lane_env
    • First observedrm_lane_finish
    • First observedrm_lane_heal
    • First observedrm_lane_start
    • First observedrm_merge_queue_config
    • First observedrm_merge_queue_enqueue
    • First observedrm_merge_queue_run
    • First observedrm_merge_queue_status
    • First observedrm_merge_queue_withdraw
    • First observedrm_projects_build
    • First observedrm_projects_install
    • First observedrm_projects_validate
    • First observedrm_projects_validate_status
    • First observedrm_remote_workers_dispatch_build
    • First observedrm_remote_workers_host_loss_reconcile
    • First observedrm_remote_workers_profile
    • First observedrm_remote_workers_receive_artifact
    • First observedrm_remote_workers_recheck
    • First observedrm_remote_workers_register_worker
    • First observedrm_remote_workers_seed_from_inventory
    • First observedrm_remote_workers_stage_source
    • First observedrm_remote_workers_verify_source
    • First observedrm_workspace_fleet_evidence_check
    • First observedrm_workspace_list
    • First observedrm_workspace_list_branches
    • First observedrm_workspace_maintain
    • First observedrm_workspace_maintain_status
    • First observedrm_workspace_save
    • First observedrm_workspace_setup
    • First observedrm_workspace_template
    • First observedrm_worktree_add
    • First observedrm_worktree_audit
    • First observedrm_worktree_bulk_add
    • First observedrm_worktree_list
    • First observedrm_worktree_merge
    • First observedrm_worktree_prune
    • First observedrm_worktree_remove
    • First observedrm_worktree_reset_branch
    • First observedrm_worktree_sync

TDQS

C2.2/5.0

Scored across 122 tools

Disambiguation1/5

There are two parallel tool families covering the same operations (e.g. repository_manager_clone_projects vs rm_git_clone, repository_manager_commit_project vs rm_git_commit, repository_manager_pull_projects vs rm_git_pull), so an agent cannot tell which to pick. Worse, whole groups share byte-identical descriptions: all ~11 rm_gates_* tools (run, status, explain, profile, audit_fail_fast, xdist_plan, phase_direction...) carry the same text, as do repository_manager_maintain_projects and repository_manager_phased_bumpversion. Several tools (rm_git_raw, rm_git_action, process-style wrappers) have indistinguishable boundaries.

Naming Consistency2/5

Two competing conventions coexist: a verbose 'repository_manager_verb_noun' style and a short 'rm_<module>_<action>' style, applied inconsistently to the same underlying capabilities. The rm_* family splits into ~20 sub-namespaces (rm_gates, rm_git, rm_worktree, rm_merge_queue, rm_build, rm_concepts, rm_remote_workers), each mostly verb_noun internally, but the duplication of verbs across namespaces undermines predictability.

Tool Count1/5

122 tools is an extreme mismatch for a repository management server; the guidance target is roughly 3-15. A large fraction are redundant wrappers of the same git/workspace actions exposed under two naming families, plus many near-duplicate gate/concept/remote-worker variants, inflating the surface far beyond what the domain needs.

Completeness3/5

The domain is broadly covered — clone/pull/push/commit/branch, version bumping, gates, builds, worktrees, merge queue, workspace config, and even concept reservation and remote workers. However several tools are documented as non-functional stubs (rm_remote_workers_host_loss_reconcile 'always refuses today', concept mutations refuse when authority is absent), and the redundancy makes it hard to identify the canonical path for any lifecycle step.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A production-oriented MCP server for coding agents that enables multi-project management through secure file operations, Git integration, and safe command execution. It supports project discovery across multiple root directories and provides robust audit logging with both STDIO and HTTP transport options.
    8 npm
    2
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    A production-ready MCP server for GitHub operations, providing tools for repository management, issues, pull requests, and more via both MCP stdio and REST API.
    27
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A secure, git-aware MCP server for working with local repositories, enabling file management, shell commands, and full git operations within allowed directories.
    158 npm
    1
    GPL 3.0