MCP server exposing native model-side tools for the /goal persistent-objective and cowork system.
Server has 5 tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. Tool names follow verb_noun convention (create_goal, update_goal, get_goal, claim_lane, release_lane), which is good. However, descriptions are minimal (10-50 chars), parameter descriptions lack detail about constraints and formats, and output schemas are not documented. No error handling guidance visible. Schemas present but incomplete, missing type constraints, enums, and validation rules. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear WRITE/READ_ONLY risk classifications.
Claim a file-path lane lease for exclusive access to a glob pattern with TTL and heartbeat-based expiry
Create a new goal with an objective and optional token budget
Retrieve current goal state with computed remaining tokens and elapsed seconds
Release a previously claimed lane lease by lease ID
Update goal status to mark as complete or perform other state transitions
Descriptions are too brief (10-50 chars) and lack context for LLM tool selection. 'Update goal status to mark as complete or perform other state transitions' does not explain WHEN to use this vs other tools, what state transitions are valid, or what the return value contains.
Parameter descriptions are missing or generic. 'status' in update_goal lacks enum values or valid options (e.g., 'complete', 'paused', 'pursuing'). 'glob' in claim_lane lacks format guidance (is it a minimatch pattern? glob2 syntax?). LLMs cannot infer valid values without explicit constraints.
Output schemas are not documented. Tools return structured data (goal state, lease ID, remaining tokens) but the response format is not visible in the source. LLMs cannot plan downstream calls without knowing what fields to expect.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
No tool annotations despite clear risk classifications. create_goal and update_goal are marked WRITE but lack destructiveHint. get_goal is READ_ONLY but lacks readOnlyHint. claim_lane and release_lane are WRITE but lack idempotentHint guidance. Annotations help LLMs reason about retry safety and side effects.
No error handling guidance visible. If create_goal fails because a goal already exists, or claim_lane fails because the glob pattern is invalid, the tool does not indicate what the LLM should do next (retry, ask user, try alternative). Error responses must guide recovery.