Skip to main content
Glama

Server Details

Autonomous dev team steered from chat: plain-English requests in, tested merged PRs out.

Ownership verified
Status
Healthy
Uptime
99.7% over 62 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
jamie7893/keelen-mcp
GitHub Stars
0
Server Listing
keelen-mcp

TDQS

A3.8/5.0

Scored across 42 tools

Disambiguation4/5

Most tools have sharply distinct resource+action purposes, and descriptions go out of their way to state boundaries (e.g. create_project vs import_project, archive_project vs delete_project, retry_blocked_task vs resolve_escalation vs rearm_roadmap_item). The main risk is the recovery/escalation family and the three run_*_review / two get_*_findings tools, where an agent must read closely to pick the right variant; still, each is genuinely differentiated.

Naming Consistency4/5

Overwhelmingly a consistent verb_noun snake_case pattern (list_*, get_*, set_*, create_*, run_*, resolve_*), which makes intent legible. A few deviations exist: bare 'signup', and noun-form reads like 'project_status' and 'project_digest' that break the verb_noun convention used by the sibling read tools.

Tool Count3/5

At 42 tools the surface is heavy and sits above the comfortable range, but the domain is genuinely broad (onboarding, billing, GitHub, project/roadmap/task lifecycle, three separate review types, Roblox, UI-review config), so most tools map to a distinct capability. Some consolidation is plausible (e.g. the parallel goal/vision pair, three run_*_review tools), keeping it borderline-heavy rather than well-scoped.

Completeness4/5

Coverage of the stated domain is strong: full project lifecycle (create/import/archive/delete), roadmap management (list/reorder/cancel/rearm/pin), task remediation (close/replan/retry), escalation handling, onboarding, billing, and reviews all have endpoints. Minor gaps remain, such as no dedicated task-listing/update tool beyond status counts, but nothing that would reliably dead-end an agent.

Available Tools

44 tools
answer_requestAnswer Request QuestionsA
Destructive
Inspect

Answer a thread's clarifying questions (status must be awaiting_answers).

`answers` is a list of {"idx": <int from get_request_status>, "answer_md":
<str, 1..2000 chars>}. Every question needs exactly one answer. The call
flips the thread back to intake_pending; get_request_status reports the
subsequent state.
ParametersJSON Schema
NameRequiredDescriptionDefault
answersYes
thread_idYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds meaningful state-machine behavior: the call flips the thread back to intake_pending and enforces exactly one answer per question. It doesn't contradict any 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?

Three tight sentences that front-load the action and precondition before the payload rules. Every sentence earns its place, though the answers formatting sentence is dense.

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 needn't be explained, and the description still covers the state transition and the answers payload shape. It omits any note on the identifier parameters and error handling for a wrong precondition status, so it is not fully exhaustive.

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

Parameters4/5

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

Schema coverage is 0%, so the description must carry parameter meaning. It does document the complex parameter well — answers is a list of {idx from get_request_status, answer_md 1..2000 chars} with an exactly-one-answer-per-question rule. project_id and thread_id are left undocumented, keeping it short of a 5.

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?

Names a specific verb (answer), resource (a thread's clarifying questions), and adds a hard precondition (status must be awaiting_answers). This clearly separates it from siblings like get_request_status (read state) and submit_request (create thread).

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?

States the precondition for calling (thread must be in awaiting_answers) and points to get_request_status as the way to observe state and obtain question indices. It lacks explicit when-not-to-use guidance (e.g. what to do if the status isn't awaiting_answers), so it's clear context without full routing rules.

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

archive_projectArchive ProjectA
Destructive
Inspect

Archive a project (reversible shelve) — frees a project slot in-tool.

Stops any in-flight machine, then flips the project to `archived`: it drops
out of the per-tier project cap (freeing a slot for a new project) and the
loop stops dispatching it, but the project + its history are kept and can be
restored from the dashboard project page. Stopping a machine DESTROYS the
running process state — restoring the project later cannot bring that
execution back, so this is destructive despite being reversible. A replay on
an already-archived project changes no row, but is not idempotent end to end.
This is preferable to `delete_project` unless the project must be gone.
Owner-scoped (an MCP key is owner-only); a project not in the workspace 404s.
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations declare destructiveHint=true and idempotentHint=false, but the description goes well beyond them: it explains that stopping a machine DESTROYS running process state, that a replay no-ops on rows yet is 'not idempotent end to end', and that restoration keeps project + history. This is exactly the beyond-annotation context that prevents misuse.

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?

Front-loads the core action and the reversibility caveat before the operational consequences. Every sentence (slot freeing, process destruction, replay semantics, ownership) carries distinct load with no filler.

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

Completeness5/5

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

For a destructive mutation with an output schema (so return values needn't be explained), the description covers what is destroyed, what is retained, restoration path, idempotency, and error behavior. Nothing an agent needs to call this safely 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 coverage is 0%, so the description carries the burden; it adds that the key is owner-scoped and that a project not in the workspace returns 404. It does not describe the project_id's format or how to obtain it, leaving a small gap for a single required identifier.

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 ('Archive a project') and immediately frames it as a reversible shelve, distinguishing it from permanent removal. It explicitly names the sibling it is not (delete_project), so an agent can route correctly without opening either 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?

Gives an explicit when-to-use rule ('preferable to delete_project unless the project must be gone') plus the conditions under which the operation applies (owner-scoped, 404 for out-of-workspace projects). The alternative sibling is named with the condition that selects it.

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

cancel_roadmap_itemCancel Roadmap ItemAInspect

Cancel / close a single roadmap item (list_roadmap returns its id).

For a DELIVERED or duplicate item that keeps re-parking: once the work has
shipped, every expand produces no dev-ready tasks and files a recurring
`roadmap_item_parked` escalation that has to be acked. Cancelling drops the
item out of the expand queue AND resolves any open expand-lane escalation for
it. Business-level replay guard: an already expanded/cancelled item changes no
state, and the dashboard can restore a cancelled item. Refuses (409) while the
item is actively being expanded (a retry once that iteration ends succeeds).
Returns {id, status, changed, next_step}.
ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Adds substantial behavior beyond the annotations: removal from the expand queue, resolution of open expand-lane escalations, a 409 refusal while expansion is in flight with retry guidance, and a business-level replay guard. There is a mild tension between the stated 'changes no state' replay guard and idempotentHint=false, but the mid-expansion refusal and restore path keep the safety profile consistent with destructiveHint=false.

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?

Purpose and the escalation rationale are front-loaded, and each sentence carries behavioral content. It is dense and slightly long for a two-parameter tool, but little of it is filler.

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

Completeness5/5

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

With an output schema present, the return-value note is redundant but harmless. Combined with the rich usage and failure behavior, everything an agent needs to call it correctly is covered.

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 burden. It usefully explains that list_roadmap supplies item_id, but project_id is never explained or scoped, so it only partially compensates for the coverage gap.

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

Purpose5/5

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

States a specific verb and resource ('Cancel / close a single roadmap item') and disambiguates from siblings like list_roadmap by naming it as the id source. An agent can distinguish it from rearm_roadmap_item and archive_project without opening any schema.

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 a concrete when-to-use: delivered or duplicate items that keep re-parking and generating recurring roadmap_item_parked escalations. It also notes the restore path via the dashboard, but does not explicitly name sibling alternatives (e.g., rearm_roadmap_item) as the not-to-use case.

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

clear_horizon_pinClear Horizon PinAInspect

Clear a queued roadmap item's horizon pin (now/next/later → none).

A horizon pin dominates the queue sort, so `reorder_roadmap` cannot move a
pinned item out of its band — a stale `now` pin on a delivered/duplicate item
clogs the front of the queue. This unpins it and reprices the queue so the
item follows plain priority order again (and reorder_roadmap can then move it).
Only queued items carry a settable pin (in-flight / shipped items derive
theirs), so this refuses (422) on a non-queued item — a delivered item is
closed with cancel_roadmap_item. Returns {id, previous_pin, horizon_pin,
next_step}.
ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond annotations (readOnlyHint=false, destructiveHint=false): discloses the 422 refusal on non-queued items, that in-flight/shipped items derive their pins, the side effect of repricing the queue, and the exact return fields {id, previous_pin, horizon_pin, next_step}. This is unusually rich behavioral disclosure.

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 sentences, front-loaded with the core action and effect, followed by rationale and edge cases. Nothing is wasted, though the single long parenthetical covering reorder behavior could be slightly tightened.

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

Completeness5/5

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

Given annotations that already cover the safety profile and an output schema that documents return values, the description still supplies essential missing context: preconditions, refusal code, and the relationship to reorder_roadmap and cancel_roadmap_item. Nothing material is omitted for correct invocation.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate. The two parameters (project_id, item_id) are referenced implicitly by 'item' and 'queued items', and the return shape clarifies what item_id identifies. However, explicit parameter names and meanings are never given, leaving a small gap for an agent that needs to know which identifier is which.

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?

Opening sentence gives a precise verb (clear), resource (queued roadmap item's horizon pin), and effect (now/next/later → none). The tool is clearly distinguishable from siblings like reorder_roadmap and cancel_roadmap_item, which are named explicitly in context.

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

Usage Guidelines5/5

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

Explicitly states when to use this vs alternatives: explains that reorder_roadmap cannot move a pinned item, so unpin first, and that a delivered item should be closed with cancel_roadmap_item instead. The preconditions (only queued items) and the refusal condition (422 on non-queued) are spelled out.

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

close_taskClose TaskA
Destructive
Inspect

Close a task that should not be built — a duplicate, or work already shipped.

For a task on the board that is obsolete: the change already landed in
another PR, a sibling task covers it, or the user changed direction. The
task is marked `cancelled` and keeps ALL of its history (acceptance
criteria, QA steps, iterations) — nothing is deleted.

`reason` is REQUIRED and is recorded on the audit trail in one line.
`superseded_by_pr_number` (or `superseded_by_task_id`) records verified
provenance when the work was genuinely delivered somewhere else, instead of
a bare abandon. Closing does NOT claim the content is on the default branch,
so any task that declared a dependency on this one keeps waiting; those are
delivered or re-planned separately.

Refuses with 409 while the task is being worked on by a running iteration
(an in-flight iteration must finish, or its machine must be stopped, before
the close succeeds). A task in another
workspace 404s. Business-level replay guard: closing an already-closed task
changes no task state. The call is not idempotent end to end — an
authenticated request also persists credential-use state.

The response echoes `open_tasks`: how many tasks are still open on the
project, counted after the close commits. A count that did not drop means
the ticket was already closed and this call changed nothing. It is the same
count `project_status` returns, and neither counts a closed task as open.

This is preferable to leaving a dead task on the board: unfinished tasks
count against the project's planning capacity, so stale duplicates quietly
stop new roadmap items from being expanded.
ParametersJSON Schema
NameRequiredDescriptionDefault
reasonYes
task_idYes
project_idYes
superseded_by_task_idNo
superseded_by_pr_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, but the description goes well beyond them: it clarifies the soft-close semantics (marked cancelled, ALL history retained, nothing deleted), the audit-trail recording of `reason`, the 409 in-flight-iteration refusal, the cross-workspace 404, the replay guard, and the subtle end-to-end non-idempotency from persisted credential-use state. That is exactly the extra context annotations cannot carry.

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?

Purpose and the required-parameter constraint are front-loaded, and the paragraphs are information-dense rather than repetitive. It is on the long side, and the closing motivational paragraph about planning capacity could be trimmed, but nearly every sentence carries operational meaning.

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

Completeness5/5

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

An output schema exists and the description correctly leverages it by explaining the meaningful return signal (`open_tasks`, how to read an unchanged count, and its equivalence to project_status). Combined with error paths, idempotency nuances, and provenance semantics, an agent has everything needed to call this correctly.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does for the non-obvious parameters: `reason` is stated as REQUIRED and audit-trail-recorded, and `superseded_by_pr_number`/`superseded_by_task_id` are explained as verified provenance instead of a bare abandon. `project_id` and `task_id` are left unexplained, but they are self-evident identifiers.

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 opening sentence names a specific verb and resource plus the exact subclass of tasks it applies to ('a task that should not be built — a duplicate, or work already shipped'). This clearly separates it from siblings like replan_task, retry_blocked_task, and cancel_roadmap_item, which address different lifecycle states.

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 gives explicit when-to-use ('obsolete: the change already landed in another PR, a sibling task covers it, or the user changed direction'), a when-not (a task under a running iteration refuses with 409, and cross-workspace tasks 404), and the alternative path ('those are delivered or re-planned separately'). The final paragraph adds the positive reason to prefer closing over leaving a dead task.

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

connect_githubConnect GitHub AccountAInspect

Get the link that connects a GitHub account, so work can reach real repos.

Returns an `install_url` that the user opens in a browser to pick the GitHub
account/org, approve the install, and land on a "connected" page;
get_onboarding_status() then reports github_connected true. The link expires
in 10 minutes; a repeat call mints a fresh one.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), and the description adds meaningful context beyond them: the 10-minute expiry of the link and that a repeat call mints a fresh one. This is exactly the sort of state information an agent needs when retrying.

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 short sentences, front-loaded with the purpose, then behavior, then verification path. The phrase 'so work can reach real repos' is slightly decorative but supports intent; nothing else is wasted.

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

Completeness5/5

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

Despite having an output schema, the description explains the key return value (install_url) and its lifecycle, plus the follow-up verification tool. Nothing an agent needs to invoke this correctly 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?

The tool takes zero parameters, so the baseline of 4 applies; there is nothing for the description to disambiguate beyond the empty schema.

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

Purpose5/5

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

States a specific verb and resource ('Get the link that connects a GitHub account') and names the artifact returned (install_url). It is clearly distinguishable from siblings like list_github_repos and get_onboarding_status.

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

Usage Guidelines4/5

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

The description explains the flow: user opens install_url, approves, lands on a connected page, after which get_onboarding_status() reports github_connected true. That clearly frames when to call it, though it doesn't state explicit exclusions or when not to call it.

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

control_schedulerControl Project SchedulerA
Destructive
Inspect

Start, pause, or resume a project's autonomous work.

`action` is one of: "enable" | "disable" | "resume" | "process_now".
- enable/disable flip scheduler_enabled (the loop dispatches only enabled,
  status='active' projects).
- resume clears a pause (peak/backoff/manual) so the project dispatches again.
- process_now durably prioritizes and immediately attempts the next intake
  batch, independent of the dev scheduler switch. A gate returns a typed
  reason and recovery step instead of a spawn promise.
- enable/resume can execute pending refinement that DELETES tasks, and
  process_now can start an intake batch, so the tool is destructive even
  when the echoed scheduler state looks unchanged.

Returns the resulting scheduler state.
ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true, non-idempotent and openWorld, but the description goes further by warning that enable/resume can execute refinement that DELETES tasks and that process_now starts an intake batch, and that the operation is destructive even when the echoed scheduler state looks unchanged. This is exactly the non-obvious behavioral context annotations cannot express.

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 lead sentence states the purpose up front and the bulleted action list is well-structured and scannable. Slightly dense, but nearly every sentence conveys distinct operational meaning.

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

Completeness5/5

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

With an output schema present, the one-line 'Returns the resulting scheduler state' is sufficient. Combined with the destructive-action warnings and annotation coverage, an agent has everything needed to invoke this safely.

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 the parameter burden. It fully documents the `action` parameter's four allowed values and their effects, though it adds no information about `project_id` beyond its obvious meaning.

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

Purpose5/5

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

The description states a specific verb set (start, pause, resume) applied to a named resource (a project's autonomous work / scheduler), and enumerates the four distinct `action` values so an agent knows exactly what the tool controls. It is clearly distinguishable from siblings like archive_project or replan_task.

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 gives per-action conditions: enable/disable flip scheduler_enabled, resume clears a peak/backoff/manual pause, and process_now acts independent of the dev scheduler switch. It does not explicitly name alternative sibling tools to use instead, but the routing between the four actions is unambiguous.

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

create_projectCreate ProjectA
Destructive
Inspect

Start building something new: creates a GitHub repo and begins work on it.

For a NEW repo. Given an existing repo, import_project(repo_full_name) is
the right call — this one would create a second, empty repo beside it
(list_github_repos() browses what the workspace can see).

Scaffolds a new GitHub repo, a bootstrap-mode project, and submits
`build_description` as the project's first Roadmap Request. `name` is a
concise GitHub short repo slug (no owner); `project_kind` is REQUIRED and
one of library | node_library | python_library | service | cli | web_app |
godot_game | roblox_game; `preview_command` is required iff
`project_kind == 'web_app'`.
`engine` is
OPTIONAL — one of claude_code | codex | glm | kimi | grok (defaults to
claude_code); codex, glm, kimi, and grok require the workspace to have a
matching connected credential.
`org` is OPTIONAL — a GitHub organization login to create the repo inside
(e.g. your company org); omit it to land the repo on a member's personal
account. `private` defaults to True.
`ci_runs_on` is OPTIONAL — the CI runner labels for the scaffolded workflow,
e.g. ["self-hosted", "linux", "x64", "my-fleet"]. Omit it to inherit the
workspace default (ubuntu-latest if unset). Labels no registered org runner
carries are rejected, because GitHub would queue such a job forever rather
than fail it.
`framework` is OPTIONAL and `web_app`-only — one of vite | next (defaults to
vite). It picks the scaffolded frontend rails: `vite` a vanilla-TypeScript
SPA, `next` a Next.js app-router app. Passing it with any other
`project_kind` is an error.

The repo is created on the GitHub account of a workspace member with
repo-create OAuth access (this path has no specific caller user), so the
returned `repo` owner is whichever member's token resolved (or the chosen
`org`). If no member has repo-create access — or the resolving member can't
create in `org` — the call returns an actionable error.

Returns {project_id, repo, thread_id, next_action, poll_after_seconds,
next_step}; next_step names the follow-up poll of get_request_status with
the returned thread_id. On the rare arm where the first Request failed to
submit, next_action is "call_tool" with next_tool="submit_request".

If scaffolding fails after the repository has been created, best-effort
compensation deletes that just-created repository so a retry can reuse the
name — this tool can therefore remove external state it created moments
earlier.
ParametersJSON Schema
NameRequiredDescriptionDefault
orgNo
nameYes
engineNo
privateNo
frameworkNo
ci_runs_onNo
project_kindYes
preview_commandNo
build_descriptionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already flag destructiveHint/idempotentHint/openWorldHint, and the description adds substantial non-obvious behavior: the repo is created via whichever member holds repo-create OAuth access (or the chosen org), an actionable error results if none exists, unregistered CI labels are rejected rather than queued, and on scaffolding failure best-effort compensation deletes the just-created repo. This goes well beyond what the annotations provide and is internally consistent with destructiveHint=true.

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 purpose followed by sibling routing, then per-parameter detail, then return/error behavior — a sensible order. The opening 'Start building something new:' is mild filler and the parameter section is dense, but at 0% schema coverage nearly every sentence earns its place, so only minor trimming is possible.

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

Completeness5/5

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

For a 9-parameter, non-idempotent, open-world mutation with an output schema, the description covers prerequisites (repo-create OAuth access), failure modes (missing credential, invalid CI labels, framework/kind mismatch, failed submit with a next_tool directive), and the follow-up action (poll get_request_status). Nothing an agent needs to call it correctly is missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden and does: it enumerates the project_kind values, the engine values with credential preconditions, the web_app-only framework values, the conditional requirement that preview_command is set iff project_kind=='web_app', the ci_runs_on label format and validation, and the default/meaning of org and private. This fully compensates for the undocumented schema.

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

Purpose5/5

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

States a specific verb and resource ('creates a GitHub repo and begins work on it') and immediately distinguishes itself from the closest sibling by name ('Given an existing repo, import_project(repo_full_name) is the right call'). An agent can tell it apart from import_project, list_github_repos, and list_projects without opening any 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?

Explicit when-to-use ('For a NEW repo'), explicit when-not ('this one would create a second, empty repo beside it'), and it names the alternative call with its argument signature, plus a browsing sibling for discovery. Nothing 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.

delete_projectDelete ProjectA
Destructive
Inspect

Soft-delete a project (the harder option) — frees a slot and hides it.

Stops any in-flight machine, then flips the project to `deleted`: it
disappears from `list_projects`, drops out of the project cap, and the loop
stops dispatching it. Deleting ALSO permanently purges the project's stored
review artifacts. The row is retained for audit and re-importing the repo
restores that deleted row in place (unlike `archive_project` there is no
in-tool restore), but the purged artifacts are gone for good and the stopped
workers' process state cannot be recreated. A replay on a deleted project
changes no row; the call is not idempotent end to end. Owner-scoped; a
project not in the workspace 404s.
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, and the description adds substantial context beyond them: stops in-flight machines, frees a cap slot, purges review artifacts permanently while retaining the audit row, re-import restores the row in place, and a replay changes no row. It also discloses owner-scoping and 404 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 operation and its slot-freeing effect, then layers consequences. The density of parentheticals and backticked states makes it heavier than necessary, but nearly every clause carries distinct behavioral information.

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

Completeness5/5

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

For a destructive single-parameter operation with an output schema already documenting returns, the description covers the full decision surface: reversibility, artifact loss, audit retention, idempotency, scoping, and error behavior. Nothing an agent needs to call it safely 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 0% on the single project_id parameter, so the description must compensate. It clarifies owner-scoping and that a non-workspace project 404s, which adds real meaning, but gives no ID format or example, so it only partially fills the gap.

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

Purpose5/5

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

States a specific verb and resource ('Soft-delete a project') and immediately scopes it against the sibling alternative ('the harder option', 'unlike archive_project'). An agent can distinguish it from archive_project and list_projects without opening any schema.

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

Usage Guidelines4/5

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

Explicitly names archive_project as the softer alternative and contrasts the trade-off ('there is no in-tool restore' vs. re-import restoring the row). It conveys clear usage context but never states a crisp 'use this when X / avoid when Y' rule, so a 4 rather than a 5.

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

get_billingGet Billing StatusAInspect

Billing status + a Stripe checkout link when a NEW subscription is needed.

`plan` is one of starter | pro | agency (default starter). When the
workspace has NO live subscription and needs one (open-signup unpaid,
churned, or converting from a free/trial tier), returns a `checkout_url`
with next_action "browser" — the user opens it in a browser (the one setup
step that can't happen in chat). Compute unlocks automatically once payment
completes (a Stripe webhook flips the workspace to active); blocking on it
is unnecessary. A past_due workspace gets NO checkout — the fix is a card
update in the dashboard billing page (a new checkout would create a second
subscription); next_step carries that fix. Subscribed or
suspended-with-subscription states return checkout_url=None with an
explanatory next_step.
ParametersJSON Schema
NameRequiredDescriptionDefault
planNostarter

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and idempotentHint=false, so the agent knows this is not a pure read, and the description explains why: it can mint a checkout session and its output varies by subscription state. It also discloses the async unlock via Stripe webhook and the past_due no-checkout rule, which are real behavioral traits beyond the annotations. It stops short of stating explicitly that calling it creates a Stripe session.

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-loads the core purpose, then branches into per-state behavior in a tight paragraph. Dense but nearly every clause carries state-machine detail; only the parenthetical asides add mild length.

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

Completeness5/5

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

An output schema exists, so return values need not be re-explained, yet the description still clarifies the semantics of checkout_url, next_action, and next_step across states. For a state-dependent billing tool with a non-read-only annotation profile, an agent has everything needed to call it and interpret the result correctly.

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

Parameters4/5

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

Schema description coverage is 0% and the single `plan` parameter has no enum in the schema, so the description carries the full burden. It does so by enumerating the allowed values (starter | pro | agency) and the default (starter), adding genuine meaning over the schema.

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

Purpose5/5

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

States a specific verb+resource (billing status) and immediately adds the second capability (Stripe checkout link when a new subscription is needed). This distinguishes it from siblings like signup, get_provisioning_status, and get_onboarding_status without opening any schema.

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 explicit state-based guidance: checkout_url is returned for open-signup unpaid, churned, or free/trial-converting workspaces; a past_due workspace gets no checkout and must fix the card in the dashboard. It also says blocking on webhook completion is unnecessary. It does not name sibling tools as alternatives, which keeps it just 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.

get_control_gap_findingsGet Control Gap FindingsBInspect

Read a project's security-control observations and review boundaries.

The result groups records by evidence class without a total or an overall
framework outcome. `not_determinable` and `outside_review_scope` qualify
every observation. An empty group does not establish that a control is in
place, and `disclaimer_md` must reach the user.

`limit` defaults to 25 (max 100). `include_all` includes resolved,
dismissed, and out-of-scope records. This read-only tool has no compute
quota and remains available after the trigger closes for a project.
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
project_idYes
include_allNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior1/5

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

The description explicitly calls this a 'read-only tool', while the annotations declare readOnlyHint=false — a direct conflict about whether state can be modified. Despite otherwise helpful disclosure (grouping by evidence class, not_determinable/outside_review_scope qualifiers, disclaimer_md handoff requirement), the contradiction is serious enough to anchor this dimension at 1.

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 titled paragraphs, front-loaded with what the tool returns before the parameter and availability notes. Slightly more prose than strictly necessary (the empty-group caveat and disclaimer sentence are long), but every sentence carries non-obvious 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?

An output schema exists, so return values need not be re-specified, yet the description still usefully explains the grouping semantics, qualifier fields, and the disclaimer_md obligation. The one real gap is the failure to reconcile its 'read-only' claim with the annotations.

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 the load, and it does: limit's default of 25 and cap of 100, and include_all's inclusion of resolved/dismissed/out-of-scope records. Only project_id is left unexplained, which is self-evident from the name and required list.

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

Purpose4/5

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

The opening sentence gives a specific verb (read) and resource (a project's security-control observations and review boundaries), which cleanly separates it from the mutating sibling run_control_gap_review. It stops short of naming that sibling explicitly, but the read/compute split is inferable.

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 conveys operational context (limit default/max, include_all behavior, availability after the project's trigger closes) but never states when to prefer this over run_control_gap_review, which is the obvious alternative sitting in the sibling list. Usage is implied rather than routed.

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

get_onboarding_statusGet Onboarding StatusAInspect

Check what is set up so far and what to do next to get building.

Reports engine_connected / github_connected / project_count / payment_status
and a `next_action` string whose value is authoritative, with this tool
polled between steps. `next_action` is "call_tool" (the tool named in
`next_tool`, with `next_step` describing the call) until onboarding is
complete, then "done". (`next_action_detail` echoes the pre-2026-07-29 dict
shape and is DEPRECATED — it is removed 2026-10-29; next_action/next_tool
are the current fields.)
- engine step: the dashboard /login link goes to the user. Engine
  subscriptions (Claude / Codex / GLM) are connected in the DASHBOARD for
  security — engine credentials are never asked for or pasted in this chat.
- github step: connect_github() returns an install link.
- project step: create_project(...) for a new repo, or
  import_project(repo_full_name) for an existing one.
- launch step: get_provisioning_status(project_id) reports readiness.
Re-checking is the caller's job — the server does not push.
Also returns a `usage` block (pool / daily / machine-hours counters + tier
caps) for capacity-aware automation clients.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With annotations present, the description adds substantial context beyond them: the authority of next_action, the tool's polling semantics, the deprecation window for next_action_detail, and the presence of a usage/capacity block. It does not explain why the annotations mark this status check as non-read-only and non-idempotent, which is the one unexplained behavioral wrinkle.

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 the authoritative field, then organized into terse per-step bullets. The parenthetical deprecation note is verbose but carries real migration value, so it earns its place; overall density is high with little waste.

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

Completeness5/5

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

For a zero-param status tool with an output schema, this covers everything an agent needs: what is reported, how to interpret next_action, which sibling to call at each step, and the re-poll requirement. Return-value detail is correctly left to the output schema rather than duplicated.

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?

Zero parameters, so per the rubric the baseline is 4. The description appropriately spends no space on parameter documentation and instead clarifies the shape of the returned next_action/next_tool fields.

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 names a specific verb+resource (check onboarding/setup status) and enumerates exactly what is reported: engine_connected, github_connected, project_count, payment_status, next_action, and a usage block. It is clearly distinguishable from siblings like get_provisioning_status or project_status by scoping itself to onboarding progress.

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 the polling pattern explicitly ('polled between steps'), explains that next_action is authoritative, and maps each onboarding step (engine, github, project, launch) to the sibling tool the agent should call next. It also states the caller must re-check because the server does not push — an unusual but valuable usage constraint.

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

get_product_goalGet Product GoalAInspect

Read a project's current product goal (the outcome work is aimed at).

The paired setter `set_product_goal` replaces the whole document rather
than appending to it, so a write without a prior read silently discards
whatever the user already recorded; adding a line means reading the current
text, editing it, and setting the full result back.

Returns {project_id, product_goal_md, updated_at}. `product_goal_md` is
None when no goal has been set. Tenant-scoped: a project not in the
caller's workspace 404s.
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations are thin here (readOnlyHint=false, idempotentHint=false add little for what is plainly a read), so the description carries real weight and delivers: the destructive whole-document replacement semantics of the paired writer, the risk of silent data loss, the None value when no goal exists, and tenant scoping that 404s for out-of-workspace projects. That is auth/tenancy and data-loss context beyond the 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.

Conciseness4/5

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

Purpose is front-loaded, followed by the write hazard, the return shape, and the scoping constraint in a logical order with no filler sentences. The read-modify-write clause slightly restates the preceding sentence about whole-document replacement, which keeps it just short of ideal.

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

Completeness5/5

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

For a one-parameter read tool, the description covers purpose, the critical interaction with its setter, the return fields, the empty-state value, and cross-tenant behavior. Although an output schema exists, the description still names the fields without bloating, and nothing needed to invoke it correctly 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 coverage is 0% for the single project_id parameter, so the description must compensate. It adds the meaningful tenancy constraint (a project outside the caller's workspace 404s), but never states project_id's format or how to obtain it, leaving half the semantic burden unmet.

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 and resource ('Read a project's current product goal') and immediately characterizes what a product goal is ('the outcome work is aimed at'), which implicitly separates it from get_product_vision. It also names the paired writer, set_product_goal, so an agent can tell the read from the write without opening either schema.

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 a concrete when-to-use rule: a write without a prior read silently discards existing content, so you must read before you set, and adding a line requires read-modify-write. That is strong context, but there is no explicit guidance about when NOT to use this versus the sibling get_product_vision, only versus the setter.

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

get_product_visionGet Product VisionAInspect

Read a project's current product vision (what the product is for).

The paired setter `set_product_vision` replaces the whole document rather
than appending to it, so a write without a prior read silently discards
whatever the user already recorded; adding a line means reading the current
text, editing it, and setting the full result back.

Returns {project_id, product_vision_md, updated_at}. `product_vision_md` is
None when no vision has been set. Tenant-scoped: a project not in the
caller's workspace 404s.
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior1/5

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

The description frames this unambiguously as a read ('Read a project's current product vision'), while the annotations declare readOnlyHint=false and idempotentHint=false, i.e. a potentially state-mutating, non-repeatable operation. That is a direct contradiction between stated behavior and the structured safety profile, which is exactly the case the rubric scores 1 for, regardless of how much other useful context the text supplies.

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

Conciseness5/5

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

Three short, front-loaded paragraphs: purpose first, then the read-before-write rationale, then return shape and scoping. Every sentence carries non-redundant information and nothing is padded.

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

Completeness5/5

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

For a single-parameter getter with an output schema, the description still adds the return shape ({project_id, product_vision_md, updated_at}), the None-when-unset case, and the tenant-scoping failure mode. Nothing an agent needs to call this correctly 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 0% for the single `project_id` parameter, so the description must carry the meaning. It partially does: 'Tenant-scoped: a project not in the caller's workspace 404s' tells the agent the id must belong to the caller's workspace and what happens on mismatch, but it says nothing about id format or where to obtain it (e.g. `list_projects`).

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 (read) and resource (a project's current product vision), and glosses the resource in plain terms ('what the product is for'). It also names the paired sibling `set_product_vision`, so an agent can distinguish the getter from the setter without opening either 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?

Explicitly routes usage: the paired setter replaces the whole document, so a write without a prior read silently discards existing content, and editing means read-modify-write. That is a concrete when-to-use and when-not-to-write-blindly instruction, not just implied context.

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

get_provisioning_statusGet Provisioning StatusAInspect

Check whether a new project has finished setting up and is ready to build.

Returns overall (provisioning | ready | errored), a 7-stage checklist, and a
user-facing error_kind when a stage failed. next_action is "wait" with
poll_after_seconds (~10s) while provisioning, "wait" with NO
poll_after_seconds when errored (fix the reported cause, then re-check —
polling again without fixing it will not change the result), and "done" when
overall is 'ready' — submit_request(project_id, text) then steers the loop.
Reaching 'ready' also PERSISTS the owner's onboarding-completion
state, so this is not a pure read. Tenant-scoped: a project not in the
caller's workspace 404s.
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

Discloses behaviour well beyond the annotations: it warns the tool is not a pure read (reaching 'ready' persists onboarding-completion state), matches readOnlyHint=false and idempotentHint=false without contradicting them, and adds poll timing, error_kind semantics, and tenant-scoping 404 behaviour.

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-loads the core purpose, then layers state-specific next_action guidance. Dense and mostly waste-free, though the run-on enumeration of next_action variants is slightly hard to scan.

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

Completeness5/5

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

For a single-parameter status tool the description is complete: it covers the states, the error path, the loop-driving next action, and the persistence side effect. An output schema exists, so return-value documentation is unnecessary and the extra detail is bonus.

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?

Only one parameter, project_id, with 0% schema description coverage. The description implies tenant scoping and mentions project_id in the submit_request example, but never clarifies the expected format (ID vs name) or how to obtain it, so it adds limited semantics beyond the self-evident name.

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

Purpose5/5

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

States a specific verb and resource: checking whether a new project has finished provisioning and is ready to build. It is clearly distinguishable from siblings like get_onboarding_status and project_status through the provisioning-stage framing.

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

Usage Guidelines5/5

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

Explicitly prescribes behaviour per state: poll with poll_after_seconds while provisioning, do NOT poll while errored (fix the cause first), and call submit_request(project_id, text) once 'ready'. This is when-to-use guidance at the level of an agent loop, not just a hint.

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

get_request_statusGet Request StatusAInspect

Check what happened to a request, and read any questions it asked back.

Intake is async (~5min cadence), so the status changes between calls.
`next_action` is one of: "wait" (still processing), "answer_questions"
(answer_request takes one answer per question), "done" (see
generated_roadmap_item_ids), "cancelled" (terminal, no items), "failed"
(see intake_failure_reason), "approve_plan" (a planned request's plan
awaits the user's approval in the dashboard). A planned request also
carries `stage`, `plan_cycle` and `max_cycles`.
ParametersJSON Schema
NameRequiredDescriptionDefault
thread_idYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior5/5

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

With annotations saying little beyond readOnlyHint/idempotentHint being false, the description carries the burden and does so well: it enumerates the full next_action state machine, marks cancelled as terminal and failed as error-bearing, and discloses the extra fields (stage, plan_cycle, max_cycles) present for planned requests. That is materially more than the annotations supply.

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?

Purpose is front-loaded in the first sentence and the async caveat follows immediately. The long next_action breakdown is dense but each branch earns its place by naming the consequential outcome; only the trailing 'stage, plan_cycle and max_cycles' sentence is marginally thin on what those mean.

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 the tool did not need to explain returns, yet it usefully maps the key response fields to agent actions. Combined with the polling guidance and terminal-state disclosure, an agent has enough to call and interpret this correctly; only the input parameters remain unexplained.

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 two required parameters (project_id, thread_id), and the description says nothing about what identifies a thread or where project_id comes from. The field names it does mention (next_action, generated_roadmap_item_ids, intake_failure_reason) are response fields, not inputs, so the gap in input semantics is unaddressed.

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 ('Check what happened to a request') and immediately scopes it to the async intake flow, which distinguishes it from submit_request, refine_request, and answer_request. An agent can tell it apart from the sibling status tools (project_status, get_provisioning_status) without opening a schema.

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?

Explains the polling context explicitly ('Intake is async (~5min cadence), so the status changes between calls') and routes each terminal/branching state to the correct follow-up: answer_questions -> answer_request, done -> generated_roadmap_item_ids, failed -> intake_failure_reason, approve_plan -> dashboard. It stops short of naming when to prefer this over get_provisioning_status or project_status, so no explicit exclusions.

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

import_projectImport RepositoryA
Destructive
Inspect

Connect an EXISTING GitHub repo as a Keelen project.

This is the counterpart of create_project: it is for a repo that already
exists, while create_project scaffolds a brand-new one.

`repo_full_name` is "owner/repo" — it MUST be visible to the workspace's
GitHub connection (list_github_repos() to browse; a non-visible repo 404s).
`engine` is OPTIONAL — one of claude_code | codex | glm | kimi | grok
(defaults to claude_code); codex/glm/kimi/grok require a matching connected
credential.
`build_description` is OPTIONAL but STRONGLY recommended — a plain-language
"what should Keelen build first?" submitted as the project's first Request so
the loop has work; an imported project with no Request sits idle until
submit_request(project_id, ...) adds one.

`project_kind` is OPTIONAL — one of library | node_library | python_library |
service | cli | web_app | godot_game | roblox_game | unknown. Omit it and the
kind is auto-detected. It is required for a MONOREPO (apps in
subdirectories), a stack with no standard root manifest (Java, Ruby, PHP,
.NET, Elixir), or a classification detection cannot infer — detection yields
"unknown" there, which BLOCKS the dev lane until
someone overrides it. A supplied value is authoritative and is never
overwritten by later auto-detection. `stack` is the OPTIONAL language axis
(python | node | rust | go | cpp) for a language-agnostic kind.
`preview_command` is REQUIRED when project_kind is "web_app" (the command
that serves the app locally, e.g. "npm run dev") and optional otherwise,
where it overrides the detected one.

Re-importing the same live repo is replay-guarded (returns the existing
project with already_exists=True), and re-importing a SOFT-DELETED repo
RESTORES that deleted row in place — it does not create a fresh project.
Restored queued work can include refinement that deletes tasks, and the call
is not idempotent end to end. On a plan with no scheduled-project allowance
the project is still created but with the loop OFF — next_step then names
get_billing(). Otherwise next_step names the poll of
get_provisioning_status(project_id).
ParametersJSON Schema
NameRequiredDescriptionDefault
stackNo
engineNo
project_kindNo
repo_full_nameYes
preview_commandNo
build_descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true, idempotentHint=false and openWorldHint=true, but the description goes well beyond them: replay-guarded re-imports returning already_exists=True, in-place restoration of a soft-deleted row, restored queued work that can delete tasks, non-idempotency end to end, and loop being OFF with next_step naming get_billing(). This is unusually rich operational context 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.

Conciseness4/5

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

The intent sentence and the create_project contrast are front-loaded, then parameters are handled in labeled blocks, so it scans well despite its length. It is dense and occasionally repetitive (visibility and detection caveats restated), which keeps it short of a 5, but each paragraph carries real decision-relevant content.

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

Completeness5/5

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

With an output schema present, return values need no explaining, and the description still covers the two outcome branches that matter (already_exists on replay, loop OFF with get_billing() routing, else get_provisioning_status). For a destructive, non-idempotent, open-world import with 6 params, nothing an agent needs to call it correctly is missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden and does: repo_full_name format 'owner/repo' plus visibility rule, engine's enum values and default, project_kind's enum values with auto-detect/override semantics and the cases that block the dev lane, stack's language axis, and the conditional requirement on preview_command. Nothing material about the six parameters is left undocumented.

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?

Opens with a specific verb and resource ('Connect an EXISTING GitHub repo as a Keelen project') and immediately disambiguates against the sibling create_project, stating this is for pre-existing repos while create_project scaffolds new ones. An agent can select it correctly without touching 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?

Gives explicit when-to-use vs create_project, tells the agent to call list_github_repos() to verify visibility (and that non-visible repos 404), and names submit_request as the follow-up when no build_description is supplied. It also states the conditions that make project_kind and preview_command mandatory, which is exactly the routing guidance an agent needs.

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

list_escalationsList EscalationsAInspect

See what the work is stuck on and waiting for a human decision about.

`project_status` only COUNTS open escalations; this returns each one with its
kind, reason, detail_md, recommended_action, and (when task-scoped) the
blocked task's title + PR url. A card about a roadmap item carries its
`roadmap_item_id` (null for a task-only, project-level or synthetic row),
which matches the `id` in `list_roadmap`. A "forever-paused" project with no open
`project_pause` row is surfaced as a synthetic `orphan:<project_id>` row.
Each row carries a server-derived `task_retry_available` flag and an exact
`next_tool`: eligible recovery blocks route to `retry_blocked_task`, roadmap
parks to `rearm_roadmap_item`, platform conflicts to their structured
resolver, an orphan block whose task keeps its own PR to the owner tool
`requeue_for_review` (it takes the row's task_id, not its id), other stale
work to `replan_task`, and only safe auxiliary cards to
`resolve_escalation`. For an active workspace owner, an eligible platform
conflict on a web_app task also lists `evidence_selector_cells`, the input
of the owner-only `correct_evidence_selector` decision.
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond annotations by disclosing edge cases (synthetic `orphan:<project_id>` rows, null `roadmap_item_id` for task-only/synthetic rows), server-derived flags, and a critical invocation nuance — that `requeue_for_review` takes the row's task_id rather than its id. Annotations only assert readOnlyHint=false/idempotentHint=false; the description supplies the real operational context.

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

Conciseness3/5

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

Front-loaded with a crisp purpose sentence, but the middle is a single dense block enumerating return fields and next_tool routing. Since an output schema exists, much of the return-field enumeration is arguably redundant, and the routing detail crowds the core message.

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 lookup-style tool with an output schema, it is more than complete on behavior and routing. The one clear hole is the undocumented required parameter, which leaves the agent without guidance on what `project_id` should be.

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

Parameters2/5

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

The schema has 0% description coverage and the single required `project_id` parameter is never explained, nor is its scope (does it imply workspace scoping?). The description never mentions the parameter at all, so it fails to compensate for the schema gap.

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

Purpose5/5

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

States a specific verb and resource ('See what the work is stuck on... this returns each one') and explicitly distinguishes itself from the sibling `project_status` ('only COUNTS open escalations; this returns each one'). An agent can tell exactly what this returns versus its nearest alternative.

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 names the alternative (`project_status`) and the condition that separates them, and it routes each row type to a specific follow-up tool (`retry_blocked_task`, `rearm_roadmap_item`, `replan_task`, `resolve_escalation`). It stops short of stating when NOT to reach for this tool or prerequisites for calling it.

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

list_github_reposList GitHub RepositoriesAInspect

List repos the workspace's GitHub connection can see (for import_project).

Each entry has full_name, default_branch, private, language, pushed_at. A
`full_name` is what import_project(repo_full_name) connects. Reading the
list can MINT a short-lived GitHub installation token, so this is not a pure
read. Returns 409 if GitHub isn't connected yet — connect_github() is
required first. A provider failure is translated into a typed, actionable
error instead of passing GitHub's response through: a missing or suspended
App installation, a revoked OAuth token, or a non-rate-limit permission
denial is a 409 naming connect_github(); a recognized rate limit is a 429;
other provider failures are a 502; a timeout or transport failure is a 503.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

Discloses a non-obvious side effect the annotations only partly imply: reading the list can mint a short-lived installation token, so it is not a pure read. This is consistent with readOnlyHint=false and adds real context. It then gives a complete, typed error taxonomy (409/429/502/503) mapping each provider failure to a named cause, which is far beyond what annotations provide.

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 purpose, then entries, then side effect, then error behavior — a logical progression with no filler. It runs a bit long in the error enumeration, but every clause carries distinct information rather than repeating structured fields.

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

Completeness5/5

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

Complete for a zero-parameter, side-effecting list call: scope, downstream consumer, token-minting behavior, connection precondition, and a full failure taxonomy are all covered. An output schema exists, so the description is not obliged to detail return values, yet its field list is a useful pointer.

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 goes further by explaining the return fields (full_name, default_branch, private, language, pushed_at) and clarifying that full_name is the value import_project consumes, which adds semantics not present in the empty input schema.

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

Purpose5/5

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

States a specific verb (List) and resource (GitHub repos) plus the exact scope: repos the workspace's GitHub connection can see. It also names the consuming sibling, import_project, so an agent can immediately distinguish this from connect_github or import_project.

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

Usage Guidelines5/5

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

Explicitly ties the tool to import_project (for import_project) and states the precondition that connect_github() must run first, backed by the concrete consequence (409 if GitHub isn't connected). This is exactly the when-to-use / prerequisite guidance the dimension asks for.

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

list_projectsList ProjectsBInspect

List the projects in this workspace, with what each one is building.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior1/5

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

The description describes a plain enumeration ("List the projects in this workspace"), which is inherently a read-only, repeatable operation, yet the annotations declare readOnlyHint=false and idempotentHint=false. An agent reading the annotations would infer possible writes or non-repeatable side effects that the description never acknowledges or reconciles, so the two sources conflict.

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 no filler; the verb and scope come first and the extra payload clause is the only addition. Nothing in it is redundant.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and with zero parameters there is little else an agent must know to invoke it. The remaining gap is the unresolved read-only question raised by the annotations, plus no mention of empty-workspace or pagination behavior.

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 and the schema description coverage is 100%, so there is nothing for the description to clarify. Baseline of 4 applies for a parameterless tool.

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

Purpose4/5

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

States a specific verb (list) and resource (projects), plus a scope qualifier ("in this workspace") and an add-on payload ("with what each one is building"). That is clear enough to separate it from create_project/delete_project/archive_project, but it never names or contrasts with the neighboring project-reading tools (project_status, project_digest), so it stops short of full sibling differentiation.

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 scope phrase "in this workspace" implies when the tool is appropriate (enumerating all projects), but there is no explicit when-to-use or when-not-to-use guidance and no routing among the many project-related siblings. Usage is only inferable, which matches the minimum-viable level.

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

list_roadmapList RoadmapBInspect

See what is planned for a project and in what order.

Queued rows also say whether the expand picker would elect them
(`electable`) and, when not, why it skips them (`skip_reason`:
awaiting_intake_thread | awaiting_clarification | crash_capped |
noop_capped | crash_cooldown | noop_cooldown | held_on_open_pr | other).
The first reason that applies, in that order, is the one returned.
`awaiting_clarification` means the planner asked a planning question about
the item and waits for the answer: `list_escalations` returns that card
with the item's `roadmap_item_id`. A skipped item ahead of yours does not
delay it.
ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoqueued
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

The description adds genuinely valuable domain behavior: the skip_reason precedence list, the meaning of electable, and the note that a skipped item ahead of yours does not delay it. But it frames the tool as a pure read ('See what is planned') while the annotations declare readOnlyHint=false and idempotentHint=false, i.e. a stateful operation; that unresolved mismatch undercuts the otherwise strong behavioral content.

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 purpose in the first sentence, then focused detail on the interesting output fields. Every sentence earns its place, though the long parenthetical enum of skip_reason values is dense.

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 needn't be described, yet the description still explains the key fields (electable, skip_reason, awaiting_clarification). The gaps are the undocumented status parameter and the ambiguity about side effects, so it is not quite a 5.

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 neither parameter is explained in the text. 'Queued rows' faintly hints that status defaults to 'queued', but no allowed status values or project_id semantics are given, so the description does not 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 clear verb+resource ('See what is planned for a project') and adds the distinctive ordering aspect ('and in what order'), so an agent knows this lists a project's roadmap plan. It does not explicitly contrast with related siblings such as reorder_roadmap or project_status, which keeps it from a 5.

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

Usage Guidelines3/5

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

Usage is implied (view a project's planned items) and it usefully cross-references list_escalations for the awaiting_clarification case, giving a concrete routing pointer. However, there is no explicit when-to-use/when-not guidance and no named alternative for viewing versus reordering or checking project status.

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

open_dashboardOpen Dashboard LinkAInspect

Get a one-click, pre-authenticated dashboard sign-in link for the owner.

The engine-connect step — and any dashboard task (billing card update, a
project page) — needs a signed-in browser. Because this server has already
authenticated the workspace owner, this mints a single-use magic-link login
token and returns a `/login?token=…` deep link: opening it signs the user
straight into the dashboard (no email round-trip, no password) and lands
them where onboarding left off. The returned `login_url` works once and
expires in 15 minutes; a repeat call mints a fresh one.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations set readOnlyHint=false and idempotentHint=false, and the description explains exactly why: it mints a single-use token, the returned login_url works once and expires in 15 minutes, and a repeat call mints a fresh one. This is rich behavioral disclosure well beyond what the annotations convey, with 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.

Conciseness4/5

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

The key action and output (a one-click sign-in link) are front-loaded in the opening sentence, and the following sentences explain token mechanics. It is slightly longer than strictly needed for a zero-parameter tool, but every sentence adds real context rather than restating structured fields.

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

Completeness5/5

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

For a no-parameter tool with an output schema already present, the description is more than complete: it covers why the tool exists, token lifetime, single-use semantics, and repeat-call behavior. Nothing an agent needs to invoke it correctly 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?

The tool takes zero parameters, which establishes the baseline of 4. The description correctly implies no input is required ('this server has already authenticated the workspace owner'), so there is nothing further for it to document.

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 first sentence states a specific verb+resource: minting a one-click, pre-authenticated dashboard sign-in link for the owner. It is clearly distinguished from all read-oriented siblings like get_billing or project_status, and an agent knows exactly what the tool produces 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 Guidelines4/5

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

The description gives strong usage context — needed by the engine-connect step and any dashboard task such as billing or a project page — which tells the agent when a signed-in browser is required. It stops short of naming a sibling alternative or an explicit when-not condition, so it sits at a clear context with no exclusions.

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

project_digestGet Project DigestAInspect

Read a compact progress digest for one project (delivery, activity, holds, next decision).

    Returns the closed MCP projection: delivery counts and the five newest
    delivered items, a recent loop-activity count, current holds, the single
    highest-priority open decision, and `more_decisions`. Two steering fields
    are ALWAYS present: `next_action` is `"call_tool"` with
    `next_tool="list_escalations"` when a decision exists, otherwise
    `"none"` with `next_tool: null`. `since` is an optional ISO-8601
    timestamp with a timezone; it defaults to 24 hours ago and is clamped to
    the last seven days. This tool is **off by default and not generally
    available**: it is registered only when the server was started with
    `KEELEN_PROGRESS_DIGEST_ENABLED` enabled, and a live disable refuses
    calls until restart. Tenant-scoped: a project outside the caller's
    workspace 404s.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNo
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

The description is unusually rich about behavior beyond the annotations: feature-flag registration, live-disable refusal, tenant scoping with 404, and the mandatory steering fields. However, it opens with 'Read' while the annotations declare readOnlyHint=false and idempotentHint=false, which is an inconsistency between stated and structured 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-loads the one-line purpose, then return shape, then availability constraints. It is longer than average but each sentence adds operational information; the steering-field sentence is dense but justified by non-obvious semantics.

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

Completeness5/5

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

Although an output schema exists, the description still supplies the semantics an agent needs (next_action/next_tool contract, more_decisions, clamping window) plus the gating and scoping preconditions. Nothing needed to invoke it correctly 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 must carry the load, and it does for `since`: optional ISO-8601 timestamp with timezone, defaults to 24 hours ago, clamped to the last seven days. `project_id` is only indirectly covered via the tenant-scoping sentence, leaving one parameter thin.

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 and resource ('Read a compact progress digest for one project') and enumerates the exact contents (delivery counts, five newest delivered items, activity count, holds, top open decision, more_decisions). An agent can distinguish this from the sibling project_status without opening either 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?

It gives strong availability gating (off by default, registered only with KEELEN_PROGRESS_DIGEST_ENABLED, live disable refuses calls, tenant-scoped 404) but never says when to prefer this over project_status or list_escalations. The when-to-use is implied by the return contents rather than stated against alternatives.

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

project_statusGet Project StatusAInspect

Check how a project is doing: what is in flight, what shipped, what is stuck.

Returns lifecycle status, open task count, queued roadmap item count, runs
today, verification pass rate, open blockers, pause state, and freshness.
Zero `open_tasks` does not mean an empty roadmap: `queued_roadmap_items`
counts planned work awaiting expansion, including work held while the
scheduler is disabled. list_roadmap returns those items.

`glm_peak_paused` is NOT a fault and sets no pause columns: it is the
ephemeral GLM peak-hours skip. True means clean PRs hold and runs stop
until `glm_peak_resumes_at`. It is an intentional cost gate, so the accurate
description is "waiting for off-peak", not a failure.

For `web_app` projects the optional `ui_review` block can mint a GitHub
installation token and read the default branch's `ui-review.json`, so this
status call is not guaranteed to be a purely local read.
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

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

The description carries real behavioral weight beyond the annotations: it explains that glm_peak_paused is an intentional cost gate rather than a fault, that it sets no pause columns, and that runs resume at glm_peak_resumes_at. It also reconciles the readOnlyHint=false annotation by disclosing that the ui_review block can mint a GitHub installation token and read a remote file, so the call is not a purely local read.

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 purpose in the first line, then layered nuance. Dense but each paragraph addresses a distinct concern (status fields, roadmap distinction, GLM pause semantics, side effects). Slightly long, but no filler sentences.

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 an output schema exists, the enumerated return fields are somewhat redundant, but the interpretive guidance (glm_peak_paused not being a failure, the roadmap count distinction) and the side-effect warning make the definition complete for correct invocation. Only the parameter itself is under-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?

Only one parameter (project_id) with 0% schema description coverage, but the description clearly frames it as the project being inspected and the return fields tie back to it. No format, identifier style, or lookup detail is added, so it does not go beyond what the obvious field name already conveys.

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?

Opens with a concrete, scannable statement of the resource and its scope ('Check how a project is doing: what is in flight, what shipped, what is stuck'), then enumerates exactly what is returned. An agent can distinguish it from siblings like list_roadmap or project_digest 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 Guidelines4/5

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

Provides clear interpretive context on when to read which field (e.g. zero open_tasks does not mean an empty roadmap, use list_roadmap for queued items). It names a sibling and its role, but stops short of explicit when-to-use/when-not conditions relative to tools like project_digest or list_projects.

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

rearm_roadmap_itemRearm Roadmap ItemAInspect

Run the dashboard's replay-guarded same-item dependency re-arm.

``escalation_id`` is an ``expand_produced_nothing`` or
``roadmap_item_parked`` escalation id. Keelen verifies delivered structural
prerequisites, grants one bounded
expand retry, preserves the roadmap item id and ``depends_on_item_ids``, and
resolves the matching cards in one transaction. A bounded live GitHub check
may be used when the local merge state is stale, so a call can reach out
even when the re-arm itself changes nothing.
ParametersJSON Schema
NameRequiredDescriptionDefault
escalation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

With annotations already flagging non-read-only, open-world and non-idempotent behavior, the description still adds real traits beyond them: a replay guard, verification of delivered prerequisites, exactly one bounded expand retry, id/dependency preservation, resolution of matching cards in a single transaction, and a bounded live GitHub check that can reach out even when nothing changes. It stops short of permissions, auth, or failure-mode disclosure.

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 action is front-loaded in the first sentence, and the following sentences each add operational detail. Backtick-heavy domain jargon adds density but little waste; the whole is appropriately sized for the operation's complexity.

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. For a single-parameter, transaction-scoped mutation the description covers preconditions, semantics, and external-call behavior adequately; only the id's source and error behavior are absent.

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 the parameter meaning, and it does: escalation_id is scoped to two escalation kinds, effectively an implicit enum beyond the bare string type. It does not say where to obtain the id, 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?

The description names a specific action (re-arm) on a specific resource (a roadmap item's same-item dependency) keyed by an escalation id, and elaborates the concrete steps (verify prerequisites, grant one expand retry, resolve cards). It is clear what the tool does, though it never names or contrasts a sibling such as cancel_roadmap_item or retry_blocked_task.

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

Usage Guidelines3/5

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

The statement that escalation_id must be an expand_produced_nothing or roadmap_item_parked id implies when the tool applies, which is useful precondition context. However there is no explicit when-to-use rule, no exclusions, and no routing against alternatives, leaving the agent to infer the scenario.

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

refine_requestRefine RequestA
Destructive
Inspect

Say what is wrong with what a request produced, and have it reworked.

Status must be "done". `feedback_md` is 1..1979 chars. Moves the thread to
refine_pending; get_request_status reports the revised items. Refinement
re-plans the thread's roadmap items and can EDIT OR HARD-DELETE the task rows
it generated earlier (the machine patch-tasks endpoint deletes them
outright), so it is destructive: up to five refinements per thread each
carry that power.
ParametersJSON Schema
NameRequiredDescriptionDefault
thread_idYes
project_idYes
feedback_mdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already flag destructiveHint/readOnlyHint/openWorldHint, and the description layers on genuinely new behavior: the thread moves to refine_pending, refinement re-plans roadmap items, can edit or HARD-DELETE previously generated task rows, and there is a cap of five refinements per thread. This is exactly the kind of consequence detail an agent needs before calling a destructive 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?

Front-loads the intent then packs the constraints into a few tight sentences with no filler. The parenthetical about the machine patch-tasks endpoint is slightly tangential but still earns its place as a destructiveness explanation.

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?

Output schema exists so return values needn't be described, and the description covers the state transition, the destructive side effects and the call cap. The main gap is the meaning/scope of thread_id and project_id, which matters for a 3-required-parameter 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 0%, so the description carries the parameter burden. It does usefully constrain feedback_md (1..1979 chars), but says nothing about project_id or thread_id, leaving two of three required parameters undocumented in both schema and description.

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 ('say what is wrong... have it reworked') and names the artifact affected (request output, roadmap items). It is distinguishable from adjacent tools like answer_request, get_request_status and replan_task, though it never explicitly contrasts itself with them.

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 a hard precondition ('Status must be "done"') and routes the agent to get_request_status to observe the revised items. It stops short of naming alternatives or when-not-to-use cases (e.g. vs. answer_request or replan_task), which keeps it out of 5 territory.

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

reorder_roadmapReorder RoadmapAInspect

Change what gets built first.

`ordered_ids` is the desired front-to-back order of queued roadmap-item ids
(list_roadmap returns them). The first id becomes the highest priority —
the cadence expands the lowest-priority_int queued item next. Horizon pins
still dominate: a pinned-later item stays at the back and a pinned-now item
at the front, regardless of position in `ordered_ids`. Ids that are unknown
or no longer queued are skipped; duplicates are rejected. Returns {updated,
queue, next_step}.
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
ordered_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish mutation-without-destruction (readOnly=false, destructive=false, idempotent=false), and the description adds real behavioral depth beyond them: horizon pins override ordered_ids position, unknown or de-queued ids are skipped, duplicates are rejected, and the returned shape is disclosed. It stops short of noting the non-idempotency implication or any permission/rate constraints, so 4 rather than 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 one-line purpose followed by tightly packed semantics; nearly every sentence carries information the agent needs. The cadence/priority_int aside is slightly tangential but directly explains why order matters, so no serious bloat.

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 mutation tool with an output schema present, the description covers ordering semantics, pin precedence, invalid-id handling, and validation rules — enough to call it correctly. Remaining gaps are minor (project_id meaning, failure/permission behavior) since the output schema already covers return shape.

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

Parameters4/5

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

Schema coverage is 0%, so the description must carry the load — and it does for the non-trivial parameter, explaining that `ordered_ids` is a front-to-back list where the first id becomes highest priority, with skip and duplicate-rejection rules. `project_id` is never explained in either schema or description, leaving one of two required params opaque.

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?

Opens with a specific verb+outcome ('Change what gets built first') and names the exact resource and mechanism (`ordered_ids` ordering of queued roadmap-item ids). It also references the sibling that produces those ids (list_roadmap), letting an agent separate it from neighbors like cancel_roadmap_item or set_product_goal.

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 makes the usage context inferable ('use list_roadmap to obtain ids, then pass the desired order') and states ordering semantics, but never says explicitly when to reorder versus other roadmap-mutating siblings such as cancel_roadmap_item, rearm_roadmap_item, or set_product_goal, and offers no when-not guidance.

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

replan_taskReplan TaskA
Destructive
Inspect

Replace an unretryable blocked task without losing its lineage.

Creates a fresh, explicitly planned task under the same roadmap item and attempt lineage, transfers prerequisites and downstream dependents, and cancels the stale task with supersession provenance. The old PR, task, failures, criteria, and evidence remain in the audit history; nothing is marked delivered.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
body_mdYes
task_idYes
project_idYes
decision_mdYes
acceptance_criteriaYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations declare destructiveHint=true and readOnlyHint=false, and the description adds real value beyond that: it discloses that lineage/prerequisites/dependents are transferred, the old task is cancelled with supersession provenance, and nothing is marked delivered. It leaves out the openWorldHint=true implication and any permission/idempotency caveat, but with annotations carrying the safety profile, this is a strong addition.

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

Conciseness5/5

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

Two sentences front-loaded on the core action, with side effects following. No filler, no restated name/title. Every clause earns its place.

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

Completeness3/5

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

Output schema exists, so return values need not be explained, and the lifecycle effects (transfer, cancel, provenance) are described well. But for a destructive, open-world, 6-required-parameter mutation with zero schema description coverage, the description is incomplete — the required new content inputs are entirely unaddressed.

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% across 6 required parameters, so the description must compensate and does not. It never mentions title, body_md, decision_md, or acceptance_criteria — all required inputs an agent must supply — leaving the meaning and format of every parameter undocumented.

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 precise verb+resource ('Replace an unretryable blocked task') and immediately differentiates from the close sibling by qualifying the task as 'unretryable' — which is exactly the condition separating this from retry_blocked_task. An agent can pick between the two without opening a schema.

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 'unretryable' qualifier strongly implies when to use this rather than retry_blocked_task, and the description names the replacement semantics. However, it never names retry_blocked_task as the alternative or states an explicit exclusion, so the routing is implied rather than declared.

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

requeue_for_reviewRequeue Task for ReviewA
Destructive
Inspect

Return one blocked task's existing pull request to normal review.

Requires a personal OAuth connection of an active workspace owner;
workspace keys are refused. Pass the task id (not an escalation id), the
PR's exact 40-character head SHA, a reason (1-2000 characters) and a
request_id you choose (1-128 of letters, digits, `.`, `:`, `_`, `-`). The
task's own open keelen/iter-* PR must be green and cleanly mergeable at
that head, and its latest DEV run must have verified that head. Status
becomes done (implementation awaiting review), never delivered. Review,
CI, acceptance and merge gates still apply; no retry starts and no budget
resets. The same request_id and arguments replay the stored receipt. A
refusal returns ok=false, reason review_requeue_refused, a stable
cause_code and a fixed message.
ParametersJSON Schema
NameRequiredDescriptionDefault
reasonYes
task_idYes
request_idYes
expected_head_shaYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations: states OAuth personal-connection requirement, refuses workspace keys, specifies resulting status (done, never delivered), that gates still apply, no retry and no budget reset, and the exact refusal shape (ok=false, review_requeue_refused, cause_code). This is unusually rich behavioral disclosure.

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-loads the core action, then preconditions, then idempotency and refusal behavior. Information-dense with little waste, though the parameter enumeration is packed tightly into one long sentence.

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

Completeness5/5

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

For a destructive, gated mutation with four required params and an output schema, the description covers prerequisites, side effects, idempotency, and error contract. Nothing an agent needs to call it safely is missing.

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

Parameters5/5

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

With 0% schema coverage, the description fully compensates: task_id must not be an escalation id, expected_head_sha is the exact 40-character head SHA, reason is 1-2000 characters, and request_id is 1-128 chars from a stated charset. Each parameter gains meaning absent from the schema.

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

Purpose5/5

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

States a specific verb and resource with scope: 'Return one blocked task's existing pull request to normal review.' An agent immediately grasps it acts on an existing PR, not a new run, which cleanly separates it from siblings like retry_blocked_task or replan_task.

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 strong preconditions for use (blocked task, own open PR, green/cleanly mergeable, verified DEV run) and rules out retry/budget-reset semantics. It doesn't explicitly name an alternative tool to use instead, so it stops 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.

resolve_escalationResolve EscalationA
Destructive
Inspect

Acknowledge a handled ask only when no blocked task becomes invisible.

`decision_md` is a required short note (why/how it was resolved), appended to
the escalation's detail_md as an audit trail. Resolving a project_pause /
orphan_pause RESUMES the project (clears the pause). A blocked task's final
task_block/operator_action cannot be acknowledged: its typed retry,
platform-policy resolution, replan, close, or supersede operation is the
correct path instead.
The acknowledgement itself is replay-guarded (a repeat changes nothing), but
the call is not idempotent end to end: resuming a paused project lets queued
refinement run, and that refinement can DELETE tasks. Accepts a real
escalation UUID or a synthetic `orphan:<project_id>`.
ParametersJSON Schema
NameRequiredDescriptionDefault
decision_mdYes
escalation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

Even with annotations already declaring destructiveHint=true and idempotentHint=false, the description adds the underlying mechanics: the acknowledgement is replay-guarded but the call is not idempotent end-to-end because resuming a paused project can let queued refinement DELETE tasks. That is high-value behavioral context beyond the structured hints.

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 size is justified by the tool's complexity and each sentence contributes distinct information (precondition, audit note, resume side effect, blocked-task exclusion, idempotency caveat, ID format). It is dense and somewhat run-on, but not padded.

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

Completeness5/5

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

Given an output schema exists (so return values need not be described) plus annotations covering the safety profile, the description covers everything an agent needs: preconditions, the required audit field, side effects on pauses, the exclusion path with alternatives, idempotency behavior, and accepted ID formats.

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

Parameters4/5

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

Schema coverage is 0%, so the description must carry the parameter burden, and it does: decision_md is explained as a required short note appended to the escalation's detail_md as an audit trail, and escalation_id is documented as accepting either a real UUID or a synthetic `orphan:<project_id>`. Format/validation details are still thin, but this is strong compensation for a bare schema.

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

Purpose4/5

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

The description states a specific verb+resource – acknowledging a handled escalation – and distinguishes it from the sibling paths (retry_blocked_task, replan, close, supersede) that must be used for a blocked task's final block. The opening clause ('only when no blocked task becomes invisible') reads as a precondition rather than a plain statement of purpose, so it is slightly less immediately clear than it could be.

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 gives both the when-to-use condition (a handled ask) and an explicit when-not-to-use case with the correct alternatives named: a blocked task's final task_block/operator_action cannot be acknowledged; use retry, platform-policy resolution, replan, close, or supersede instead. This is exactly the routing an agent needs.

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

resolve_platform_policy_conflictResolve Platform Policy ConflictAInspect

Resolve a platform-policy dead-end with a structured plan decision.

``decision`` is one of ``reuse_existing_evidence``, ``split_task``,
``raise_project_cap``, ``remove_scenario``, or
``correct_evidence_selector``. ``raise_project_cap`` also requires
``project_cap`` (6..32). The decision becomes a new task-plan section; the
same task lineage is requeued before the escalation resolves.

``correct_evidence_selector`` (web_app tasks, active workspace owner only;
a workspace key or a non-owner gets ``owner_decision_required``) fixes a
frozen ``ready_selector`` no scenario can prove, such as an interaction
criterion frozen with the selector its static sibling proves at route
load. ``selector_corrections`` maps each acceptance-criterion id (the
``criterion_id`` of a list_escalations ``evidence_selector_cells`` entry)
to ``{"expected_ready_selector": <the frozen value>, "ready_selector":
<replacement>}`` (at most 10). Only those selectors change; a stale
expected value, an invalid selector, a cell left with two selectors, or an
interaction criterion that would still share a static sibling's selector
changes nothing. The old and new specs are audited.

On a project that runs the ui-review evidence lifecycle (``ui-review.json``
is a retained evidence catalog), ``raise_project_cap`` changes the
per-run capture budget -- how many scenarios one capture run holds -- not
catalog capacity: the catalog has no scenario limit, so no decision is
needed to make room in it.

On a ``web_app`` task, ``reuse_existing_evidence`` also repairs a frozen
theme-only collision in the same transaction: criteria whose evidence specs
differ only by a light/dark variant token (for example
``setup-timeline-light`` and ``setup-timeline-dark``) are refrozen to one
shared cell that lists the required ``themes``, the old and new specs are
audited, and the plan tells the worker to cover that cell with one
scenario. Criteria on one route, state and variant that name different
ready selectors are likewise refrozen to one selector. Every criterion
keeps its row and alias; unrelated specs are not changed.
ParametersJSON Schema
NameRequiredDescriptionDefault
decisionYes
decision_mdYes
project_capNo
escalation_idYes
selector_correctionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior5/5

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

Far exceeds what the annotations declare (readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false). It discloses that the decision becomes a new plan section, that lineage is requeued before resolution, the owner_decision_required error token, the audit of old/new specs, precise no-op conditions, and the explicit non-destructive guarantee that unrelated specs and criterion rows are untouched.

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-loads the decision enum and then sections behavior by decision value, which fits the tool's complexity, and most sentences carry required semantics. A few clauses are overly nested (the static-sibling selector case), pushing length beyond what a caller needs on first read.

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

Completeness4/5

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

For a destructive-capable, multi-branch mutation tool with an output schema (so returns need no explanation), the description covers decision effects, prerequisites, error paths, and transactional guarantees thoroughly. The only gap is the semantics of escalation_id and decision_md, which the agent must guess.

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

Parameters4/5

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

With 0% schema description coverage the description must carry the load, and it does for the three complex parameters: it enumerates every decision value, constrains project_cap to 6..32, and fully specifies the selector_corrections nested shape and 10-entry limit. escalation_id and decision_md remain unexplained, so it is not fully complete.

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 (resolve) and resource (platform-policy conflict) and frames the outcome as a structured plan decision, which is more than a restatement of the name. It never explicitly distinguishes itself from the sibling resolve_escalation, so an agent must infer the boundary from the domain jargon.

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 conditional context for each decision value (when project_cap is required, which tasks/paths apply to correct_evidence_selector, owner-only prerequisites) and describes side effects. It stops short of stating when to pick this tool over resolve_escalation or requeue_for_review, leaving the primary routing question unanswered.

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

retry_blocked_taskRetry Blocked TaskAInspect

Grant one fresh attempt after fixing a recovery-budget task block.

``escalation_id`` is the task_block id returned by ``list_escalations``.
Eligibility, tenant, task, failure class, task status, and competing blockers
are all derived server-side. This is distinct from ``resolve_escalation``,
which remains acknowledgement-only for task blocks. Business-level replay guard:
an already-retried block is not retried again; the call is not idempotent end
to end, because an authenticated request also persists credential-use state.
ParametersJSON Schema
NameRequiredDescriptionDefault
decision_mdYes
escalation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the server-side derivation of eligibility/tenant/task/status, the business-level replay guard ('an already-retried block is not retried again'), and the non-idempotency reason (credential-use state persistence). This adds material behavioral context that the structured fields only hint at.

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, then the parameter source, then the sibling distinction and the idempotency caveat. Slightly dense with backtick-heavy naming, but every sentence 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 described. With annotations covering safety and the description covering eligibility, replay behavior, and non-idempotency, the only missing piece is the meaning of decision_md, which is a required parameter.

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 the load, and it documents escalation_id precisely (the task_block id from list_escalations). decision_md is left completely unexplained, which is a real gap for a required parameter.

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 and resource ('Grant one fresh attempt' on a 'recovery-budget task block') and explicitly distinguishes itself from the sibling resolve_escalation. An agent can tell exactly what this retries and why it is not the same as acknowledging an escalation.

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?

Explains that escalation_id comes from list_escalations and contrasts with resolve_escalation ('remains acknowledgement-only'), which gives clear routing for when to use which. It does not spell out preconditions like 'only call after fixing the underlying issue' in explicit when/when-not form, 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.

rollback_roblox_placeRoll Back Roblox PlaceA
Destructive
Inspect

Roll a Roblox project's place back to a previously-published version.

For a `roblox_game` project, re-publishes the RETAINED build artifact for
`version_number` (the web Roblox Publishing card lists published versions)
— it never rebuilds from source, so rollback is fast + deterministic. This
mints a NEW Roblox version pointing at the old build. Unknown version → 404;
a version with no retained artifact → 422; a place open in Studio /
rate-limited → 409 (a retry can succeed); an invalid or unscoped Open Cloud
key → 409 / 403. Returns {version_number, env, published_at, status,
next_step}.
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
version_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations: it explains that the retained build artifact is re-published, that a NEW Roblox version is minted pointing at the old build, and that behavior is fast/deterministic because nothing is rebuilt. It also enumerates failure semantics with retry guidance (404 unknown version, 422 no retained artifact, 409 Studio-open/rate-limit with 'a retry can succeed', 403/409 for invalid or unscoped Open Cloud key), which the destructiveHint/idempotentHint flags alone cannot convey.

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

Conciseness4/5

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

Front-loads the action in the first sentence, then layers behavior and error semantics. Slightly dense in the error-code enumeration, but each clause carries actionable information rather than filler.

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

Completeness5/5

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

Covers prerequisites, mechanism, idempotency implications (new version per call), and full failure taxonomy for a destructive, non-idempotent, open-world operation. Since an output schema exists, the return-value listing is a bonus rather than a necessity.

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. It defines `version_number` concretely (a previously-published version, discoverable in the Roblox Publishing card) and ties `project_id` to a `roblox_game` project. It still does not state the id format (UUID vs slug) or scoping for `project_id`.

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 and resource ('Roll a Roblox project's place back to a previously-published version') with the scope ('previously-published') made explicit. No sibling tool covers version rollback, and the description preempts confusion with rebuild/deploy flows by saying it 'never rebuilds from source'.

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 a clear operating context ('For a `roblox_game` project') and tells the agent where to source `version_number` (the web Roblox Publishing card lists published versions). It does not name an alternative tool or an explicit when-not-to-use condition, but no sibling offers a competing rollback capability.

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

run_control_gap_reviewRun Control Gap ReviewAInspect

Start a source-bound security control gap review for one project.

The review records bounded engineering observations under the user's
selected Cyber Essentials or CMMC Level 1 or Level 2 context. It does not determine framework
standing, and it does not make changes. The `disclaimer_md` field must
reach the user before any observation is summarised.

The project needs a saved framework profile, an eligible plan, and a place
on the operator allowlist. Billable; one review is allowed in flight per
project. Refusals return `ok: false` with a next step and do not start work.
Rate-limited per workspace.
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior5/5

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

Goes well beyond annotations: declares billability, a one-review-in-flight-per-project constraint, per-workspace rate limiting, and the refusal contract (ok: false plus a next step, no work started). It also flags the disclaimer_md output obligation and clarifies that no changes are made, which is consistent with destructiveHint=false; the readOnlyHint=false reflects that it starts a job.

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-loads the core action in the first sentence and then layers constraints, prerequisites, and billing in short paragraphs. Every sentence carries operative information, though the prerequisite/refusal/rate-limit logistics could be tightened slightly.

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

Completeness5/5

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

Since an output schema exists, return values need not be explained, and the description covers what an agent needs to decide and invoke correctly: prerequisites, billable/rate-limit constraints, in-flight limits, refusal behavior, and the disclaimer obligation for the user.

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% for the single project_id parameter, so the description carries the burden; it only implies scope via 'for one project' without naming the parameter or its expected form. It does add the disclaimer_md field context, but that is an output/adjacent field rather than the request parameter.

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 and resource ('Start a ... security control gap review') and scopes it to one project. It clearly distinguishes itself from run_security_review and run_legal_exposure_review by framing the work as framework-context control observations (Cyber Essentials / CMMC L1-L2) rather than a generic security or legal review.

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 lists prerequisites (saved framework profile, eligible plan, allowlist) and states the negative scope ('does not determine framework standing'), which implies usage context. However, it never routes the agent explicitly against the close siblings run_security_review, run_legal_exposure_review, or get_control_gap_findings, so the when-vs-alternative decision 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.

run_security_reviewRun Security ReviewAInspect

Find security problems in a repository: a deep, whole-codebase review.

Spawns a one-shot audit that scans the repo across a kind-aware taxonomy
(secrets + git history, vulnerable/abandoned deps, injection, SSRF, path
traversal, deserialization, crypto, info-leak, plus web authz/session/CORS,
library API-misuse, game client-trust, or infra/CI as applicable) and posts
findings to the project's Security review for human triage. The findings
are reviewed by a human and the ones worth fixing go into the loop as
Requests; no fix is applied automatically. Billable; one audit in-flight
per project.
(Triggering is disabled while the feature is hardened for production: a
project not on the operator allowlist — empty by default — returns a message
instead of spawning; earlier results stay visible.) Requires a paid plan;
a free or trial workspace gets a message telling the user to upgrade.
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond annotations (readOnlyHint=false, destructiveHint=false): discloses the scan taxonomy, that findings are human-triaged and never auto-applied, billable cost, concurrency limit (one in-flight per project), the operator allowlist gating that can return a message instead of running, and the paid-plan requirement. This is rich operational context an agent needs before invoking.

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 with a strong one-line purpose, but the taxonomy enumeration is a lengthy parenthetical list that arguably belongs in docs. The parenthetical caveats (allowlist, paid plan) are useful but push the description toward overload.

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

Completeness5/5

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

For a one-param tool with an output schema, the description covers invocation preconditions (allowlist gating, paid plan, concurrency), side effects (billable, no auto-fix), and result routing (findings to Security review). Nothing essential 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 coverage is 0% and the single parameter (project_id) is undocumented in both description and schema. However, the parameter is a self-evident id given the surrounding narrative. No additional syntax or format guidance is provided beyond the implied project scope.

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 ('Find security problems in a repository') and immediately scopes it as 'a deep, whole-codebase review,' which distinguishes it from the sibling review tools (run_control_gap_review, run_legal_exposure_review) by domain.

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?

Clearly conveys the usage context: one-shot audit whose findings go to human triage, no auto-fix, billable, one in-flight per project. It doesn't explicitly name the sibling review tools as alternatives, but the framing makes the use case unambiguous.

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

set_product_goalSet Product GoalA
Destructive
Inspect

Set the outcome to aim at right now, so work is prioritised toward one thing.

`goal_md` is free-form markdown and must be non-empty. Tenant-scoped: a
project not in the caller's workspace 404s. Returns {project_id,
product_goal_md, updated_at, next_step}.
ParametersJSON Schema
NameRequiredDescriptionDefault
goal_mdYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds non-obvious behavioral details: goal_md must be non-empty, the operation is tenant-scoped, and out-of-workspace projects 404. That is meaningful context beyond the structured data.

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 paragraphs with no filler; the purpose leads and the constraints/return follow. Slight redundancy in restating the return shape when an output schema already exists, but overall tight.

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 mutation with annotations and an output schema present, the description covers the key gaps: the non-empty constraint on the markdown, tenancy scoping, and the 404 failure mode. Return values are redundantly restated despite the output schema, but nothing essential to calling it 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 0%, so the description must carry parameter meaning. It documents goal_md as free-form markdown that must be non-empty, which is genuinely useful, but project_id is left entirely unexplained beyond its self-evident name (no format, id source, or lookup hint).

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 ('Product Goal') and clarifies the semantic intent – the outcome to aim at right now so work is prioritised toward one thing. It does not explicitly name the sibling set_product_vision, which would have made the delineation between goal and vision unambiguous, so it falls short of a 5.

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

Usage Guidelines3/5

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

Usage is implied by 'Set the outcome to aim at right now, so work is prioritised toward one thing,' which tells the agent this is for prioritisation focus. However, there is no explicit when-to-use vs when-not guidance and no mention of the adjacent set_product_vision / get_product_goal siblings that an agent might confuse this with.

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

set_product_visionSet Product VisionA
Destructive
Inspect

Say what this product is for, so every run knows what it is building toward.

`vision_md` is free-form markdown and must be non-empty. Tenant-scoped: a
project not in the caller's workspace 404s. Returns {project_id,
product_vision_md, updated_at, next_step}.
ParametersJSON Schema
NameRequiredDescriptionDefault
vision_mdYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the write semantics are covered structurally. The description usefully adds tenancy behavior (a project outside the caller's workspace returns 404), a validation constraint (vision_md must be non-empty), and the return shape — genuine context beyond the annotations. It stops short of saying whether an existing vision is overwritten, which is the key behavioral question for a destructive, non-idempotent setter.

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 purpose sentence followed by constraints and the return shape; every sentence carries information. Slightly informal and the return-shape line is arguably redundant given the output schema, but there is no padding.

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?

Tenancy, validation, and return values are covered, and the output schema handles the response detail. The remaining gap is meaningful: for a tool annotated destructive and non-idempotent, the description never states whether it replaces an existing vision or how concurrent/duplicate calls behave.

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 the burden and largely does: it defines `vision_md` as free-form markdown that must be non-empty, and describes `project_id` implicitly via the tenant-scoping/404 rule. Both parameters gain meaning not present in the bare string-typed schema.

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

Purpose4/5

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

The description states a clear resource (the product vision) and the effect of the call ('say what this product is for'), and the informal phrasing is backed by the explicit `vision_md` parameter. It does not, however, distinguish itself from the sibling `set_product_goal` or `get_product_vision`, which an agent must infer from the name 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 clause 'so every run knows what it is building toward' implies the reason to set a vision, but there is no explicit when-to-use guidance, no prerequisite, and no statement of how this differs from `set_product_goal`. 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.

set_ui_review_scenario_capSet UI Review Scenario CapAInspect

Set this web_app project's ui-review scenario budget, or reset it.

``scenario_cap`` is an integer from 6 through 32, or ``null`` to reset to
the platform default of 12. The screenshot cap derives from it and moves
with it, so the two can never starve each other.

Raising is always allowed, including from a completely full manifest.
LOWERING is refused when the default branch already declares more scenarios
or screenshots than the smaller budget allows, and is also refused when that
manifest cannot be read — both caps are enforced when keelen pushes and not
in your CI, so an over-cap manifest fails every push while CI stays green.

On a project with the retained evidence catalog (the response carries
``evidence_lifecycle: true``) the same parameter is a CAPTURE-RUN setting:
it limits how many scenarios and screenshots one capture run holds, a pull
request that needs more is split into capture batches, and the catalog
keeps every scenario whatever the value. The response then also reports
``catalog`` (the retained counts) separately from ``run_limits``, and a
lower is not refused for catalog size once the catalog is migrated.

``project_status.ui_review`` reports the live occupancy. Repeated calls with
the same value change nothing.
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes
scenario_capNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

With only coarse hint flags available, the description carries real behavioral load: refusal semantics for lowering, the fact that both caps are enforced when keelen pushes and not in CI, the derived screenshot cap that moves in lockstep, and the alternate capture-run semantics when evidence_lifecycle is true (PRs split into capture batches, catalog retained regardless, lower not refused post-migration). It also states that repeated same-value calls change nothing. This is substantially more than the annotations convey.

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

Conciseness4/5

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

Front-loaded with the core operation, and each paragraph covers a distinct regime (budget cap, catalog capture-run cap, idempotency). It is dense rather than padded, but the third paragraph is long and leans on unexplained internal jargon such as 'keelen pushes', which costs some readability.

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

Completeness5/5

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

Despite the tool's genuinely complex behavior, the description covers allowed values, reset semantics, refusal conditions, enforcement point, the two operating modes, and even the response fields (evidence_lifecycle, catalog, run_limits, project_status.ui_review) beyond what the output schema provides. Nothing an agent needs to call it correctly is missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate, and it does: scenario_cap is an integer from 6 through 32, null resets to the platform default of 12, the screenshot cap derives from it, and its meaning changes to a capture-run limit on catalog projects. The default/sentinel semantics are fully spelled out where the schema gives only an anyOf integer/null.

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 first sentence names a specific verb (set/reset) and a precisely scoped resource (this web_app project's ui-review scenario budget). No sibling tool overlaps with this resource, so an agent can select it unambiguously 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 Guidelines4/5

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

It gives explicit operating conditions: raising is always allowed, lowering is refused when the default branch already exceeds the smaller budget or the manifest cannot be read, and the cap is enforced on push rather than in CI. It even points to project_status.ui_review for live occupancy. It does not (and need not) compare against sibling tools, but there is no explicit 'use this instead of X' routing.

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

signupCreate Account or Log InA
Destructive
Inspect

Create a Keelen account (or start agent login) — emails a 6-digit code.

UNAUTHENTICATED — the only tool besides verify_email that works before a
bearer key is configured. `email` is where the code is sent. Flow:
signup(email) -> the user reads the 6-digit code from their inbox ->
verify_email(email, code) returns a reveal-once API key, stored as this
server's `Authorization: Bearer <api_key>` header in the MCP client config;
reconnecting the client and calling get_onboarding_status() then continues
setup. The code expires in 15 minutes; a repeat signup resends it. Response
is uniform whether or not the email already has an account
(enumeration-safe), so signup doubles as agent LOGIN. Rate-limited per IP
and per email.

The `email` must be explicitly provided and confirmed by the user in chat
before this call. It is not inferred from a client profile, the logged-in
account, git config, or any other ambient source; a candidate address the
caller already holds is echoed back for an explicit yes first. Because this
call doubles as LOGIN, a guessed address signs the user in to whatever
workspace owns it, and the rest of setup then mints an API key on, and
creates a project in, an account they did not choose.
ParametersJSON Schema
NameRequiredDescriptionDefault
emailYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations (destructiveHint=true, openWorldHint=true, idempotentHint=false). It discloses the 15-minute code expiry, that a repeat signup resends, that responses are enumeration-safe/uniform, that it is rate-limited per IP and per email, and warns that a guessed address signs the user into another account. This is exactly the extra behavioral 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.

Conciseness4/5

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

Front-loaded with the core purpose and the flow, and nearly every sentence earns its place given the destructive/login semantics. There is some redundancy between the 'explicitly confirmed' paragraph and the final warning about a guessed address, which keeps it from a 5.

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

Completeness5/5

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

An output schema exists, so return-value explanation is not required, and the single param plus auth state, flow, prerequisites, expiration, and rate limits are all covered. Nothing an agent needs to invoke this correctly 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 coverage is 0% for the single `email` parameter, so the description must carry the load — and it does: it explains that email is where the code is sent, that it must be explicitly provided and user-confirmed, and that it must not be inferred from client/git/ambient sources. It does not add format syntax, but semantic meaning is well covered.

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

Purpose5/5

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

The description opens with a specific verb+resource ('Create a Keelen account ... emails a 6-digit code') and immediately frames the dual role as login. It distinguishes itself from siblings by declaring it is one of only two unauthenticated tools and by naming verify_email as its flow partner, so an agent can separate it from the many authenticated tools without opening a 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?

Explicit when-to-use: 'UNAUTHENTICATED — the only tool besides verify_email that works before a bearer key is configured.' It lays out the exact call sequence (signup -> verify_email -> get_onboarding_status) and states the precondition that email must be user-confirmed before calling. Alternatives are named rather than left to inference.

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

stop_iterationStop Running IterationA
Destructive
Inspect

Stop one running iteration after confirmed runtime cleanup.

Requires a personal active workspace owner. Workspace keys and Portfolio delegation cannot stop compute. The exact project iteration number binds the runtime. Cleanup failure leaves it active; a busy subject is refused. Confirmed cleanup finalizes unfinished runtime iterations, holds its legacy tasks for owner close or replan and records the owner and reason. It grants no delivery, retry or merge authority. A repeat returns the same receipt.

ParametersJSON Schema
NameRequiredDescriptionDefault
iter_nYes
reasonYes
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With annotations already covering readOnly=false, destructive=true and openWorld=true, the description still adds auth requirements, failure semantics (cleanup failure leaves it active, busy subject refused), side effects (finalizes unfinished runtime iterations, holds legacy tasks, records owner/reason) and authority boundaries. The claim that 'a repeat returns the same receipt' sits in mild tension with idempotentHint=false, though it describes response behavior rather than effect-level idempotency.

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 sentence one and every subsequent sentence carries substantive information (preconditions, failure modes, authority limits) rather than filler. The second paragraph is a dense run-on sentence with heavy jargon ('binds the runtime', 'busy subject'), which costs some parsability.

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?

Return values need not be explained since an output schema exists, and annotations cover the safety profile. For a destructive mutation the description supplies preconditions, failure behavior, side effects and authority boundaries, leaving only the precise mechanics of what 'cleanup' performs and project_id's role underspecified.

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% - parameters carry only bare titles. The description partially compensates by explaining that the exact project iteration number binds the runtime and that the reason is recorded against the owner. project_id receives no explanation at all, so the compensation is incomplete for three undocumented required 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 opening sentence gives a specific verb (stop), resource (one running iteration) and scope qualifier (after confirmed runtime cleanup). It is clearly distinct from siblings like close_task, replan_task or cancel_roadmap_item. However, it never names an alternative tool, so sibling differentiation must be inferred from domain knowledge rather than 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 Guidelines4/5

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

Preconditions and exclusions are stated explicitly: a personal active workspace owner is required, and workspace keys/Portfolio delegation cannot stop compute, plus a busy subject is refused. This is real when-to-use guidance, but no alternative tool is named for the cases it excludes, so it stops short of full routing guidance.

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

submit_requestSubmit RequestAInspect

Ask for a change in plain English: a feature, a bug fix, or a new direction.

Each call carries ONE feature or intent; a multi-feature ask belongs in
separate requests. `text` must be under 16000 characters. Returns
{thread_id, status, next_action, poll_after_seconds, next_step}; next_step
names the re-check of get_request_status after poll_after_seconds.
ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
project_idYes
workflow_profileNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare this is a non-read-only, non-idempotent, open-world write. The description adds value beyond them: a 16000-character limit on text and a disclosure of the return shape (thread_id, status, next_action, poll_after_seconds, next_step) plus the polling handoff to get_request_status. It doesn't note auth requirements or idempotency nuance, but the added operational detail is meaningful.

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-loads the purpose, then the per-call constraint, then the return contract. Three short sentences, each carrying distinct information, with no filler. Slightly dense in the final return-value clause but well organized overall.

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 write tool with annotations covering the safety profile and an output schema present, the description is nearly complete: it covers purpose, the one-intent rule, the size limit, and the polling next step. The only gap is the semantics of workflow_profile, which nothing documents.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate, and it only partly does. It clarifies the `text` constraint (<16000 chars) but leaves project_id and especially the optional workflow_profile entirely unexplained. The constraint on text is genuinely useful, but half the parameters remain 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 and resource set: 'Ask for a change... a feature, a bug fix, or a new direction.' An agent immediately understands this is the entry point for submitting work. It references get_request_status as the follow-up, but doesn't explicitly differentiate itself from siblings like refine_request or answer_request.

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

Usage Guidelines3/5

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

Gives a real usage constraint ('Each call carries ONE feature or intent; a multi-feature ask belongs in separate requests'), which helps shape invocation. However, there is no explicit when-to-use vs. when-not-to-use against alternatives such as refine_request, so guidance is implied rather than fully specified.

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

verify_emailVerify EmailA
Destructive
Inspect

Redeem the emailed 6-digit code for a reveal-once workspace API key.

UNAUTHENTICATED. `email` + `code` must match a code issued by signup(email)
within the last 15 minutes (5 attempts max). The returned `api_key` is shown
exactly ONCE — store it ONLY in the MCP client config
("Authorization: Bearer <api_key>"), NEVER in a repo or a file you might
commit. Reconnecting this server with the header set and calling
get_onboarding_status() continues setup. An invalid/expired/consumed code
returns a uniform error; a fresh code comes from signup(email).
ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
emailYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnly=false, destructive=true, idempotent=false) by disclosing that the call is UNAUTHENTICATED, that the code expires in 15 minutes, that only 5 attempts are allowed, that the api_key is revealed exactly ONCE, and that invalid/expired/consumed codes return a uniform error. This is rich, operationally critical context the 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.

Conciseness5/5

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

Front-loads the core action and the reveal-once key, then layers auth state, validation constraints, the security warning, and the continuation workflow. Sentences are dense but none are redundant or restate the schema, so every line earns its place.

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

Completeness5/5

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

With an output schema present, return-value documentation is unnecessary, and the description covers the remaining gaps: auth status, expiry/attempt limits, security handling of the key, error behavior, and the next step in the flow. Nothing an agent needs to invoke this correctly 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. It specifies that `code` is a 6-digit emailed code and that `email` + `code` must match a code issued by signup(email) within 15 minutes, which meaningfully constrains both parameters. Minor gap: no explicit format expectations for the email string (e.g., verified-address requirements), so a small amount of semantics is left implicit.

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 (Redeem) and resource (emailed 6-digit code) and names the exact output produced (reveal-once workspace API key). It distinguishes itself from sibling signup (which issues the code) and get_onboarding_status (which continues setup) without the agent needing to open any 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?

Gives explicit prerequisites (email + code must match a code issued by signup(email) within the last 15 minutes, 5 attempts max), names the follow-up call get_onboarding_status() to continue setup, and tells the agent how to get a fresh code when one is invalid/expired/consumed. When-to-use and alternatives are fully covered.

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. 1 tool update
    • Changedresolve_platform_policy_conflict1 field changed
      • addedInput schema / properties / selector_corrections
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {
        +        "additionalProperties": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Selector Corrections"
        +}
  2. 1 tool update
    • Addedrequeue_for_review
  3. 1 tool update
    • Addedstop_iteration
  4. 1 tool update
    • Addedproject_digest
  5. 1 tool update
    • Changedsubmit_request1 field changed
      • addedInput schema / properties / workflow_profile
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Workflow Profile"
        +}
  6. 1 tool update
    • Addedset_ui_review_scenario_cap

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables users working inside Claude or ChatGPT to build software end to end, executing every command, test, and health check in an isolated cloud sandbox so progress is blocked unless each step is proven by real output, and finishing with a live public preview URL. It also lets sessions checkpoint and restore risky fixes, with access unlocked by a Stripe Checkout purchase.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Automates DevOps workflows like vulnerability resolution, code review, test generation, and DORA metrics through Claude Code slash commands, using a state machine for reliable execution.
    13 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.