deep-think-mcp
Click on "Deploy 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., "@deep-think-mcpthink through the pros and cons of remote work"
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.
The Problem
Ask a capable model a hard question and it will often produce a fluent answer that sounds reasoned but skipped the hard parts — it assumed something it never checked, leaned on a weak analogy, ignored a stakeholder, or committed to the first framing that came to mind. The usual fixes ("think step by step," "critique your answer") work unevenly and leave nothing behind: the reasoning evaporates with the context window.
Three concrete gaps:
Reasoning is ephemeral. Once the conversation scrolls away, the chain of thought is gone. You can't revisit why a conclusion was reached, or resume a half-finished analysis tomorrow.
Self-critique is unstructured. "Critique yourself" gives a model too much latitude — it critiques what's easiest, not what's load-bearing. Nothing guarantees it stress-tests its evidence, its assumptions, and its blind spots in turn.
Local models make both worse. A 7B/8B model asked to run a multi-step reasoning protocol and remember where it is in that protocol and emit clean JSON at each step will drop one of those balls.
Related MCP server: crash-mcp
The Solution
deep-think-mcp is an MCP server that externalizes the reasoning protocol into a state machine the server runs on the model's behalf. A problem is worked in explicit stages (Problem Definition → Research → Analysis → Synthesis → Conclusion), and within each stage the model either sharpens one line of reasoning through rounds of structured self-critique, or spins up competing specialist perspectives that are scored and converged. Every intermediate step is scored on a shared 7-dimension utility matrix and saved to disk.
Because it targets local models — small context, weak instruction-following, no reliable JSON mode — every tool response is short, flat, and directive: it tells the model exactly which tool to call next. A single tool, next_action, answers "what do I do now?" from any state, so the model never has to hold the protocol in its head.
┌─ Problem Definition ─┐ ┌─ Analysis ─┐ ┌─ Synthesis ─┐ ┌─ Conclusion ─┐
│ draft ─▶ critique │ │ specialist │ │ specialist │ │ commit ─▶ │
│ ─▶ refine ─▶ score │ ▶ │ candidates │ ▶ │ candidates │ ▶ │ finalize ─▶ │
│ ─▶ (converged?) ─▶ │ │ ─▶ score │ │ ─▶ score │ │ move/keep │
│ commit │ │ ─▶ winner │ │ ─▶ winner │ │ │
└──────────────────────┘ └─────────────┘ └─────────────┘ └──────────────┘
every step scored, persisted to disk, and resumableFeatures
Two reasoning modes, one schema
Every session picks serial (one line of reasoning, sharpened by rotating critique lenses) or subagent (competing specialist perspectives, scored and converged) — fixed for the life of the session. Both emit the same stage machine, thoughts, and 7-dim utility scores, so you can run a question through both and compare.
Structured self-critique
Serial mode ships 8 bundled critique lenses — overconfidence, weak_evidence, missing_perspective, unstated_assumption, scope_creep, alternative_framing, steel_man, first_principles — each a directive prompt that hunts one specific failure mode. Drop your own .md lenses in to add or override by name.
Persistent by default
One JSON file per session, written under a Portalocker lock with a crash-safe .bak protocol, tracked in a central index. Finalize prompts you to move the artifact anywhere (a project folder, a synced drive) and it stays fully resumable there.
Built for weak models
Flat tool signatures, short directive responses, and next_action as an authoritative "what next?" resolver. Every input is accepted as JSON or tolerant plaintext (scores="correctness: 0.8, clarity: 0.7"). Nothing ever raises a traceback — failures return a retry_with_clarification directive naming the fix.
Local-first, offline-capable
Serial mode and the endpoint-free manual subagent engine need no GPU, no API key, and no network. Point the optional engines at any OpenAI-compatible endpoint (Ollama, llama.cpp, vLLM) only if you want to.
Honest hybrid engine
Subagent mode has two engines: necort drives a vendored Nash-equilibrium core against an endpoint; manual is endpoint-free, where the calling model plays each specialist and self-scores all 7 dimensions for real. (See the honest NECoRT story — most of the upstream PR turned out to be filler.)
Quick Start
Requires Python ≥ 3.11 and uv. The vendored NECoRT core is a git submodule, so clone recursively:
git clone --recurse-submodules <this-repo-url> deep-think-mcp
cd deep-think-mcp
uv sync # core deps; add --extra autopilot for the optional autopilot feature
uv run pytest # confirm a healthy install (tests never touch your real home dir)(Already cloned without submodules? git submodule update --init. The submodule is only needed for [subagent] engine = "necort"; everything else works without it.)
Launch the stdio server:
uv run python -m deep_think_mcp.serverThis is a dev-checkout tool — it reads config/default.toml from the repo root, so every client config points --directory at your clone (see docs/wiring.md).
Drive a serial session (every response carries a message and a next_tool — when unsure, call next_action(session_id)):
start_session(question="Should we cache API responses at the edge or origin?")
→ { "mode_required": true, "next_tool": "set_session_mode", "session_id": "…" }
set_session_mode(session_id, mode="serial")
begin_thought(session_id, content="Cache at the edge: lower latency for users…")
critique_current_thought(session_id) # server picks a stage-appropriate lens
→ { "lens": "weak_evidence", "draft_content": "…", "lens_template": "…", "next_tool": "submit_critique" }
submit_critique(session_id, text="No numbers back the latency claim…")
refine_current_thought(session_id, new_content="Cache at the edge (CDN PoPs) when…")
score_current_thought(session_id, scores="correctness: 0.8, clarity: 0.8, evidence: 0.7, …")
→ { "converged": false, "next_tool": "critique_current_thought" } # loop until converged or max_rounds
commit_thought(session_id)
advance_stage(session_id) # … repeat through the stages …
finalize_session(session_id) # → prompts you to move or keep the saved artifactNew here?
docs/GUIDE.mdis a complete, self-contained teaching document — the concepts, the architecture, both modes in depth, every tool and config key, and how to extend the system. This README is the map; the guide is the tutorial.
The Two Modes
A session's mode is chosen once at creation and is immutable — to use the other mode, start a new session. Creating a session without a mode returns a mode_required directive rather than silently defaulting, forcing the choice to surface.
Serial — one line of reasoning, critiqued
Within a stage, a thought cycles begin → critique → submit → refine → score and repeats with a new lens until it converges. Four convergence rules are checked in precedence order:
fixed_point— the refinement barely changed the text (normalized edit distance< edit_distance_epsilon, default0.05).diminishing_returns— two rounds in a row each improved the score by< score_threshold(default0.05).max_rounds— the round cap (default3) is hit.Otherwise keep going with the next lens.
Natural convergence outranks the ceiling, so you learn why it stopped. Lenses rotate through stage-appropriate defaults first (e.g. Analysis → weak_evidence, overconfidence), then the rest of the library.
Subagent — competing perspectives, converged
Specialists (default roster: Analysis, Creativity, Skeptic) propose competing candidates scored on the 7-dim matrix; the strongest wins. Two engines, same four tools (begin_subagent_thought, advance_subagent_round, inspect_utility_matrix, commit_subagent_thought):
|
| |
Needs an endpoint? | No — fully local & offline | Yes — any OpenAI-compatible |
Who plays the specialists? | The calling model itself | The vendored Nash core |
Utility scoring | All 7 dims, real self-scores | 3 dims real ( |
Commit gate | 7-dim mean ≥ | winner's |
Selection | highest mean wins, ties → earliest | Nash equilibrium |
With engine = "necort" but no endpoint configured (the shipped default), begin_subagent_thought doesn't fail opaquely — it returns a directive pointing at the endpoint-free manual path.
The honest NECoRT story
The original design imagined subagent mode as a full port of PhialsBasement/Chain-of-Recursive-Thoughts PR #7 — specialist agents, a native 7-dim utility matrix, bias detection, continuous learning. A code recon during the build found that most of that PR is disconnected filler: the files advertising those features are never imported, make zero LLM calls, and several aren't even valid Python. The one part that works is NashEquilibriumRecursiveChat. So this project vendors PR #7 in full (a faithful, re-pinnable submodule mirror) but imports only those two working files, wrapped by a single adapter (necort_adapter.py) that shims a real crash, a hardcoded endpoint, and a stdout-corrupts-the-transport bug — without editing a vendored line. Because a single blended Nash rating can honestly inform only 3 of 7 dimensions, genuine multi-perspective diversity comes from the second, from-scratch manual engine instead. The lesson is baked in: verify third-party code against reality before building on its advertised behavior.
Data & the Finalize/Move Lifecycle
Everything lives under one data root, ~/deep-think-mcp/ by default (override with DEEP_THINK_HOME):
~/deep-think-mcp/
├── config.toml seeded from config/default.toml on first use; edit freely
├── index.json session_id → { path, mode, status, created_at, updated_at }
├── sessions/ one JSON file per session
├── lenses/ optional: drop-in .md critique lenses (override by name)
└── logs/ reserved directory (unused in v1)finalize_session returns a human_prompt offering to relocate the artifact; move_session moves it atomically (write → verify → unlink, won't clobber without force) and keep_here records the decline. Sessions moved outside the root stay fully functional — list_sessions / resume_session find them via the index's absolute paths, and move_history tracks every hop.
Configuration
Layered, lowest to highest precedence: packaged defaults (config/default.toml) → user config (<root>/config.toml, seeded on first use) → per-session overrides (start_session(overrides={…})). Key settings:
Section | Key | Default | Notes |
|
|
| Overridden by |
|
|
| The convergence knobs. |
|
| the 8 bundled lens names | Rotation order after stage defaults. |
|
|
|
|
|
|
| Round cap and commit gate. |
|
|
| Specialist roster. |
|
|
| NECoRT engine target. Empty endpoint → the manual-path directive. |
|
|
| Per-session overridable via |
|
|
| Off by default; when off, no network code path is reachable. |
The full table with every key lives in docs/GUIDE.md.
Tolerant input. Every structured parameter accepts JSON or plaintext (tags="a, b, c", scores="correctness: 0.8, clarity: 0.7"). Unparseable input returns a retry_with_clarification payload naming the parameter, expected shape, and an example — never a raw error.
Autopilot (optional). With [autopilot].enabled = true (and uv sync --extra autopilot), two extra tools let the server drive a whole stage internally against a configured endpoint, stopping cleanly with a resumable partial-progress directive on any fault. Off by default, it imports zero networking code.
Tool Surface
25 tools always registered; 27 with autopilot enabled. All responses are flat objects with a message and usually a next_tool.
Group | Tools |
Session lifecycle |
|
Stage cursor |
|
Serial loop |
|
Subagent loop |
|
Meta / guidance / I-O |
|
Autopilot (when enabled) |
|
Full signatures, return fields, and every directive/error code are in docs/GUIDE.md.
Wiring Into an MCP Client
Copy-pasteable config for Claude Desktop, Claude Code, Cursor, Continue, and LibreChat is in docs/wiring.md. The mcpServers-style shape:
{
"mcpServers": {
"deep-think": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/deep-think-mcp", "run", "python", "-m", "deep_think_mcp.server"],
"env": { "DEEP_THINK_HOME": "/absolute/path/to/your/data-root" }
}
}
}Sharing one server between clients (or tools keep vanishing from a long-lived host)? You can instead run deep-think as a single always-live Streamable HTTP daemon that multiple clients reach over a URL (
http://127.0.0.1:8182/mcp) rather than each spawning its own stdio process. This is also the fix when an agent host intermittently drops the tools from its cached schema. Seedocs/http-transport.md.
Documentation
Document | What it is |
The complete teaching guide — concepts, architecture, both modes in depth, full tool/config/directive/data-model references, extension, FAQ, glossary. | |
Exact client config for Claude Desktop, Claude Code, Cursor, Continue, LibreChat. | |
Running as a Streamable HTTP daemon — one always-live server shared by multiple clients (e.g. an agent host + a DAG), the systemd unit, security posture, and the fix for hosts that drop stdio tools from a cached schema. | |
Agent-runnable A/B/C test — does driving a model through the tool beat answering directly? Self-contained prompt, rubric, judge instructions, and report template. | |
The original design document (the "why" behind the architecture). | |
The task-by-task build breakdown with global constraints. | |
Why | |
How to re-pin the vendored NECoRT submodule. |
Architecture
The system is layered: a dispatch layer (server.py) that registers the tools, gates wrong-mode calls, parses tolerant input, and turns storage faults into directives; the engines (serial_engine, subagent_engine, manual_engine, necort_adapter, optional autopilot) that do the thinking; and a domain + persistence layer (session, stages, lens_loader, store, index, lifecycle, config, prompts, tolerant). Two invariants hold the design together: all model-facing wording lives in prompts.py, and necort_adapter.py is the only file that imports vendored code — the entire third-party surface is quarantined behind one boundary. Full diagram in the guide.
Testing
uv run pytest # full suite (423 tests)
uv run pytest -q -W error # the CI bar: pristine, warnings are errorsThe suite drives the real MCP SDK's in-memory client against the real server for every tool contract, plus one subprocess test that speaks real stdio MCP to the launched server. Every test injects a tmp_path data root, so running the suite never touches your real home directory.
How it was built. Implemented task-by-task with a fresh-implementer → adversarial spec+quality review → fix-loop discipline, closed out by a whole-branch multi-lens review with adversarial verification of every finding (including two real security fixes: import path traversal and credential exfiltration). Design docs are docs/build-plan.md and docs/execution-plan.md.
Benchmarks
Not yet run. A head-to-head of serial vs. subagent on three canonical prompts is planned but requires blind human rating to be meaningful, and is deliberately deferred rather than shipped as a self-graded number.
License
MIT — see LICENSE. This project vendors third-party source code (vendor/necort/, a git submodule of PhialsBasement/Chain-of-Recursive-Thoughts PR #7) under its own MIT license; see LICENSE-NOTICES for full attribution.
Available Tools
25 toolsadvance_stageA
Advance the session's stage cursor to the next stage in its
expected_stages. Fails cleanly with a directive payload pointing
at finalize_session if the session is already at its final
stage -- there is nowhere further to advance to.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the primary behavior (advancing cursor), the failure mode (clean with directive), and resultant action (pointing to finalize_session). No annotations exist, so description carries full burden and does so adequately.
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 wasted words: first states purpose, second covers failure behavior. Front-loaded with key action.
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 simple tool with one parameter and an output schema, the description covers main behavior and edge case. Could briefly explain 'directive payload' but not essential.
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 coverage is 0% with no descriptions for session_id. The description does not elaborate on the parameter beyond its name, missing an opportunity to add meaning for the required input.
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's function: 'Advance the session's stage cursor to the next stage in its expected_stages.' It differentiates from siblings like finalize_session by specifying stage advancement rather than session termination.
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 progressing through expected stages and provides guidance when the session is at its final stage by directing to finalize_session. However, it does not explicitly state when not to use this tool versus other sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
advance_subagent_roundA
Advance the subagent thought by one step.
`engine="necort"`: runs the next Nash round, re-seeding the current
best candidate (`candidate`/`scores` are ignored). `engine="manual"`
(T13): records the current specialist's `candidate` + 7-dim `scores`
(tolerant input -- JSON or "correctness: 0.8, ..." text) and hands the
next specialist's prompt, or -- when the roster is exhausted -- runs
the deterministic selection and returns the round result. Calling with
no `candidate` at a round boundary (re)starts the next round's first
specialist. The round budget (`subagent.max_rounds`) is enforced here.
| Name | Required | Description | Default |
|---|---|---|---|
| scores | No | ||
| candidate | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry full behavioral disclosure. It details engine-specific actions (necort ignores candidate/scores; manual records them and may run selection) and budget enforcement. However, it does not describe side effects on session state, the structure of the returned 'round result', or error conditions. This leaves gaps in complete transparency.
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 compact yet informative, using bullet points to separate engine behaviors. Every sentence adds value, and the main action is front-loaded. A slight improvement would be to separate engine details into clearer subsections, but overall it is concise without being dense.
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 (two engines, parameter nuances, budget enforcement) and the lack of annotations, the description covers essential behaviors but omits the output format (despite an output schema existing), error conditions, and prerequisites (e.g., active subagent session). It is adequate but not fully comprehensive.
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 coverage is 0% (no parameter descriptions in schema), so the description must compensate. It explains the 'candidate' and 'scores' parameters for the manual engine, including format ('correctness: 0.8, ...' text). It also clarifies that omitting candidate restarts the round. However, it does not explain the 'session_id' parameter at all, and the description of scores as '7-dim' is not reflected in the schema type (anyOf object/string/null). Partial but insufficient for full clarity.
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's action: 'Advance the subagent thought by one step.' It specifies the resource (subagent round) and distinguishes two engine modes ('necort' and 'manual'), making it clear and distinct from sibling tools like advance_stage or commit_subagent_thought.
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 context for when to use each engine (Nash round vs. manual candidate recording), and mentions budget enforcement and round boundary behavior. However, it does not explicitly compare with sibling tools (e.g., when to use advance_subagent_round vs. commit_subagent_thought), leaving some ambiguity about alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
begin_subagent_thoughtC
Start a subagent thought. With engine="necort" this runs the first
Nash equilibrium round via the vendored core over the configured
specialist framings (needs an endpoint; when none is configured it
points at the manual path). With engine="manual" (T13) this hands
back specialist #1's prompt for the calling model to voice itself --
no endpoint, no network, no NECoRT code. Fails with a directive if a
thought is already in progress.
| Name | Required | Description | Default |
|---|---|---|---|
| content | No | ||
| session_id | Yes | ||
| prompt_focus | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description is the sole source. It discloses two engine modes and a failure case, but the engine parameter is not in the schema, creating inconsistency. Does not explain operation beyond engine modes.
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?
Description is front-loaded with core purpose, but includes details on an undocumented parameter, which adds unnecessary verbosity and confusion.
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 3 parameters, no schema descriptions, and no annotations, the description is incomplete. It omits parameter explanations and introduces ambiguity with a non-existent parameter.
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 coverage is 0%, and description fails to explain the three parameters (content, session_id, prompt_focus). Instead focuses on an undocumented 'engine' parameter.
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 it starts a subagent thought, but introduces an undocumented 'engine' parameter that confuses the purpose. It does not differentiate from sibling tools like 'begin_thought' explicitly.
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?
Implied usage: use for subagent thought initiation. Mentions a failure condition when a thought is already in progress, but no explicit when-to-use vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
begin_thoughtA
Draft a new thought in the session's current stage. Fails with a
directive if a thought is already in progress (commit it first).
tags/axioms accept a JSON array or a comma/newline list.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| axioms | No | ||
| content | Yes | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses failure condition when thought in progress, which is a behavioral trait. No annotations exist, so description carries the burden. Could be more specific about what 'draft' entails (e.g., saves to session, editable).
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; first states purpose, second adds condition and parameter format. No fluff, but could be more 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?
Has output schema so return values are covered. Description provides key usage points but lacks guidance on when to use among many sibling tools and deeper behavioral context.
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 coverage is 0%, but description adds format details for tags and axioms (JSON array or comma/newline list). Does not explain content or session_id parameters.
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?
Clear verb+resource ('Draft a new thought') with context ('in the session's current stage'). Differentiates from siblings like commit_thought and critique_current_thought.
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?
Explicitly warns against use if thought in progress, providing a precondition. Does not explicitly compare to alternative tools, but the condition is useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_sessionB
Wipe a session: deletes its file and removes it from the index.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses destructive behavior (deletes file, removes from index), but without annotations, more context about irreversibility, permissions, or side effects would be beneficial.
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?
Single, front-loaded sentence with no extraneous words. Efficiently communicates the core action.
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 having an output schema, the description omits important context for a destructive operation, such as whether the action is reversible or requires specific permissions. The absence of annotations and parameter descriptions leaves 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 offers no parameter-specific details beyond the name 'session_id'. 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 explicitly states the tool's action ('wipe a session') and what it does (deletes file and removes from index). It clearly distinguishes from sibling tools like start_session or list_sessions.
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 vs alternatives, prerequisites, or warnings. Given many sibling tools, explicit when-to-use advice is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commit_subagent_thoughtA
Accept the current equilibrium: lock the winning candidate as the thought's content and clear the current-thought cursor. Fails with a directive if no Nash round has run yet.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavior. It mentions the failure condition and core effect, but omits details like side effects on session state, permission requirements, or return behavior. The output schema might compensate somewhat.
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 concise, front-loaded sentences with no wasted words. Condition placed at the end for completeness.
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 core action and failure condition, but given 21 siblings and a mutation tool, more context about when this is appropriate vs. other subagent steps would strengthen completeness. Output schema exists so return details are optional.
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?
Only one parameter (session_id) with 0% schema description coverage, and the description does not explain it. The agent must infer its purpose, which is a gap for a tool that likely modifies state.
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's action: locking the winning candidate as thought content and clearing cursor, with a specific verb 'Accept the current equilibrium'. It distinguishes from siblings like 'commit_thought' by specifying 'subagent thought'.
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 mentions a prerequisite: 'Fails if no Nash round has run yet', providing context for when to use. However, it lacks explicit guidance on when not to use or alternatives among the many subagent-related siblings like advance_subagent_round or inspect_utility_matrix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commit_thoughtB
Lock the current thought (writing its final refined content back as the thought's content) and clear the current-thought cursor. Fails with a directive if no critique round has completed yet.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the locking, content update, cursor clearing, and failure condition. However, it does not state whether the operation is destructive, reversible, or requires specific permissions, which would be helpful for an AI agent.
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 covering key points. The first sentence could be slightly more concise but is acceptable. No extraneous 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?
Given the tool is one of 25 siblings and has an output schema (unseen), the description lacks param details and output explanation. It mentions a failure condition but does not help the agent differentiate from similar tools or understand what to expect upon success.
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 one required parameter (session_id) with no description and 0% schema coverage. The description does not mention session_id at all, leaving the AI agent without guidance on its meaning or format.
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 (lock the current thought, write refined content back, clear cursor) and resource (current thought). It distinguishes from siblings like 'commit_subagent_thought' by implying this is for main thoughts, and its purpose is unique among the listed sibling tools.
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 specifies a precondition: 'Fails with a directive if no critique round has completed yet,' which tells when not to use it. However, it does not explicitly mention alternatives or when to prefer this over similar tools like 'commit_subagent_thought'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compress_historyA
Deterministic extractive digest of prior stages' committed
thoughts, capped at target_tokens (a cheap len(text)//4 heuristic
-- no tokenizer dependency). The current stage is left out; its
detail is already visible via the live loop tools/
summarize_session. For small-context local models that can't
hold a whole session's history.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| target_tokens | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully explains key behaviors: deterministic, extractive digest, capping via target_tokens using a cheap heuristic, and exclusion of the current stage. It does not mention side effects on session state, but the action is read-only in nature.
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 paragraph but front-loads the core purpose. It is efficient but could be structured more clearly (e.g., separate sentences for usage context). No wasted words.
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, the presence of an output schema, and sibling tools for context (e.g., `summarize_session`), the description provides adequate information. It could mention error conditions or empty history, but is otherwise 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 coverage is 0%, so the description must compensate. It explains `target_tokens` (default 300, heuristic of len(text)//4) but does not clarify the meaning or purpose of `session_id`, which is the required parameter. Thus, partial compensation.
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 produces a 'deterministic extractive digest of prior stages' committed thoughts', distinguishing it from summarization of the current stage via `summarize_session`. The verb 'compress' and resource 'history' are specific, and the use case for small-context models is explicit.
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 indicates when to use the tool (for small-context local models that cannot hold full history) and mentions an alternative (`summarize_session` for the current stage). It does not explicitly state when not to use or list other alternatives among siblings, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
critique_current_thoughtB
Open a critique round and return the lens template to apply. Omit
lens to let the server pick a stage-appropriate one and rotate
through the library. The response places the current draft content
immediately before the lens template (adjacency contract).
| Name | Required | Description | Default |
|---|---|---|---|
| lens | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It mentions an adjacency contract but does not disclose whether the tool modifies state, requires permissions, or is destructive. Key behavioral traits like locking the thought or resource consumption are omitted.
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 two sentences, but the second sentence uses jargon ('adjacency contract') that may confuse some agents. It could be restructured for clarity without adding length.
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 output schema exists, return values are covered. However, with many sibling tools and no explanation of when to use this versus others (e.g., submit_critique), the description lacks workflow context. Behavioral details are also missing.
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 coverage is 0%, so the description must compensate. It explains the `lens` parameter (optional, default null, server picks if omitted), but the required `session_id` parameter is not explained at all, leaving a 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 clearly states the tool opens a critique round and returns a lens template, with a specific verb and resource. It distinguishes from siblings like submit_critique by focusing on initiation. However, it could be more explicit about what a 'critique round' entails.
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 guidance on when to omit the `lens` parameter to let the server choose, and mentions the adjacency contract. However, it lacks explicit when-not-to-use instructions or alternatives for the critique workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_sessionA
Return this session's complete state as a JSON-serializable
dict, suitable for handing straight to import_session.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries full burden. It clearly states the tool returns a complete state as a JSON-serializable dict, but does not explicitly mention side effects (e.g., read-only nature). It is adequate but not elaborate.
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 immediately conveys the purpose. It is concise with no unnecessary words, and the structure is front-loaded effectively.
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 presence of an output schema, the description does not need to detail return values. The description is adequate for a simple export tool, though it could mention limitations or side effects. Overall, it is reasonably 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 meaning beyond the schema. The single parameter 'session_id' is not explained, leaving agents to infer from its name. The description fails to compensate for the low coverage, but the parameter name is self-explanatory.
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 ('return') and the resource ('this session's complete state as a JSON-serializable dict'), and distinguishes from siblings like 'import_session' by highlighting its suitability for import.
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 clear context by noting it is suitable for 'import_session', implying a export-for-import workflow. However, it does not explicitly exclude other uses or give when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
finalize_sessionB
Mark a session finalized. Returns the finalize+move payload:
where the session is saved, the canned human_prompt asking whether
to move it, and the two tools (move_session, keep_here) that
answer that question.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral transparency. It mentions returning a payload but does not disclose side effects like whether the session is irrevocably finalized, if permissions are needed, or any error conditions. The description is vague about what 'finalized' means.
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 relatively short and front-loaded with the primary action. However, the structure could be improved with clearer separation of purpose and output details. Still, it avoids unnecessary text.
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?
An output schema exists, so explaining return values is not needed. The description mentions the two tools returned, which helps context. However, it lacks context about prerequisites (e.g., session must be active) and how this fits in the overall workflow among many siblings.
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?
There is only one parameter (session_id) with 0% schema description coverage. The description does not explain what session_id is, its format, or any constraints beyond being required. It adds no value over 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 clearly states the tool's purpose: 'Mark a session finalized.' It specifies the verb (mark) and resource (session), and distinguishes from siblings like move_session and keep_here by mentioning them as part of the output.
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 context by describing the output payload that includes a prompt and two tools, suggesting this tool is used before deciding whether to move or keep the session. However, it does not explicitly state when to use versus alternatives like clear_session or start_session, nor 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.
import_sessionA
Recreate a session from a previous export_session payload (a
dict, or its JSON string form). Validated on the way in. If the
imported session's id collides with one already on this install, a
fresh id (and save path) is assigned automatically rather than
overwriting the existing session -- collision-safe import.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 key behaviors: the input is validated, and in case of ID collision, a fresh ID and save path are assigned automatically without overwriting. It does not detail all possible side effects or prerequisites (e.g., session state), but the collision handling is a critical behavioral trait well explained.
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 concise 4-sentence paragraph. The first sentence immediately states the purpose and expected input. Every sentence adds value: validation, collision handling. No extraneous words.
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 only one parameter, no annotations, and a mention of an output schema (not shown), the description provides sufficient context. It explains what the tool does, how the input relates to export_session, and the collision behavior. An agent can confidently select and invoke this tool based 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 coverage is 0%, so the description must compensate. It does so by explaining the 'data' parameter as a 'previous export_session payload' and specifying it can be a dict or JSON string, adding meaning far beyond the schema's type constraints. This clearly tells the agent what to provide.
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 explicitly states the tool 'recreates a session from a previous export_session payload', clearly specifying the verb and resource. It differentiates this tool from siblings like start_session by focusing on importing an exported session, not creating a new one. The mention of 'collision-safe import' adds further specificity.
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 when to use the tool: after an export_session generates a payload. It notes validation and collision handling, providing context. However, it does not explicitly state when not to use it or name alternative tools, though the sibling list shows start_session for new sessions, which is implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_utility_matrixA
Return the current Nash scoring state: the latest round's per-candidate utility vectors, equilibrium states, and selected winner. Read-only (no engine mutation, no network).
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses read-only behavior, no mutation, no network, and lists return components. It does not cover error cases or prerequisites, but for a simple inspection tool this is sufficient.
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, direct and to the point, with no unnecessary words. It efficiently conveys purpose, behavior, and safety.
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 is simple with one parameter, and the description covers its purpose, return content, and safety. An output schema is present, so return values need not be fully detailed. The description is adequate but could mention that the session must exist.
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 for the only parameter (session_id). The description does not mention the parameter at all, leaving the agent to infer its role from the tool name and context. This is a gap given the description should compensate for missing schema descriptions.
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 returns the Nash scoring state including utility vectors, equilibrium states, and selected winner. It uses a specific verb ('Return') and resource ('current Nash scoring state'), and is distinct from sibling tools that modify or manage sessions.
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 notes 'Read-only (no engine mutation, no network)', which indicates when it is safe to use. However, it does not explicitly compare to alternatives or state when to use it versus other tools, but the safe nature is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keep_hereA
Record that the user declined to move the session. No filesystem change.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It clearly states the action is a record-keeping operation with no filesystem change, which is transparent for a non-destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundant information, front-loaded with key actions and constraints. Every word serves a purpose.
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 simple recording tool with output schema, the description is nearly sufficient. It could briefly mention what happens after recording or the return value, but the absence is not critical given the tool's simplicity.
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 coverage is 0% and description does not explain the session_id parameter. Although the parameter name is self-explanatory, the description should add context such as format or source of session_id.
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 records a user declining to move a session, with a specific verb ('Record') and resource ('session'). It distinguishes from siblings like 'move_session' by indicating this is an alternative action.
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 when to use (when user declines to move) and notes no filesystem change, but does not explicitly state when not to use or reference alternatives beyond implication.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modesA
Return both modes' descriptions + recommendations, for the model to relay to the user.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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. It indicates a read-only listing operation but does not elaborate on side effects or dependencies. The simplicity of the tool partially mitigates this 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 a single sentence with no waste, but it is terse and could be slightly more structured (e.g., listing what is returned). It earns its place but lacks minor formatting.
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 no parameters and an output schema, the description is complete. It tells the agent what the tool does and for whom (the model to relay to the user), which is sufficient given the tool's simplicity.
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 zero parameters and is fully covered by the description. The description adds meaning by explaining what the tool returns, which is not evident from the empty schema 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 clearly states it returns both modes' descriptions and recommendations, aligning with the tool name 'list_modes'. There are no sibling tools with similar names, so differentiation is not an issue.
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 used when the model needs to relay mode information to the user, but it does not explicitly state when to use it versus alternatives or provide any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sessionsA
List every session in the index.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the burden of behavioral disclosure. It states the tool lists sessions but does not disclose side effects, permissions, or behavior when no sessions exist. However, listing is inherently non-destructive and the simplicity partly compensates.
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 one sentence of five words, perfectly concise and front-loaded. Every word contributes meaning with no unnecessary elaboration.
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 no parameters and an output schema exists, the description is minimally adequate. However, it does not indicate what the output contains (e.g., session IDs, full objects) or handle edge cases like empty index. The output schema compensates somewhat, but the description could be slightly more informative.
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?
No parameters exist, so schema coverage is trivially 100%. Per guidelines, 0 parameters baseline is 4. The description does not need to add parameter info, and it correctly states no arguments are required.
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 uses specific verb 'List' and resource 'every session in the index' clearly stating the tool returns all sessions. The name and action clearly distinguish it from sibling tools like start_session, resume_session, etc., which perform different 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?
No explicit when-to-use or when-not-to-use guidance is provided. However, the tool's purpose is straightforward enough that usage is implied: use when needing a list of all sessions. Sibling list_modes also exists but is differentiated by name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_sessionA
Move a session's file to new_path.
`new_path` must be an absolute path (`~` is expanded). If it names
an existing directory, the session moves into that directory under
its current filename. Fails cleanly -- without touching the
session or the filesystem -- if the destination already exists
(unless `force=true`), isn't writable, or doesn't exist. `force`
accepts a real bool or a word ("true"/"yes"/...) -- tolerant input.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| new_path | Yes | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It thoroughly explains failure conditions (destination exists without force, not writable, etc.), tolerant input for 'force', and path expansion. Only minor gap is lack of mention about return value or side effects beyond file move.
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?
Description is front-loaded with the core action, uses clear sentence structure, and every sentence adds value. No wasted words.
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 only 3 simple parameters, the description covers most aspects: path handling, force behavior, failure modes. Output schema exists so return values need not be described. Slightly incomplete on session_id specification, but overall sufficient.
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 has 0% description coverage (no property descriptions), so description must compensate. It effectively documents 'new_path' (absolute path, directory behavior) and 'force' (tolerant input). 'session_id' is not detailed, but its purpose is clear from context. Overall adds significant meaning beyond 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?
Description clearly states the verb 'move' and the resource 'session file', specifies the key parameter 'new_path', and distinguishes the action from other operations like start or resume. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies when to use this tool (to move a session's file), but does not explicitly contrast with sibling tools or provide when-not-to-use guidance. Given that siblings are diverse session management tools, the omission of explicit differentiation is a gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
next_actionA
Authoritative resolver: given this session's persisted state and mode, return the exact next tool to call and a one-line directive. Safe to call at any point in a session's lifecycle -- before a mode is set, mid-critique-loop, right after a thought commits, at the final stage, or once finalized.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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. It mentions the tool is safe to call at any point, implying no destructive side effects, but lacks details on authentication requirements, rate limits, or behavior in error states. The existence of an output schema reduces the need for return value details.
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 primary purpose. It is concise with no wasted words, and the structure is effective.
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 only one parameter, no annotations, and an output schema exists, the description provides adequate context for the tool's role and when to call it. However, it lacks explanation of the parameter and edge cases, making it somewhat incomplete.
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 description does not mention the sole parameter 'session_id', its purpose, format, or constraints. With 0% schema description coverage, the description fails to compensate, leaving the agent to infer parameter meaning from context 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 clearly states the tool's purpose: it is an authoritative resolver that returns the exact next tool to call and a directive based on session state and mode. It distinguishes itself from sibling tools by being the resolver for next action.
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 it is safe to call at any point in the session lifecycle, listing various stages. While it doesn't mention when not to use it or provide alternatives, the context is clear and sufficient for proper usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refine_current_thoughtA
Rewrite the thought to address the critique. The server records
the new version and its normalized edit distance vs. the prior one.
challenged_assumptions accepts a JSON array or a comma/newline list.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| new_content | Yes | ||
| challenged_assumptions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and adds value by stating that the server records the new version and its normalized edit distance from the prior one. It does not contradict any annotations.
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?
Three concise sentences, each serving a purpose: purpose, behavioral record, param format. No wasted words.
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 no annotations and only partial schema info, the description covers purpose, recording behavior, and param format. It is fairly complete but could mention prerequisites or the effect of no critique.
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 coverage is 0%, so description must compensate. It adds meaning for 'challenged_assumptions' (accepts JSON array or list) but provides no extra info for required params like 'session_id' or 'new_content'.
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 'Rewrite the thought to address the critique,' which is a specific verb+resource action that distinguishes this tool from siblings like 'critique_current_thought' and 'begin_thought'.
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 receiving a critique but does not explicitly state when to use vs alternatives or when not to use. It provides no guidance on prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_sessionC
Return a session's persisted state.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It merely states 'return a session's persisted state' without disclosing behavior like error handling (e.g., session not found), side effects, or whether it restores state for further operations.
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 (one sentence), but it is under-specified. While brevity is positive, the lack of important information reduces its effectiveness.
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?
Although the tool is simple (one parameter, output schema exists), the description fails to explain the return value or any constraints. The context is incomplete for an agent to use the 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%, yet the description adds no meaning to the 'session_id' parameter. It does not explain what a session ID represents or how to obtain it, leaving the agent without sufficient guidance.
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 specifies the verb 'return' and the resource 'session's persisted state', which distinguishes it from siblings like 'start_session' (start new) and 'clear_session' (clear).
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 alternatives such as 'start_session' or 'list_sessions'. The description does not provide context for the agent to decide between resuming a session and other session-related actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
score_current_thoughtB
Self-score the refined thought across the 7 utility dimensions
(partial input is tolerated -- missing dims carry forward). scores
accepts a JSON object, fenced JSON, or "correctness: 0.8, ..." text.
Returns the convergence verdict: whether to commit or run another lens.
| Name | Required | Description | Default |
|---|---|---|---|
| scores | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It explains input format and return value but does not mention side effects, required prior steps, or whether the tool modifies state. The word 'Self-score' implies a read operation, but this is not confirmed.
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 with two sentences, each conveying essential information. The first sentence covers purpose and tolerance, the second covers input flexibility and output. There is no clutter, though breaking into bullet points could improve scanability slightly.
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 explains the output as a convergence verdict ('whether to commit or run another lens'), which is helpful. However, it does not detail the 7 utility dimensions, nor the exact format of the verdict (e.g., boolean or string). Given an output schema exists, these details could be deferred, but the description leaves a 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?
The description adds significant value beyond the schema by explaining that 'scores' accepts a JSON object, fenced JSON, or text like 'correctness: 0.8, ...'. This clarifies the flexible format, which the schema only hints at via anyOf. The session_id parameter lacks extra context, but the primary parameter is well 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 clearly states the tool self-scores the refined thought across 7 utility dimensions and returns a convergence verdict. It is specific enough to distinguish from sibling tools like critique_current_thought or refine_current_thought, though it does not explicitly contrast 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 mentions partial input tolerance and that missing dimensions carry forward, which provides some usage guidance. However, it does not explicitly state when to use this tool vs alternatives (e.g., critique_current_thought) or 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.
set_session_modeA
Set a session's mode. Only succeeds if no mode is set yet -- once set, mode is immutable for the life of the session.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that mode becomes immutable once set, which is critical behavioral info. Missing details on failure behavior or permissions, but for a simple tool with output schema, it's 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?
Two sentences, front-loaded with purpose and condition. No wasted words. Efficiently communicates the essential behavior.
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 low complexity (2 params, no nested objects, output schema exists), the description covers core behavior and condition. Minor gaps: does not explicitly state that the session must exist or describe the output/errors, but output schema likely fills that 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%, but the description adds nothing about parameters. While the schema provides enum values for mode, the description does not explain parameter roles or usage beyond the generic 'set a session's mode'.
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 sets a session's mode and adds a key condition (only succeeds if no mode set, then immutable). This distinguishes it from other session tools like clear_session or start_session.
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 a clear precondition ('Only succeeds if no mode is set yet'), guiding the agent on when to call. However, it does not explicitly mention when not to use it or list alternative tools for related operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_sessionA
Create a new session. Bootstraps the data store on first use.
Without `mode`, returns a mode-required directive payload. With a
valid `mode`, the session is created with that mode already set and
the tool proceeds immediately -- no separate `set_session_mode`
call needed. `stages` accepts a JSON array or a comma/newline
list; `overrides` a JSON object or its string form (tolerant input,
Task 13).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ||
| stages | No | ||
| question | Yes | ||
| overrides | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses bootstrapping on first use and that without mode it returns a directive payload. No annotations provided, so description bears full burden. Lacks details on idempotency, side effects, or permissions required for a write 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?
First sentence states purpose. Details follow logically: mode behavior, then stages/overrides format. Could be slightly more concise but is well-structured and 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?
Covers main behaviors and parameter formats. With output schema existing, return value documentation is sufficient. However, lacks explanation of bootstrapping implications and prerequisites. For a complex tool suite, more context on when to use vs siblings would improve 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 coverage, description compensates by explaining that stages accepts JSON array or comma/newline list and overrides accepts JSON object or string form. Mode behavior is clarified. Question parameter is required but self-explanatory.
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 clearly states 'Create a new session' and mentions bootstrapping the data store. It also describes behavior with/without mode. However, it does not explicitly differentiate from sibling tools like resume_session, which could be confused for session creation in some workflows.
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 guidance on when to include mode (to skip set_session_mode) and what happens without mode (returns directive payload). However, it does not mention when to use alternatives like resume_session for existing sessions or set_session_mode separately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_critiqueC
Record the critique produced by applying the current lens.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It identifies the tool as a write operation ('Record'), but fails to describe side effects, authentication requirements, rate limits, or return behavior. The presence of an output schema (context indicates one exists) is not mentioned, missing an opportunity to clarify outcomes.
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 extremely concise (one short sentence), but it sacrifices necessary detail. While brevity is valued, the description is underinformative for an agent to correctly invoke the tool. It lacks structure or front-loading of key information, resulting in poor usability.
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 2 parameters (both required, no schema descriptions) and no annotations, the description should compensate but fails to do so. It does not explain what constitutes a critique, how a lens relates, or how the tool fits into the workflow with siblings like 'begin_thought' or 'advance_stage.' The output schema exists but is not leveraged.
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%, meaning descriptions are absent for both parameters (text, session_id). The tool description does not explain these parameters; it only vaguely references 'critique produced by applying the current lens.' It does not clarify the role of session_id or the format of text, leaving the agent without essential semantic context.
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 ('Record') and resource ('critique'), indicating the tool saves a critique. However, it does not differentiate from sibling tools like 'critique_current_thought' or 'score_current_thought', which may also involve recording or producing critiques. The phrase 'applying the current lens' is vague and lacks clarity.
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 is provided on when to use this tool versus alternatives. The description implies it is used after applying a lens, but there are no explicit use cases, prerequisites, or exclusions. Sibling tools exist for similar actions (e.g., critique_current_thought), but no comparative context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
summarize_sessionA
Deterministic extractive digest of this session's committed
thoughts. scope="stage" (default) covers only the current stage;
scope="all" covers every stage. No LLM calls -- this is text
extraction, not summarization by inference.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | stage | |
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even without annotations, the description discloses key behavioral traits: deterministic, extractive, no LLM calls, and scoping behavior. It is transparent about what the tool does and does not do.
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 main verb and resource, and contains no unnecessary words. Every sentence adds value.
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 presence of an output schema, the description does not need to explain return values. It covers all relevant aspects: purpose, parameters, behavioral traits, and scope.
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 adds value by explaining the scope enum and default. For session_id, it is standard and self-explanatory, so the description is adequate.
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 it produces a deterministic extractive digest of committed thoughts, and distinguishes it from LLM-based summarization. It specifies the scope parameter behavior, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells when to use the tool (to get a digest of committed thoughts) and provides details on scope. It does not explicitly list alternatives, but the purpose is clear enough to guide usage among siblings.
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.
25 tool updates
v0.1.0- First observed
advance_stage - First observed
advance_subagent_round - First observed
begin_subagent_thought - First observed
begin_thought - First observed
clear_session - First observed
commit_subagent_thought - First observed
commit_thought - First observed
compress_history - First observed
critique_current_thought - First observed
export_session - First observed
finalize_session - First observed
import_session - First observed
inspect_utility_matrix - First observed
keep_here - First observed
list_modes - First observed
list_sessions - First observed
move_session - First observed
next_action - First observed
refine_current_thought - First observed
resume_session - First observed
score_current_thought - First observed
set_session_mode - First observed
start_session - First observed
submit_critique - First observed
summarize_session
TDQS
Scored across 25 tools
Most tools have distinct purposes, but the presence of begin_thought vs. begin_subagent_thought and commit_thought vs. commit_subagent_thought could cause confusion despite clear descriptions. Overall, the set is well-differentiated.
Tool names are almost all in consistent verb_noun snake_case. 'keep_here' deviates slightly, and 'next_action' is not a verb_noun pair, but the pattern is generally predictable.
25 tools is on the high side, bordering on heavy for an MCP server. While each tool appears justified for the complex workflow, the count could overwhelm agents.
The tool set covers the full lifecycle: session management, thought creation/critique/refinement/commit, subagent rounds, state inspection, export/import. Only minor gaps exist, such as the lack of a tool to directly delete a thought.
Maintenance
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.
An MCP memory server. One memory your agents share — across models, devices and apps.
MCP server for generating rough-draft project plans from natural-language prompts.
Related MCP Servers
- AlicenseAqualityDmaintenanceA structured problem-solving MCP server that breaks down complex tasks into sequential steps, supports iterative refinement and branching, and helps maintain context and explore alternative reasoning paths.143 npm42MIT
- FlicenseAqualityDmaintenanceA structured reasoning and problem-solving MCP server that helps track step-by-step analysis with confidence levels, branching, and revisions, ideal for complex multi-step tasks like code optimization and debugging.1-
- FlicenseAqualityDmaintenanceAn MCP server that exposes tools for sub-agent style reasoning across multiple LLM providers, enabling delegation of prompts to various models and running critique loops, debates, red-teaming, and answer ranking.6-
- FlicenseNot gradedqualityBmaintenanceA self-hosted MCP server that provides tools for structured reasoning, confidence calibration, and detecting recurring gaps in AI outputs, aiming to reduce workload by improving verification and attention allocation.-