mdflow MCP Server
This MCP server provides a context and workflow management layer for AI coding agents, enabling project mapping, plan tracking, code streaming, verification, and safe changes.
Register an existing directory as an mdflow project
Read compact project maps with architecture coverage, plans, chains, and checkpoint status
Stream targeted code slices along architectural chains (saves ~90% tokens)
Sanitize build, test, and terminal outputs
Create and manage blocks, links, chains, plans, and decisions
Open detailed entity context for blocks, chains, links, plans, and decisions
Apply atomic, reversible change sets and revert updates safely
Record and track verification checkpoints (passed, failed, blocked, etc.)
Search entities by query, kind, and state
Sync the unified project timeline and update active steps
Suggest or create high-confidence architecture links based on AST imports
Use batch operations and patch updates for efficient multi-entity changes
Supports configuring Google Antigravity to use mdflow's architecture graph, task-scoped code context, and verified/rollback-safe code mutation workflows.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mdflow MCP Servergive me context for the current task and its validation status"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
1. Abstract & Problem Statement
Modern AI coding agents (Claude Code, Cursor, Windsurf, Codex, Devin) encounter a structural bottleneck when scaled to medium-to-large software repositories: Context Window Saturation and Architectural Entropy.
Flat Context Inefficiency: Conventional agents indiscriminately ingest thousands of lines of raw source files to inspect individual methods. Over 85–95% of the attention budget is expended on boilerplate imports, formatting, and unrelated helper routines.
Cross-Session Topological Drift: Because context windows flush between prompts, agents lose the system's global architectural invariants. Decisions made in session A are violated in session B, generating cyclic regressions and architectural decay.
Unverified Mutations: Agents assert completion based on probabilistic self-assessment rather than deterministic evidence closure, bypassing integration contracts and test verification gates.
ContextOS solves this by establishing a dual-plane operating system:
The Spatial Canvas (Developer Interface): A native macOS SwiftUI workspace that projects software systems into interactive architectural blocks, directed dependency chains, and verification gates.
The Cognitive Plane (Agent Interface): A Model Context Protocol (MCP) server that delivers task-sliced AST symbol facades (
path::symbol), enforces strict token budgets, and manages cryptographic test execution receipts.
Related MCP server: engrams
2. Primary Distribution: Native macOS Spatial Workspace
ContextOS is primarily designed and distributed as a native macOS application built with SwiftUI, Metal rendering, and embedded SQLite caching.
Native Workspace Capabilities:
Spatial Topology Engine: Compact orthogonal dependency routing keeps complex architectures with 50+ modules readable and navigable.
Ghost-to-Solid Lifecycle: Formulate new features as Ghost Blueprints before code exists; progressively anchor blocks to real AST symbols as implementations land.
Verification Gate Ledgers: Live Checkpoint status indicators (e.g.
13/13 100% Passed) backed by concrete test cases and compiler receipts.Visual Impact Tracing: Double-click any block or chain to illuminate one-hop dependencies, upstream callers, and downstream side-effects.
In-App Protocol Dispatch: One-click registration and bundle synchronization for Codex, Cursor, Windsurf, and Claude Desktop.
📥 Download Native App
Download the standalone application package directly from GitHub Releases:
ContextOS for macOS (ContextOS-macos.zip)
(Requires macOS 14.0+. Distributed as a clean.zipapplication bundle — zero DMG translocation anomalies).
3. Empirical Benchmarks
The following results were measured directly on a real-world repository (54 Architectural Blocks, 8 Chains, 80 Directed Links, 19 Checkpoints) using the reproducible benchmark suite (npm run benchmark):
Evaluation Dimension | Baseline (Conventional File Ingestion) | ContextOS (AST Task Slice) | Empirical Delta |
Task Context Window | 689,403 chars (~183,571 tokens) | 3,993 chars (~1,125 tokens) | 99.4% Token Reduction |
4-Module Execution Chain | 139,247 chars (~34,812 tokens) | 2,056 chars (~530 tokens) | 98.5% Token Reduction |
Terminal Log Diagnostics | 16,083 chars (~4,042 tokens) | 826 chars (~211 tokens) | 94.8% Compression |
Context Retrieval Latency | Sequential File Traversal | 29.68 ms (P50) | Sub-30ms Instant Lookup |
Topological Drift & Recall | High Hallucination Risk | 100% Target Module Recall | Zero Architectural Drift |
To reproduce these metrics locally on your own machine:
npm run benchmark4. Headless & Cross-Platform CLI
For headless CI/CD pipelines, remote servers, Windows, Linux, or users who do not require the visual desktop application, ContextOS runs headlessly via Node.js (≥22):
# 1. Initialize and automatically scan existing codebase topology
npx -y github:yubinbin32-ops/ContextOS init --scan
# 2. Inspect project architecture health, sync state, and verification gates
npx -y github:yubinbin32-ops/ContextOS status
# 3. Configure local MCP client integrations
npx -y github:yubinbin32-ops/ContextOS setup5. Architectural Principles & Operational Closed Loop
flowchart LR
Human["Developer\nNative Spatial Canvas"] <--> Plaintext[".contextos/graph.json\nGit-Tracked Truth"]
Plaintext <--> Engine["Local SQLite Cache\nContext Engine"]
Engine --> Slice["AST-Sliced Task Context\n(path::symbol locators)"]
Slice --> Agent["AI Coding Agent\n(via MCP)"]
Agent --> Evidence["Test Execution Receipt"]
Evidence --> Gate{"Verification Gate"}
Gate -->|Passed| Plaintext
Gate -->|Failed| Alert["Drift Warning & Retest"]1. AST Symbol Locators (path::symbol)
Instead of flooding the LLM context with full file dumps, ContextOS returns compact locators: target path, symbol signature, derived line boundaries, and interface contracts. The host editor opens only the target method.
2. Git-Native Plaintext Truth (graph.json)
The durable source of truth is a formatted, deterministic JSON file (.contextos/graph.json) versioned in Git alongside source code. A git checkout or git revert simultaneously restores code and architecture. An embedded SQLite engine provides zero-latency indexed queries with zero external runtime npm dependencies.
3. Receipt-Backed Checkpoints & Freshness Gating
Completion states cannot be asserted by AI declaration. They require execution receipts (npm test, compiler diagnostics) logged through run_command and bound via checkpoint_record. Any modification to bound source code automatically transitions dependent checkpoints to retest_required.
4. Terminal Log Sanitization
The command gateway intercepts terminal execution, strips ANSI sequences and progress bars, redacts local paths and secrets, and condenses repetitive logs into structured diagnostic summaries (94.8% token compression).
6. IDE & Agent Integration
ContextOS integrates natively via standard stdio Model Context Protocol (MCP).
Configuration for Cursor, Windsurf, Claude Code, & Codex
Add to your MCP configuration file (e.g. ~/.cursor/mcp.json or claude_desktop_config.json):
{
"mcpServers": {
"contextos": {
"command": "npx",
"args": ["-y", "github:yubinbin32-ops/ContextOS", "serve"]
}
}
}Or point directly to the bundled standalone engine:
{
"mcpServers": {
"contextos": {
"command": "node",
"args": ["/absolute/path/to/contextos-mcp.mjs"],
"env": {
"CONTEXTOS_PROJECT_ROOT": "${workspaceFolder}"
}
}
}
}7. Local Development & Verification
ContextOS is built with zero external runtime npm dependencies:
# Clone the repository
git clone https://github.com/yubinbin32-ops/ContextOS.git && cd ContextOS
# Install build dependencies
npm ci
# Run the 55-test verification suite
npm test
# Run the empirical benchmark suite
npm run benchmark
# Build the MCP bundled server
npm run plugin:build
# Verify MCP protocol handshake & tool surface
npm run plugin:verify
# Build the native macOS desktop application
npm run desktop:build8. License & Status
ContextOS is an open-source project distributed under the MIT License. Contributions, benchmark validations, and feature requests are welcome.
© 2026 ContextOS Contributors.
Available Tools
32 toolsarchitecture_connectC
Connect two architecture Blocks with a validated Link in one simple call without crafting manual operations.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | calls | |
| actor | No | ||
| label | No | ||
| reason | No | ||
| contract | No | ||
| sourceId | Yes | ||
| targetId | Yes | ||
| projectRoot | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral disclosure burden. It only says the link is 'validated' and avoids 'manual operations,' but gives no details about side effects, failure modes, permissions, or what happens to existing links.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence and front-loads the core purpose. Minor marketing phrasing like 'in one simple call' could be trimmed, but the structure is economical overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 10 parameters, no annotations, and no output schema, this description is severely incomplete. It explains neither the validation behavior nor the roles of required and optional parameters, leaving an agent with too little to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds no parameter-level meaning. It never mentions sourceId, targetId, kind, label, or any other parameter, leaving all 10 parameters semantically unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: connecting two architecture Blocks via a validated Link. It also hints at differentiation by noting this avoids manual operations, though it does not explicitly compare itself to sibling tools like graph_mutate or architecture_link_suggest.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating a validated link between Blocks rather than manually crafting graph mutations. However, it does not state when not to use it or name an alternative tool, leaving some ambiguity among a large sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
architecture_link_suggestA
Suggest high-confidence architectural links for an architecture Block based on AST source imports and layered conventions.
| Name | Required | Description | Default |
|---|---|---|---|
| blockId | Yes | ||
| projectRoot | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. 'Suggest' and 'based on AST source imports' imply a read-only analysis, but the description never explicitly states that no graph or architecture mutations occur, nor does it mention permissions, side effects, or whether it requires local source files through projectRoot.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It states the action, target, and basis efficiently, making it easy for an agent to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose but is incomplete for confident invocation. There is no output schema, no parameter explanations, no mention of what the returned 'links' look like, no guidance on optional parameters, and no clarification of whether the tool modifies anything. An agent would struggle to know how to use taskContextId or includeStructured effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description names none of the four parameters. It implicitly maps to blockId via 'architecture Block' and hints at projectRoot through 'AST source imports', but it does not explain taskContextId or includeStructured. The description fails to compensate for the schema's complete lack of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'suggest' and identifies the resource ('architectural links for an architecture Block') plus the method ('based on AST source imports and layered conventions'). This clearly differentiates it from siblings like architecture_connect, which would actually apply or connect links rather than merely suggest them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when the agent wants candidate architectural links derived from source imports and layering rules. However, it does not explicitly state when not to use it, what alternatives exist, or how it differs from graph_patch, graph_mutate, or architecture_connect beyond the word 'suggest.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
block_code_mutateB
Replace one already-bound AST symbol body. Not a general editor: new files, new symbols, tests, and multi-file edits should use the host editor, then source_sync and source_binding_accept.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | ||
| blockId | Yes | ||
| newCode | Yes | ||
| projectRoot | No | ||
| taskContextId | No | ||
| verifyCommand | Yes | ||
| includeStructured | No | ||
| expectedSourceHash | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the core action ('replace an already-bound AST symbol body') and the exclusion, but does not mention side effects, destructive nature, verification requirements, or any preconditions beyond 'already-bound.' For a mutation tool, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the purpose, and the exclusion is placed second. It is efficient with no wasted words. However, it could include a few more useful details without becoming bloated, so it's not a perfect 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, 4 required, no output schema, no annotations), the description is incomplete. It does not explain the purpose of verifyCommand, expectedSourceHash, or what happens after replacement. It hints at the 'already-bound' precondition but omits critical execution context, making it insufficient for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no explanation of any of the 8 parameters (blockId, symbol, newCode, verifyCommand, etc.). It mentions 'symbol body' but does not map to any parameter or clarify the role of required fields like verifyCommand or expectedSourceHash. The description fails to compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Replace one already-bound AST symbol body.' It further distinguishes itself by explicitly naming what it is not ('Not a general editor') and routing new symbols, tests, and multi-file edits elsewhere. This makes it clear what this tool does and how it differs from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-not-to-use guidance: 'Not a general editor: new files, new symbols, tests, and multi-file edits should use the host editor, then source_sync and source_binding_accept.' It names the alternatives and conditions, leaving no ambiguity about when to choose this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
block_sealA
Seal a verified Block implementation as complete. Requires valid current SourceBindings and a fresh passed direct Checkpoint; an executionId, when supplied, must be a successful receipt cited by that Checkpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | No | ||
| reason | No | ||
| blockId | Yes | ||
| executionId | No | ||
| projectRoot | No | ||
| checkpointId | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses prerequisites and validates inputs, implying a state-change operation (sealing) that requires verification. However, it does not detail what happens on failure (e.g., if Checkpoint is not fresh), whether the operation is reversible, or what the response looks like. This is moderate transparency for a state-changing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at one sentence, but it is densely packed with conditional requirements, making it slightly hard to parse on first read. It front-loads the action and prerequisites, but the syntax is complex. Still, every phrase carries meaning without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high parameter count and zero schema coverage, the description is insufficiently complete. It explains the core purpose and prerequisites, but leaves many parameters undefined and doesn't mention failure modes or side effects, which would be critical for a sealing operation that likely finalizes a state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all 8 parameters, but it only explains the semantics of blockId (implied), executionId (must be a successful receipt), and checkpointId (implied by 'that Checkpoint'). It does not clarify the purpose of actor, reason, projectRoot, taskContextId, or includeStructured, leaving agents to guess or infer.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Seal') and the resource ('a verified Block implementation'), and it specifies the completion criteria (valid SourceBindings and a fresh passed Checkpoint). It is distinct from siblings like block_code_mutate or checkpoint_record because it focuses on sealing after verification, not mutating or recording.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the conditions for when this tool should be used: when there are valid Current SourceBindings and a passed Checkpoint. It also clarifies the requirement for executionId to be a successful receipt cited by that Checkpoint, which helps an agent decide if it meets prerequisites. While it doesn't name alternatives, the specific conditions provide clear usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chain_code_streamB
Extract a contract-first stream along an architectural Chain. The default returns symbols, signatures, source status, line ranges, and contracts; use mode=slice only for an explicit bounded implementation slice.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | contract | |
| chainId | Yes | ||
| projectRoot | No | ||
| maxTotalChars | No | ||
| taskContextId | No | ||
| includeStructured | No | ||
| maxLinesPerSymbol | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It explains the default return content and restricts mode=slice, which is useful. However, it does not mention side effects, read-only status, output format, or how the limit-related parameters affect behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler; the main action is front-loaded, the default behavior is summarized, and the mode caveat is placed last. Every sentence contributes information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 parameters, no output schema, and no annotations, the description is too sparse to fully prepare an agent. It misses the meaning of most parameters, any prerequisites, and the shape/limits of the returned stream, making it only partially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for 7 parameters. It only clarifies the mode enum distinction (contract vs slice) and leave chainId, projectRoot, maxTotalChars, taskContextId, includeStructured, and maxLinesPerSymbol unexplained. Most parameters depend entirely on their schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Extract') and names a concrete resource ('contract-first stream along an architectural Chain'), with a list of what the default returns. It is clearly about retrieving code/contract information and is distinct from general graph or planning tools, though it does not explicitly name a sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives usage guidance within the tool by distinguishing default contract mode from slice mode, but it does not explain when to choose this tool over siblings like project_map, graph_flow, or architecture_link_suggest. The context for using chain_code_stream is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
change_set_revertB
Create a new reverse ChangeSet for a safe, fully reversible update-only ChangeSet. Original History is preserved; stale or unsupported changes are rejected instead of partially reverted.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | ||
| actor | No | ||
| planId | No | ||
| reason | No | ||
| gitHead | No | ||
| changeSetId | Yes | ||
| projectRoot | No | ||
| chainScopeId | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It discloses that original history is preserved, that the operation is reversible, and that stale or unsupported changes are rejected rather than partially reverted. This gives meaningful safety and failure semantics, though it does not detail all side effects or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core action, followed by important safety guarantees. Both sentences add value, and there is no filler or repetition of schema field names. It earns a 4 because it is concise, though a bit more context would be welcome.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 10 parameters, no output schema, and no annotations, a two-sentence description is not sufficient for reliable invocation. The description covers high-level intent and safety but omits parameter roles, return behavior, and usage context. An agent would likely need additional documentation or examples to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage and 10 parameters, so the description must compensate. It loosely implies the target is a ChangeSet and that only update-only changes are appropriate, but it does not explain the required changeSetId, the optional context fields, or any parameter behavior. Most parameters like task, actor, planId, reason, gitHead, projectRoot, chainScopeId, and taskContextId remain completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action: create a new reverse ChangeSet to revert a ChangeSet. It also adds safety and scope qualifiers ('safe, fully reversible update-only ChangeSet', 'rejected instead of partially reverted'), which clarify the intended operation. It does not explicitly differentiate against sibling tools, but the action and resource are specific enough for basic identification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for a safe, fully reversible update-only ChangeSet' implies when the tool is appropriate, and 'stale or unsupported changes are rejected' implies a boundary condition. However, it does not explicitly state when to use this tool versus alternatives, nor does it name any sibling tool or give exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
changes_sinceB
Read only graph/checkpoint mutations after a known change sequence. Use this for live synchronization and compact read-back instead of reloading the project.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| sequence | No | ||
| projectRoot | No | ||
| taskContextId | No | ||
| includeStructured | No | ||
| sourceSyncRevision | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It does explicitly state 'Read only,' which clarifies the safe mutation profile. It also implies incremental behavior via 'after a known change sequence.' However, it does not disclose response format, pagination/limit behavior, error conditions, or what 'mutations' includes, leaving notable gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. The operation is stated first, followed by the usage context. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a 6-parameter tool with no output schema and no annotations, yet the description only provides a high-level use case and one parameter hint. It doesn't explain which parameters are needed for common scenarios, what the return payload looks like, or how 'known change sequence' maps to the sequence field. The agent would struggle to invoke it correctly based solely on this description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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, but it barely does. The phrase 'after a known change sequence' hints at the 'sequence' parameter, but the other five parameters (limit, projectRoot, taskContextId, includeStructured, sourceSyncRevision) receive no explanation. This is insufficient for an agent to confidently supply correct parameter values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Read only graph/checkpoint mutations after a known change sequence.' This makes the core operation understandable. However, it does not explicitly name or differentiate from any sibling tool, only contrasting with 'reloading the project' rather than a specific sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives explicit usage context: 'Use this for live synchronization and compact read-back instead of reloading the project.' This tells the agent when to choose this tool. It stops short of a full 5 because it doesn't mention when not to use it or explicitly compare with siblings like source_sync or timeline_sync.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
checkpoint_listB
List checkpoints by status, target, Plan or ChainScope, including standalone checkpoints that are not referenced by any Plan. Use this for a compact verification inbox instead of opening every entity.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| locale | No | ||
| planId | No | ||
| status | No | ||
| targetId | No | ||
| targetType | No | ||
| projectRoot | No | ||
| chainScopeId | No | ||
| taskContextId | No | ||
| unassignedOnly | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that standalone checkpoints are included by default, which is a useful behavioral detail, and 'List' implies a read-only operation. However, it does not mention pagination, ordering, default filter behavior, or output structure, leaving some uncertainty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. It front-loads the core action and resource, then adds a practical use case. Every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a moderately complex tool with 11 optional parameters, no output schema, and no annotations. The description conveys the basic purpose and one inclusion behavior but does not explain the remaining filter semantics, return shape, or defaults. An agent could make a basic call, but would struggle to use the tool confidently for targeted verification workflows.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for 11 parameters. It adds meaning for status, target, Plan, and ChainScope filters, but leaves many parameters such as limit, locale, projectRoot, taskContextId, unassignedOnly, and includeStructured entirely unexplained. The compensation is only partial and insufficient for full correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists checkpoints, a specific resource, and identifies key filtering dimensions: status, target, Plan, and ChainScope. The added note about including standalone checkpoints not referenced by any Plan clarifies an important inclusion edge case, making the purpose specific and useful.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this for a compact verification inbox and contrasts it with opening every entity, giving clear context for when it is appropriate. It does not name a sibling alternative like checkpoint_record, but the use-case guidance is direct and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
checkpoint_recordC
Create or update a checkpoint with evidence. Passed checkpoints are the only basis for healthy completion states.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| actor | No | ||
| title | Yes | ||
| planId | No | ||
| status | Yes | ||
| gitHead | No | ||
| coverage | No | ||
| criteria | No | ||
| evidence | No | ||
| targetId | Yes | ||
| targetType | Yes | ||
| projectRoot | No | ||
| chainScopeId | No | ||
| evidenceLevel | No | ||
| invalidatedAt | No | ||
| taskContextId | No | ||
| checkpointKind | No | ||
| expectedRevision | No | ||
| aggregationPolicy | No | ||
| includeStructured | No | ||
| evidenceExecutionIds | No | ||
| eligibleAfterChildren | No | ||
| requiredEvidenceLevel | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Create or update' discloses an upsert mutation, and 'with evidence' hints at a requirement. But for a tool with 23 parameters, complex behavior is undisclosed: optimistic concurrency (expectedRevision), invalidation semantics (invalidatedAt), aggregation behavior (aggregationPolicy), and evidence-level requirements (requiredEvidenceLevel) are all silently present in the schema yet never surfaced in the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler — efficient and front-loaded with the action. However, the concision comes at the cost of substance: the second sentence ('Passed checkpoints are the only basis for healthy completion states') conveys philosophy rather than actionable behavior. For a tool with this parameter count, the brevity reflects under-specification rather than disciplined pruning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Completely inadequate for the tool's complexity: 23 parameters, nested objects (evidence, aggregationPolicy), six enums, and no output schema. The agent is left without knowledge of the status enum semantics, targetType meaning, checkpointKind distinctions, or the return format. Nothing in the description compensates for the absence of an output schema or the massive parameter surface.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 barely does. It maps to only two parameters: 'evidence' (the evidence array) and 'passed' (a status enum value). The other 21 parameters, including required targetType, targetId, title, and the six enums, receive no clarification. The description adds marginal value over the schema for a tool that badly needs it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource: 'Create or update a checkpoint with evidence.' This distinguishes it from sibling checkpoint_list (listing) and checkpoint_refresh_candidates (refreshing candidates). The second sentence adds useful domain significance about passed checkpoints. However, it doesn't explicitly differentiate itself from the other checkpoint siblings by name or scoping condition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus checkpoint_list or checkpoint_refresh_candidates. No alternatives are named, and no exclusions or preconditions are given. The 'passed checkpoints are the only basis' sentence hints at domain semantics but doesn't tell the agent when to record a checkpoint versus read candidates or list checkpoints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
checkpoint_refresh_candidatesB
List stale checkpoints that a recorded execution receipt can refresh. Does not auto-pass checkpoints; it only maps changed bindings onto retest_required items.
| Name | Required | Description | Default |
|---|---|---|---|
| executionId | No | ||
| projectRoot | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It discloses that it does not auto-pass and maps changed bindings, which is useful. However, it does not mention side effects (if any), prerequisites (e.g., existence of an execution receipt), or what the output contains. The mention of 'recorded execution receipt' is vague without more context. It adds some transparency but leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no waste. The main purpose is front-loaded, and the clarifying note about not auto-passing is concise. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, no output schema, and no annotations, this description is insufficient. It lacks parameter explanations, prerequisite conditions (like having a recorded execution receipt), and any indication of the return format or structure. The description gives a general sense but not enough for an agent to invoke the tool correctly without further inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain any of the four parameters (executionId, projectRoot, taskContextId, includeStructured). The agent must rely solely on parameter names, which are technical and not self-explanatory. The description provides zero guidance on parameter meaning or optionality, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('List stale checkpoints') and immediately clarifies what it does not do ('Does not auto-pass checkpoints'), distinguishing it from sibling tools like checkpoint_record or checkpoint_list. It also explains the mechanism ('maps changed bindings onto retest_required items'), giving a clear, non-tautological purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after a 'recorded execution receipt' and clarifies it is not for auto-passing checkpoints, but it does not explicitly name alternative tools or conditions for when to use this vs. others. There is no 'use this when X, use Y when Z' guidance, only a negative constraint. The context is present but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
context_for_taskB
Get a budgeted Markdown context pack for the current development task. Use at task start and expand only selected refs.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | ||
| locale | No | ||
| maxChars | No | ||
| focusRefs | No | ||
| budgetChars | No | ||
| projectRoot | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose that output is Markdown, budgeted, and that refs should be expanded selectively, but it does not describe output shape, budget semantics, or any side effects or prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences with no repetition or filler. The first sentence delivers the core operation and the second adds a targeted usage rule; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Eight parameters with zero schema descriptions, no annotations, and no output schema make this description insufficient for reliable invocation. It provides a starting point and usage stage, but leaves most parameter decisions and behavioral expectations unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only hints at semantics through 'budgeted' and 'selected refs' and never explains required 'task', focusRefs, budgetChars, projectRoot, locale, or includeStructured.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific action ('Get'), a concrete deliverable ('budgeted Markdown context pack'), and a scope ('current development task'), so a model can tell what the tool produces. It does not explicitly contrast with siblings like project_map or plan_context, so it falls just short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use at task start' gives an explicit temporal trigger, and 'expand only selected refs' is a concrete usage instruction. There is no mention of when not to use it or which sibling tools should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decision_listA
Read the compact project-scoped Decision index. Bodies, rationale, alternatives, and consequences are omitted; use decision_open or entity_open(type=decision) for one record.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | ||
| projectRoot | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well by disclosing that this is a compact index and that bodies, rationale, alternatives, and consequences are intentionally omitted. It also names the tools that do include those details. It does not discuss side effects, but 'Read' strongly signals a non-mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, with the core action and resource front-loaded and no filler. Every clause adds useful information: scoping, omission details, and routing to alternatives.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description clearly explains what the tool returns and what it does not, and it directs users to the right alternative for full records. However, with no annotations, no output schema, and entirely undocumented parameters, the definition lacks enough detail about how includeStructured, locale, and taskContextId affect the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no property descriptions (0% coverage), and the description does not explain locale, projectRoot, taskContextId, or includeStructured. The phrase 'project-scoped' loosely hints at projectRoot but is far from enough for an agent to select and populate parameters correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Read') and resource ('compact project-scoped Decision index'), then explicitly states what is omitted and points to alternatives for one record. This clearly distinguishes the tool from decision_open and entity_open.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use decision_open or entity_open(type=decision) when full decision records are needed, which gives both a when-to-use and when-not-to-use signal. This is clear routing guidance with named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decision_openB
Open one architecture Decision. Returns its rationale, alternatives, consequences, scope, supersession, and compact History.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| locale | No | ||
| projectRoot | No | ||
| historyLimit | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of behavioral disclosure. It mentions what information is returned (a compact history) but does not disclose potential side effects, read-only nature, error conditions, or any special behavior such as authorization requirements. This is a significant gap for a tool with no annotation safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is efficient and front-loads the core action ('Open one architecture Decision') before listing the return contents. It is not verbose profile, but it does pack the key purpose into a compact form. It loses a point because the list of return items is a bit of a catalog, but overall it is well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has six parameters, but only a required id is self-evident. The description explains the return type but not the meaning of `historyLimit`, `includeStructured`, `taskContextId`, or `locale`. Since there is no output schema and no annotations, the description leaves significant gaps for an agent to call the tool correctly with optional parameters. It is minimally viable but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the six parameters galaxy. However, the description only clarifies the return content, not the parameters like `historyLimit`, `includeStructured`, or `locale`. It adds minimal semantic value beyond the schema, which already has types and, for some, clear names. Given the 0% coverage, the description does not do enough to explain the parameters' purpose, so a 3 is generous but reflects the basic clarity of `id` as the required identifier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool opens a single architecture Decision and lists the specific content returned (rationale, alternatives, consequences, scope, supersession, history). This is a clear verb+resource, and it distinguishes itself from the sibling `decision_list` by specifying the singular open action, though it does not explicitly contrast with that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for viewing a single decision, but it does not explicitly say when to use it vs `decision_list` or other tools. The context of 'Open one architecture Decision' suggests a point-in-time read, but there is no guidance on when to prefer this over listing or searching. It is adequate but lacks explicit usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entity_openC
Open one Block, Chain, Link, Plan, or Decision with only relevant details and recent History.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| type | Yes | ||
| locale | No | ||
| projectRoot | No | ||
| historyLimit | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description must explain behavior itself. It does disclose that output is narrowed to 'only relevant details and recent History,' which is useful, but it does not clarify whether 'Open' is a pure read operation, what side effects may occur, or what the response shape is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler; the core action and entity scope appear first. It is concise, but the brevity comes at the cost of omitting important behavioral and parameter detail, so it is efficient rather than comprehensive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and zero parameter descriptions, the description is the only source of guidance, and it is too thin. An agent cannot confidently determine what 'relevant details' means, how history is limited, or how optional parameters like includeStructured and projectRoot affect the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 7 parameters with no descriptions, and the description only weakly maps to them: 'one Block, Chain, Link, Plan, or Decision' relates to 'type', and 'recent History' hints at 'historyLimit'. Params like locale, projectRoot, id, and includeStructured are left unexplained, so the description does not compensate for the 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Open') and clearly states the object: one Block, Chain, Link, Plan, or Decision. It also conveys the scoped nature of the operation ('only relevant details and recent History'), but it does not explicitly distinguish this tool from siblings like decision_open, which may overlap in purpose for decisions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over siblings such as decision_open or timeline_view, and no context about appropriate use cases or prerequisites. The description merely states what the tool does without helping an agent decide between alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
foundation_plan_createA
Generate one Foundation Plan from every non-deprecated unimplemented Block. Because this is an explicit implementation/verification Plan, the operation creates missing atomic Block checkpoints, direct Block PlanChanges, dependency-ordered parallel steps, Chain integration gates, and a final Plan acceptance gate in one transaction; plain architecture-only create_block does not.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | foundation-plan | |
| goal | No | ||
| actor | No | ||
| title | No | Foundation Plan | |
| reason | No | ||
| gitHead | No | ||
| projectRoot | No | ||
| taskContextId | No | ||
| includeStructured | No | ||
| requiredEvidenceLevel | No | integration |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It does well by enumerating the created artifacts: atomic checkpoints, PlanChanges, dependency-ordered steps, integration gates, and an acceptance gate, and it notes the operation happens 'in one transaction.' It does not mention idempotency, overwrite behavior, or permissions, but the disclosure is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded and the sentence contains no filler. It is dense and uses a semicolon to pack a lot of behavior into one sentence, but it remains appropriately sized for the complexity it communicates.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has ten parameters, no schema descriptions, no annotations, and no output schema, the description is insufficient for an agent to reliably construct a valid invocation. It explains the domain behavior well but leaves the input contract almost entirely undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description provides no parameter-level guidance. None of the ten parameters such as goal, actor, reason, taskContextId, includeStructured, or requiredEvidenceLevel are explained, so an agent cannot determine what values to pass or how they affect the generated plan.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Generate one Foundation Plan from every non-deprecated unimplemented Block.' It clearly scopes what the tool does and distinguishes it from the architecture-only create_block behavior, so an agent can tell this apart from related plan/block operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains that this is for explicit implementation/verification Plans and contrasts itself with 'plain architecture-only create_block.' This gives useful selection context, though it stops short of an explicit if-then rule such as 'use create_block when only architecture modeling is needed.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
graph_flowB
Declare architectural flows and pipelines using natural arrow expressions like 'block:A -> block:B -> block:C' or 'A -[calls]-> B'. Automatically creates or updates links without complex JSON crafting.
| Name | Required | Description | Default |
|---|---|---|---|
| flow | Yes | ||
| actor | No | ||
| reason | No | ||
| projectRoot | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden of disclosing side effects. It says the tool 'creates or updates links,' but it does not explain overwrite behavior, reversibility, permissions, or what happens to existing links. For a mutating graph tool, this is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler: the first states purpose and gives examples, the second states the core behavior and value. It is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given six parameters, no output schema, and no annotations, the description is incomplete for safe autonomous invocation. An agent can craft a flow string but remains uncertain about optional parameter meanings, update side effects, and return behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The required 'flow' parameter is helpfully explained with natural-language syntax examples. However, schema description coverage is 0%, and the other five parameters (actor, reason, projectRoot, taskContextId, includeStructured) are left undefined beyond their names. The description does not compensate for this gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Declare'), names the resource ('architectural flows and pipelines'), and provides concrete DSL examples that make the tool's function unmistakable. It also contrasts itself with JSON-based graph mutation, helping distinguish it from siblings like graph_mutate and graph_patch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The arrow-expression examples ('block:A -> block:B -> block:C') clearly illustrate how to use the tool, and the phrase 'declare architectural flows and pipelines' states the intended context. However, it does not explicitly say when to prefer this over alternatives or when not to use it, leaving some routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
graph_mutateB
Atomically create or patch Blocks, project-scoped Decisions, global Links, Chain paths, independent Plans, atomic Checkpoints, Background scopes, Decision scopes, and source refs. Decisions are not Canvas Blocks and never enter Block/Chain/Plan coverage. A plain create_block records architecture only; use create_checkpoint in the same ChangeSet when a requirement, Plan, Chain gate, or explicit verification request makes the check necessary. Link kinds are flows_to, calls, reads, writes, depends_on, implements, validates, constrains, and supersedes. Keep each call small and provide expectedRevision for updates.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | ||
| actor | No | ||
| planId | No | ||
| reason | Yes | ||
| gitHead | No | ||
| operations | Yes | ||
| projectRoot | No | ||
| chainScopeId | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It reveals atomicity, that Decisions are not Canvas Blocks and never enter Block/Chain/Plan coverage, the architecture-only nature of a plain create_block, valid link kinds, and the expectedRevision requirement for updates. It omits details about delete consequences and authorization, but still goes well beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences and front-loads the core verb and resource list before adding targeted caveats. Every sentence adds semantic value with no filler or repetition of the schema structure. It is dense but readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high complexity—10 parameters, 34 action enum values, no output schema, and no annotations—the description provides useful guidance for common create/checkpoint cases but is not complete. It does not explain top-level parameter semantics, return/response shape, or the behavior of destructive operations. It is adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only partially compensates. It meaningfully explains operation-level fields such as create_block vs create_checkpoint, link kinds, and expectedRevision, but leaves most top-level parameters (reason, planId, gitHead, projectRoot, chainScopeId, taskContextId, includeStructured) unexplained. For a tool with 10 parameters, this is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Atomically create or patch' and lists the concrete resources involved: Blocks, Decisions, Links, Chain paths, Plans, Checkpoints, scopes, and source refs. This clearly states the tool's function and scope. It does not explicitly differentiate it from the sibling graph_patch, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides useful in-tool guidance: use create_checkpoint in the same ChangeSet when a check is necessary, keep calls small, and provide expectedRevision for updates. However, it does not state when to prefer graph_mutate over graph_patch or other sibling tools, and it lacks explicit when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
graph_patchA
Apply a compact mdflow/1 Markdown-like patch. The server expands it into the same atomic ChangeSet used by graph_mutate, preserves omitted fields, and can create an atomic Block checkpoint with checkpoint=auto.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | ||
| actor | No | ||
| patch | Yes | ||
| planId | No | ||
| reason | No | ||
| gitHead | No | ||
| projectRoot | No | ||
| chainScopeId | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It does disclose useful behavior: expansion into an atomic ChangeSet, preservation of omitted fields, and optional atomic Block checkpoint creation. However, it omits any direct mention of mutation scope, destructiveness, permissions, or failure behavior, so transparency is adequate but not complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tightly packed sentences with no filler. The core action is front-loaded, and every clause adds a distinct and useful fact: patch format, atomic ChangeSet equivalence, partial-update behavior, and checkpoint capability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 10 parameters, no annotations, and no output schema, the description is too sparse for confident invocation beyond the required patch. It explains the patch concept well but does not cover the remaining parameters, return values, or failure modes, leaving an agent with significant uncertainty for valid optional usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only clarifies the required patch format (mdflow/1 Markdown-like). The other nine parameters—task, actor, planId, reason, gitHead, projectRoot, chainScopeId, taskContextId, and includeStructured—are left entirely unexplained, and checkpoint=auto is mentioned even though it is not present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Apply a compact mdflow/1 Markdown-like patch.' It also distinguishes graph_patch from the sibling graph_mutate by noting it expands into the same atomic ChangeSet, so an agent can tell the tools apart without inspecting their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly frames this tool as the compact Markdown-patch variant of graph_mutate and mentions the atomic ChangeSet equivalence, giving an agent a clear context for when to use it. It does not explicitly list exclusions or say 'use graph_mutate instead when...', 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.
graph_searchB
Search graph entities and source paths without loading the entire project.
| Name | Required | Description | Default |
|---|---|---|---|
| kinds | No | ||
| limit | No | ||
| query | Yes | ||
| locale | No | ||
| states | No | ||
| projectRoot | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It does reveal one useful trait—does not load the entire project—which suggests a read-only, performance-conscious operation. However, it does not explicitly confirm read-only behavior, permissions, response formats, or possible error cases, leaving gaps for a no-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the core purpose and the key qualifier. Every word contributes value, with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite a clear purpose, the tool has 8 parameters, no output schema, and no annotations. The description does not explain return values, parameter syntax, required setup like projectRoot/taskContextId, or how search results are structured. For a tool of this complexity, the description is far too skeletal to enable reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 8 parameters, and the description provides no parameter-level meaning. Parameters like kinds, states, includeStructured, projectRoot, and taskContextId are left entirely unexplained, forcing an agent to guess their roles and formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Search') and resource ('graph entities and source paths'), and adds a distinguishing performance qualifier ('without loading the entire project'). This clearly separates it from mutation siblings like graph_mutate or graph_patch, even though those siblings are not named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given about when to use this tool versus alternatives. The phrase 'without loading the entire project' implies a lightweight search use case, but no alternative tools are mentioned and no exclusion criteria are provided. An agent must infer usage from the tool name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
graph_statusC
Inspect project architecture health, live drift detection, isolated blocks, ghost blocks with code, and pending verification gates.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | ||
| projectRoot | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies a read-only safety profile via 'Inspect,' and it lists the kinds of status information returned (drift, blocks, gates). However, it does not disclose output shape, whether any live computation triggers side effects, or typical cost/performance traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no filler. The main action and resource are front-loaded, and the list of inspectable aspects is compact. It earns high marks for brevity, though the dense enumeration slightly reduces readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given four optional parameters, zero output schema, and no annotations, the description alone is insufficient. It fails to explain what parameters to supply, how results are returned, or what distinguishes this status snapshot from related tools. An agent cannot confidently invoke it correctly based on this definition alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention any of the four parameters (locale, projectRoot, taskContextId, includeStructured). It provides no compensation for the schema's lack of parameter descriptions, leaving an agent to guess what each field is for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Inspect') and identifies the resource as 'project architecture health' plus four concrete aspects (drift, isolated blocks, ghost blocks with code, verification gates). This makes the tool's purpose clear and distinctive, though it does not explicitly differentiate from sibling tools like graph_validate or graph_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or preferred conditions, and the sibling list contains closely related tools (graph_validate, graph_search) with no contrast provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
graph_validateC
Validate global graph references, Chain paths, Plan targets, Background scopes, contracts, and checkpoint-backed completion.
| Name | Required | Description | Default |
|---|---|---|---|
| projectRoot | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden. 'Validate' implies a read-only checking operation, but the description does not disclose side effects, permissions, output format, or failure behavior, leaving the agent unable to predict what invoking the tool will do beyond running checks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence with no filler; the main verb is front-loaded. However, the long list of capitalized domain terms is compressed to the point of ambiguity, slightly hurting readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no annotations, no output schema, 0% schema parameter coverage, and many siblings, yet the description only lists validation subjects. It lacks the usage, parameter, and output information an agent needs to select and call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description never maps projectRoot, taskContextId, or includeStructured to the validation concepts it lists. An agent cannot determine what values are appropriate for these parameters from either the schema or the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a clear action ('Validate') against a specific set of graph, plan, and contract references, which separates it conceptually from mutation/search siblings like graph_mutate and graph_search. However, the comma-separated object list is jargon-heavy and does not clarify what a successful validation means or returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to call this tool instead of graph_search, graph_flow, or architecture_connect, nor any exclusion criteria. The context signals show a large sibling group, so the absence of routing information is a notable gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_sanitizeA
Sanitize build, test, or terminal command outputs. Strips ANSI noise, collapses routine compiler stdout, and isolates actionable failure stack traces to protect context window from token flooding.
| Name | Required | Description | Default |
|---|---|---|---|
| exitCode | No | ||
| maxChars | No | ||
| rawOutput | Yes | ||
| projectRoot | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavior disclosure. It does a solid job by naming three specific transformations (strips ANSI, collapses compiler stdout, isolates stack traces) and the rationale (preventing token flooding). It does not mention return format, potential loss of information, or side effects, but the core behavior is transparent enough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver the purpose, specific behavior, and rationale without redundancy. The key verb and resource are front-loaded, and every phrase adds value. This is an appropriately sized and well-structured description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has six parameters, no output schema, and no annotations, yet the description explains only the general purpose. It leaves critical usage details unstated, such as what each parameter controls, what the return value looks like, and whether the tool mutates inputs or produces a new sanitized string. For an agent to invoke it correctly with full parameter awareness, this is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only hints at 'rawOutput' implicitly. It does not explain exitCode, maxChars, projectRoot, taskContextId, or includeStructured. An agent could infer rawOutput but would have no guidance for the other five parameters, especially maxChars and includeStructured, whose semantics are not obvious from names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Sanitize') plus a clear resource ('build, test, or terminal command outputs'), and enumerates concrete actions: strips ANSI noise, collapses routine compiler stdout, isolates actionable stack traces. This makes the tool's purpose unmistakable and distinct from any sibling tool in the list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the intended input type ('build, test, or terminal command outputs') and the goal of protecting the context window, which implies when to use it. However, it does not explicitly mention alternatives or when not to use it. There are no sibling sanitization tools, so the context is strong enough for 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.
plan_contextA
Read one Plan as a compact hierarchical development document: overview, ordered ChainScopes, inline Block/Link/Chain changes, checkpoint gates, and exact source refs. This is the primary read before implementing a Plan.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| locale | No | ||
| maxChars | No | ||
| projectRoot | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It discloses the output shape (hierarchical document with ChainScopes, changes, gates, source refs) and the 'compact' nature, implying read-only behavior via 'Read.' It does not mention truncation effects from maxChars, error conditions, or permission requirements, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences. The first enumerates the returned content in a compact list, and the second states usage priority without any filler or redundancy. It is front-loaded with the verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read tool with no output schema and no annotations, the description covers the core behavior and usage timing well. But with 6 parameters, it leaves important context unexplained, such as what includeStructured does, how maxChars affects output, and what taskContextId/projectRoot are used for. It is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides useful domain context for what a 'Plan' is, which gives meaning to the id parameter. However, it does not explain locale, maxChars, projectRoot, taskContextId, or includeStructured; these remain semantically opaque despite visible schema defaults and enums.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Read one Plan as a compact hierarchical development document.' It enumerates the exact content (overview, ChainScopes, Block/Link/Chain changes, checkpoint gates, exact source refs), which clearly differentiates it from siblings like context_for_task or chain_code_stream. The final sentence, 'This is the primary read before implementing a Plan,' reinforces its distinct role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear timing guidance: use this before implementing a Plan, and calls it the 'primary read.' However, it does not name alternative tools or state when NOT to use this tool, so it falls short of fully explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_mapA
Read a compact project map with architecture coverage, ordered Plans, Chain paths, explicit integration gates, and source-sync status without loading entity bodies.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | ||
| projectRoot | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It clearly signals a read-only operation via 'Read' and discloses a useful performance behavior: it does not load entity bodies. It does not discuss permissions, rate limits, or potential staleness, but for a read-only map tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-structured sentence that front-loads the core action and resource, then lists the map's contents without unnecessary words. Every clause adds information about what the tool provides.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only overview tool with all parameters optional, the description adequately explains the return contents and the lightweight nature of the call. However, with no output schema and no parameter explanations, the agent still lacks guidance on how 'includeStructured', locale, or taskContextId affect the result—so this is only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no parameter-level meaning. Params like 'includeStructured' and 'taskContextId' are left entirely unexplained, forcing the agent to guess their purpose. The description must compensate for the sparse schema and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Read') and a specific resource ('compact project map'), then enumerates exactly what the map contains: architecture coverage, ordered Plans, Chain paths, integration gates, and source-sync status. It also distinguishes itself from entity-level tools by stating it does so 'without loading entity bodies'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use this tool: when the agent needs a compact, cross-cutting project overview rather than detailed entity contents. It does not explicitly name alternative tools or state when not to use it, 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.
project_registerA
Register an existing directory as an mdflow project. This creates only .mdflow/project.json and is idempotent when the descriptor already exists.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| name | No | ||
| projectRoot | Yes | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and explicitly states the side effect scope ('creates only .mdflow/project.json') and idempotency. It does not mention failure modes, but the disclosed behavior is precise and helps an agent anticipate the tool's mutation footprint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences front-load the core operation, then add one precise behavioral detail; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is insufficient to determine how to populate the non-required fields or what includeStructured controls. It covers the basic projectRoot use case but not the full call surface.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no property descriptions and the description adds no meaning for id, name, or includeStructured; only 'existing directory' hints at projectRoot. This leaves the optional parameters semantically opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a concrete verb ('Register') plus a specific resource ('an existing directory as an mdflow project') and names the exact output artifact, .mdflow/project.json. This clearly differentiates it from sibling tools by scope and outcome.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It conveys when to use it: for an existing directory that should become an mdflow project, and the idempotence note tells the agent it can be re-run when the descriptor already exists. It does not name alternatives or explicit when-not-to-use conditions, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_commandB
Run one project-local command and return only a redacted, compressed terminal summary. Raw stdout/stderr never enters the MCP response; use this gateway for tests, builds, and mutation verification.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | ||
| command | Yes | ||
| maxChars | No | ||
| timeoutMs | No | ||
| projectRoot | No | ||
| executionKind | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It usefully discloses that output is redacted and compressed and that raw stdout/stderr is suppressed — genuinely valuable behavioral context. But it never discloses that running a command can mutate the filesystem (or its destructive potential), which is a significant omission for a command-execution tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two lean sentences with the core purpose first and the unique return contract second — no filler. It is efficient, though for an 8-parameter tool additional structured detail (e.g., a parameter summary) would have been warranted while still staying concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (8 parameters, no output schema, no annotations), the description is far from complete. It omits all parameter semantics, expected output structure, and side-effect disclosure, leaving an agent without enough information to invoke the tool correctly beyond the command string.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% with 8 parameters, and the description explains none of them. It does not clarify cwd, projectRoot, timeoutMs, maxChars, executionKind, taskContextId, or includeStructured. The redaction/compression wording hints at maxChars but never explicitly maps to parameters, so the description 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.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb (Run), resource (project-local command), and the return shape (redacted, compressed terminal summary). It explicitly claims raw stdout/stderr never enters the response, which distinguishes it from process-launching siblings and grounds its role as a command gateway.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description names concrete use cases ('tests, builds, and mutation verification'), giving the agent context on when to invoke it. However, it does not state when NOT to use it or name an alternative tool, so routing against siblings like block_code_mutate or chain_code_stream is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_binding_acceptB
Persist explicitly selected AST source binding candidates for a Block. Every candidate is re-resolved against current source before a SourceRef is created.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | No | ||
| reason | No | ||
| blockId | Yes | ||
| bindings | Yes | ||
| projectRoot | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The statement that 'Every candidate is re-resolved against current source before a SourceRef is created' discloses a non-obvious internal behavior, which is valuable because there are no annotations. But with zero annotation coverage, the description still omits important transparency details such as what happens when re-resolution fails, whether persistence is atomic or partial, and any permission or mutation implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The primary purpose is front-loaded and the second sentence adds an important behavioral caveat. Every word earns its place, and no part is redundant given the schema already contains parameter types and constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutation/persistence tool with no annotations and no output schema, so the description carries the full context burden. It fails to cover several needed details: what happens if a candidate does not match the current source, whether operation is transactional, the meaning of includeStructured, and what the tool returns or confirms. The description is too sparse for a tool with this many parameters and no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the large majority of the 7 parameters are not mentioned. Only 'AST source binding candidates' and 'a Block' loosely point to bindings and blockId; actor, reason, projectRoot, taskContextId, and includeStructured have no semantic explanation in the description, leaving an agent to guess their roles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Persist'), the target resource ('AST source binding candidates for a Block'), and the transformation ('SourceRef is created'). It implicitly distinguishes from the sibling source_binding_suggest via 'explicitly selected' and 'Persist', but it never names that sibling or another alternative, so it falls just short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'explicitly selected ... candidates' implies the tool should be used when a user has already chosen binding candidates, and the re-resolution note sets a precondition. However, the description gives no explicit when-to-use or when-not-to-use guidance and never references sibling alternatives such as source_binding_suggest.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_binding_suggestA
Suggest source bindings for a Block from AST symbols and project semantics. Suggestions are read-only; use source_binding_accept to persist an explicitly chosen candidate.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| blockId | Yes | ||
| maxFiles | No | ||
| projectRoot | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the burden. It explicitly discloses the read-only nature of the tool, which is the most important behavioral default. It does not mention response shape, staleness, or failure behavior, but the core side-effect profile is handled clearly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff, and critical guidance is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Defines the operation's role and read-only nature, and pairs it with the accept sibling nicely. However, with no output schema, the agent is left without knowing what a suggestion looks like, and unclear params (includeStructured, taskContextId) reduce completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It doesn't explain parameters like taskContextId, includeStructured, limit, or maxFiles beyond their namesaren't self-sufficient. The phrase 'from AST symbols and project semantics' provides thematic context but not parameter-level meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource—'Suggest source bindings for a Block'—and clarifies the input domain ('from AST symbols and project semantics'). It also distinguishes the tool from source_binding_accept by explicitly naming the sibling as the persistence step. An agent can tell exactly what this tool does and what it is not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance: suggestions are read-onlyaint, and if you want to commit an explicitly chosen candidate you should use source_binding_accept. This clearly separates the tool from its sibling and tells the agent when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_syncB
Scan current files for bound symbols without loading source into the response. Reports moved, changed, missing, or ambiguous bindings and affected Blocks/Chains.
| Name | Required | Description | Default |
|---|---|---|---|
| projectRoot | No | ||
| sinceRevision | No | ||
| taskContextId | No | ||
| includeUnchanged | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full behavioral disclosure burden. It meaningfully discloses that source content is intentionally not loaded into the response and that the output categorizes bindings as moved, changed, missing, or ambiguous plus affected Blocks/Chains. This goes beyond a generic scan description, though it omits side-effect or permission details, which are likely irrelevant for a read-only scan.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise: two sentences, with the key non-loading behavior front-loaded and the report contents delivered in a compact clause. Every word earns its place and no filler is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With five undocumented optional parameters, no annotations, and no output schema, the description is not complete enough for confident invocation. It gives a high-level summary of what the tool reports but leaves the agent unclear about which parameters are relevant for a given scenario, how to interpret the bindings output, and how the tool fits into the larger workflow. The absence of any parameter guidance is a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for explaining the five parameters, but it does not. 'Scan current files' only loosely hints at projectRoot, and nothing clarifies sinceRevision, includeUnchanged, includeStructured, or taskContextId. The description provides domain context but no parameter-specific semantics, leaving the agent to guess from names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Scan') and resource ('current files for bound symbols'), and clearly distinguishes the tool's purpose from a generic file read by stating it does not load source into the response. It reports binding status and affected Blocks/Chains, making the purpose understandable. It does not explicitly differentiate itself from sibling tools, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when one needs to detect moved, changed, missing, or ambiguous symbol bindings in current files. However, it gives no explicit guidance on when to choose this tool over siblings like timeline_sync, changes_since, or graph_validate, and no conditions for using it. This is implied usage, not explicit task-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
step_advanceA
Advance the active step of a Plan to complete, automatically updating progress and pointing nowDoing to the next step.
| Name | Required | Description | Default |
|---|---|---|---|
| planId | No | ||
| status | No | complete | |
| stepId | No | ||
| summary | No | ||
| nextStepId | No | ||
| projectRoot | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It does disclose the key side effects—automatic progress update and nowDoing pointer change—beyond a bare 'advance step' statement. However, it does not address status options, reversibility, or what happens when the step is already complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with no filler, and the primary action and automatic side effects are front-loaded. It earns its place and is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with no annotations and no output schema, this short description is not enough for correct invocation. It omits parameter roles, allowed status behavior, and return value expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It maps conceptually to stepId and nextStepId and hints at progress/status, but leaves planId, summary, projectRoot, taskContextId, includeStructured, and the status enum meanings unexplained. An agent cannot reliably populate 8 optional parameters from this text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Advance') and resource ('active step of a Plan') and names concrete outcomes: marking complete, updating progress, and moving nowDoing to the next step. This clearly distinguishes it from sibling plan tools such as plan_context and timeline_sync.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case: when a step in a Plan has been accomplished and the active pointer should move on. It gives no explicit exclusions, prerequisites, or alternatives, so an agent must infer that this is the right action versus a broader plan mutation tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timeline_syncC
Synchronize development cursor and active focus across conversations. Updates nowDoing, nextUp, and active step in the timeline.
| Name | Required | Description | Default |
|---|---|---|---|
| nextUp | No | ||
| planId | No | ||
| stepId | No | ||
| nowDoing | No | ||
| projectRoot | No | ||
| lastFinished | No | ||
| touchedFiles | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does disclose that the tool mutates nowDoing, nextUp, and the active step, and mentions the cross-conversation scope, but it omits side effects, whether values are overwritten, idempotency, required scoping fields, or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, and the core action is front-loaded. It earns its place, though it could add a usage note without becoming bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 9 optional parameters, no annotations, and no output schema, yet the description provides almost no context for how to invoke it correctly or what happens when optional parameters are omitted. This is far from complete for a fairly complex sync operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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, but it only clarifies nowDoing and nextUp, with 'active step' loosely mapping to stepId. Parameters like planId, projectRoot, taskContextId, touchedFiles, lastFinished, and includeStructured are inadequately explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Synchronize'), a specific resource ('development cursor and active focus across conversations'), and lists the concrete fields it updates (nowDoing, nextUp, active step). This clearly separates it from siblings like timeline_view (viewing) and source_sync (source code).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance about when to use this tool versus alternatives such as step_advance, timeline_view, or source_sync, and no when-not-to-use conditions. The 'across conversations' phrase implies a use case, but the agent is left to infer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timeline_viewA
Read the unified project Timeline: execution phases, ordered plans (P0 > P1 > P2), and current active cursor (nowDoing, nextUp, lastFinished).
| Name | Required | Description | Default |
|---|---|---|---|
| projectRoot | No | ||
| taskContextId | No | ||
| includeStructured | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does state a key behavior (read-only) and lists what the returned timeline contains. However, it does not disclose how results are scoped by projectRoot or taskContextId, what includeStructured changes, or any assumptions about which timeline is 'unified.'
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence contains the verb, the resource, and the three key output groups without filler. It is front-loaded and every clause adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives a good sense of the response content, but no output schema exists and parameter behavior is undocumented, so the overall calling context is incomplete. An agent cannot confidently know what happens when only some parameters are passed or what includeStructured toggles.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain projectRoot, taskContextId, or includeStructured. While the names hint at their roles, includeStructured is genuinely ambiguous and there is no guidance on optionality or default behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Read') and a precise resource ('the unified project Timeline'), then lists distinguishing contents: execution phases, P0/P1/P2 ordered plans, and active cursor fields. This makes it easy to separate from write/sync siblings such as timeline_sync and step_advance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The read-only intent is clear, but the description never states when to choose this over related tools or when not to use it. An agent must infer from the verb 'Read' and the tool name that this is the inspection path; no explicit alternatives or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.3.6- Added
block_seal - Changed
checkpoint_record1 field changed- added
Input schema / properties / evidenceExecutionIdsAdded value: +{ + "items": { + "minLength": 1, + "type": "string" + }, + "type": "array" +}
- Added
checkpoint_refresh_candidates - Changed
run_command1 field changed- added
Input schema / properties / executionKindAdded value: +{ + "enum": [ + "command", + "test", + "build" + ], + "type": "string" +}
- Added
source_binding_accept - Added
source_binding_suggest
1 tool update
v0.3.5- Added
graph_status
26 tool updates
v0.3.3- Changed
architecture_connect1 field changed- added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +}
- Changed
architecture_link_suggest1 field changed- added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +}
- Changed
block_code_mutate4 fields changed- added
Input schema / properties / expectedSourceHashAdded value: +{ + "maxLength": 64, + "minLength": 64, + "type": "string" +} - added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +} - added
Input schema / properties / verifyCommand / minLengthAdded value: +1 - changed
Input schema / requiredPrevious value: -[ - "blockId", - "symbol", - "newCode" -]New value: +[ + "blockId", + "symbol", + "newCode", + "verifyCommand" +]
- Changed
chain_code_stream3 fields changed- added
Input schema / properties / maxLinesPerSymbolAdded value: +{ + "maximum": 40, + "minimum": 4, + "type": "integer" +} - added
Input schema / properties / modeAdded value: +{ + "default": "contract", + "enum": [ + "contract", + "slice" + ], + "type": "string" +} - added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +}
- Changed
change_set_revert1 field changed- added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +}
- Changed
changes_since2 fields changed- added
Input schema / properties / sourceSyncRevisionAdded value: +{ + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +}
- Changed
checkpoint_list1 field changed- added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +}
- Changed
checkpoint_record1 field changed- added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +}
- Changed
context_for_task2 fields changed- added
Input schema / properties / budgetCharsAdded value: +{ + "default": 12000, + "maximum": 48000, + "minimum": 4000, + "type": "integer" +} - added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +}
- Changed
decision_list1 field changed- added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +}
- Changed
decision_open1 field changed- added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +}
- Changed
entity_open1 field changed- added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +}
- Changed
foundation_plan_create1 field changed- added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +}
- Changed
graph_flow1 field changed- added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +}
- Changed
graph_mutate1 field changed- added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +}
- Changed
graph_patch1 field changed- added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +}
- Changed
graph_search1 field changed- added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +}
- Changed
graph_validate1 field changed- added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +}
- Changed
log_sanitize2 fields changed- added
Input schema / properties / projectRootAdded value: +{ + "minLength": 1, + "type": "string" +} - added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +}
- Changed
plan_context1 field changed- added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +}
- Changed
project_map1 field changed- added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +}
- Added
run_command - Added
source_sync - Changed
step_advance1 field changed- added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +}
- Changed
timeline_sync1 field changed- added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +}
- Changed
timeline_view1 field changed- added
Input schema / properties / taskContextIdAdded value: +{ + "minLength": 1, + "type": "string" +}
7 tool updates
v0.3.2- Added
architecture_connect - Added
architecture_link_suggest - Added
graph_flow - Changed
graph_mutate1 field changed- changed
Input schema / properties / operations / items / properties / action / enumPrevious value: -[ - "create_block", - "create_decision", - "create_checkpoint", - "update_block", - "update_decision", - "add_source_ref", - "remove_source_ref", - "create_chain", - "update_chain", - "create_link", - "update_link", - "create_plan", - "update_plan", - "set_plan_chains", - "set_plan_dependencies", - "set_plan_steps", - "set_plan_checkpoints", - "set_plan_chain_scopes", - "update_plan_chain_scope", - "set_plan_changes", - "update_plan_change", - "set_plan_chain_change_refs", - "set_checkpoint_bindings", - "set_checkpoint_dependencies", - "set_chain_path", - "set_background_scopes", - "set_decision_scopes" -]New value: +[ + "create_block", + "update_block", + "delete_block", + "create_decision", + "update_decision", + "delete_decision", + "create_checkpoint", + "delete_checkpoint", + "record_checkpoint", + "add_source_ref", + "remove_source_ref", + "create_chain", + "update_chain", + "delete_chain", + "create_link", + "update_link", + "delete_link", + "create_plan", + "update_plan", + "delete_plan", + "set_plan_chains", + "set_plan_dependencies", + "set_plan_steps", + "update_plan_step", + "set_plan_checkpoints", + "set_plan_chain_scopes", + "update_plan_chain_scope", + "set_plan_changes", + "update_plan_change", + "set_plan_chain_change_refs", + "set_checkpoint_bindings", + "set_checkpoint_dependencies", + "set_chain_path", + "set_background_scopes", + "set_decision_scopes" +]
- Added
step_advance - Added
timeline_sync - Added
timeline_view
19 tool updates
v0.1.0- First observed
block_code_mutate - First observed
chain_code_stream - First observed
change_set_revert - First observed
changes_since - First observed
checkpoint_list - First observed
checkpoint_record - First observed
context_for_task - First observed
decision_list - First observed
decision_open - First observed
entity_open - First observed
foundation_plan_create - First observed
graph_mutate - First observed
graph_patch - First observed
graph_search - First observed
graph_validate - First observed
log_sanitize - First observed
plan_context - First observed
project_map - First observed
project_register
TDQS
Scored across 32 tools
Most tools have clearly distinct purposes, with detailed descriptions preventing major confusion. Minor overlaps exist between graph_mutate and graph_patch, and between entity_open and decision_open, but the descriptions clarify their scopes. Overall, an agent can reliably select the right tool for most operations.
All tool names follow a consistent verb_noun snake_case pattern (e.g., decision_open, source_binding_accept, checkpoint_list). Even multi-word names like checkpoint_refresh_candidates maintain the pattern, providing predictable and readable tool names throughout.
With 32 tools, the server exceeds the 25-tool threshold for 'too many'. While the domain (architecture decision management, graph manipulation, checkpoints, plans) is complex and may justify a larger surface, the sheer number can overwhelm agents and increase selection overhead. The count feels heavy for the apparent scope.
The tool surface is extensive, covering project registration, decision management, graph creation/validation, source binding, checkpoints, plans, timelines, and synchronization. It appears to provide full lifecycle coverage for architecture decisions and associated artifacts. Minor gaps exist, such as explicit entity deletion (only revert via change_set_revert), but these are workable.
Maintenance
Related MCP Connectors
Shared project memory that keeps teammates and AI agents aligned across sessions.
Project memory for coding agents: requirements, decisions, code graph and delivery telemetry.
Project memory, semantic code search, and grounded agent context.
Per-project memory for AI agents: decisions, attempts, tasks, ranked recall. Paid per call via x402.
51
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides durable project context for coding agents, including project maps, session history, and explicit memories, all stored locally.327MIT
- AlicenseNot gradedqualityBmaintenanceGives AI assistants persistent, queryable project memory for decisions, patterns, and rules, reducing the need to re-explain context in every prompt.11Apache 2.0
- AlicenseNot gradedqualityDmaintenanceGives AI agents durable project memory via the Model Context Protocol, allowing them to read tasks, record decisions, search context, and sync snapshots to the cloud.10MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to maintain and query project memory independently of the underlying model, with versioned, auditable storage and multi-stage retrieval through a single MCP gateway.MIT