Skip to main content
Glama

@putervision/state-memory-mcp

npm version version npm downloads CI Node TypeScript Website License: MIT

@putervision/state-memory-mcp is a zero-infrastructure, deterministic Model Context Protocol (MCP) server that provides AI coding assistants (such as Cursor, Claude Code, Gemini, or Copilot) with a structured, persistent SQLite graph for tracking workflow stateβ€”tasks, decisions, artifacts, plans, blockers, and their semantic relationships.

🌐 Official Documentation & Website: statememorymcp.com


⚑ Quick Start & Installation

Prerequisites: Node.js >= 18.18.0

# 1. Install globally
npm install -g @putervision/state-memory-mcp

# 2. Navigate to your project directory
cd your-project

# 3. Initialize state-memory-mcp
# Creates .state-memory-mcp/, updates .gitignore, registers project,
# and scaffolds IDE instructions and MCP configs for Cursor, Claude, VS Code, Windsurf, etc.
state-memory-mcp init

# Done! Restart your IDE or Agent Manager to activate.

Alternative Options

# Run directly via binary (after global install)
state-memory-mcp run

# Re-initialize across all registered workspace projects
state-memory-mcp init-global

Related MCP server: AIVectorMemory

🌟 Key Highlights

  • 🧠 Deterministic State Memory & Compact TaskSlices: Zero LLM in the loop for memory operations; fast, deterministic SQLite graph traversals, and sub-1KB TaskSlice extraction for System 1 fast path evaluation.

  • ⚑ 13 Production-Grade Consolidated MCP Tools: Full CRUD, relationship linking, DAG cycle checks, FTS5 search, TF-IDF RAG, time-travel history rollback, Spec-Driven Development, and auto-healing validation.

  • πŸ“‰ Efficient Context Management & Decision Thresholding: Offloads context to a local SQLite database, filters sub-0.70 routine decisions to append-only event logs to prevent graph bloat, and preserves high-significance turns.

  • πŸš€ 67%–74% Latency Reduction: Eliminates multi-step file scanning loops; agents retrieve unblocked tasks and blockers in milliseconds.

  • 🀝 Multi-Agent Blackboard: Shared Context Store allowing parallel subagents to publish decisions, tasks, and blocker updates safely.

  • 🎨 Interactive 3D Visualizer: Browser-based dark-mode 3D WebGL force-directed graph visualizer (state-memory-mcp view).

  • πŸ”— Dual-MCP Synergy: Pair with @putervision/vision-memory-mcp for visual state caching, perceptual hashing, and cryptographic multimodal evidence packs.

  • πŸ›‘οΈ 100% Local & Private: Local-first architecture; all state stays inside .state-memory-mcp/ in your workspace.


πŸ› οΈ MCP Tool Suite

@putervision/state-memory-mcp provides 13 production-grade consolidated MCP tools organized across 5 core workflow domains:

  • Graph & Relationships: manage_nodes (node CRUD, FTS5/TF-IDF vector search, atomic batch mutations, observation notes, thresholded fast decision logging), manage_edges (typed DAG links, multimodal visual state linking).

  • Task Execution & Work Queue: manage_tasks (topological dependency queue, blocker detection, task completion with artifacts, auto-prune), manage_sessions (agent attribution, turn tracking, context bootstrap).

  • Spec-Driven Development (SDD): manage_specs (PRD/RFC parsing, requirement-to-task decomposition, live acceptance criteria verification, compliance scoring).

  • Analytics, Audit & Diagnostics: get_analytics (velocity, burndown, token ROI, cognitive load, critical path), get_events (SHA-256 tamper-evident event ledger), run_diagnostics (DAG validation, health checks, AST reference integrity).

  • Data, Snapshots & Multi-Agent: manage_snapshots (checkpoints, time-travel undo), manage_database (backups, checksum audits, VCS branch merge), manage_data (bulk import/export, ML trajectories with interleaved fast decision events), query_graph (subgraphs, dependency tracing, raw SQL, sub-1KB compact_slice), use_blackboard (multi-agent asynchronous topic board).

πŸ‘‰ For complete parameter specifications, return schemas, and example payloads, see the Tools Reference Guide and Formal API Reference.


πŸš€ Architecture & State Graph Lifecycle

                      AI Agent Prompt / Task
                                β”‚
                                β–Ό
               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
               β”‚  Agent Session Attribution       β”‚ ──▢ manage_sessions(action: "start")
               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚
                                β–Ό
               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
               β”‚  Context & Task Prioritization   β”‚ ──▢ get_analytics(action: "summary")
               β”‚                                 β”‚ ──▢ manage_tasks(action: "next")
               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚
                                β–Ό
               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
               β”‚  Deterministic Graph Mutation   β”‚ ──▢ manage_nodes(action: "create"|"update")
               β”‚  (Tasks, Decisions, Blockers)   β”‚ ──▢ manage_edges(action: "add"|"link_visual")
               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚
                                β–Ό
               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
               β”‚  Spec & Integrity Verification  β”‚ ──▢ manage_specs(action: "compliance"|"verify")
               β”‚                                 β”‚ ──▢ run_diagnostics(action: "validate")
               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚
                                β–Ό
               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
               β”‚  Persistent SQLite Storage      β”‚ ──▢ .state-memory-mcp/graph.db (WAL mode)
               β”‚  Append-Only Event Ledger       β”‚ ──▢ SHA-256 Cryptographic Audit Chain
               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“š Documentation Directory

Explore dedicated guides and deep dives in the docs/ directory:

Guide

Description

πŸ—οΈ Architecture & Codebase Distillation

High-signal architectural overview, module inventory, data flows, and design decisions.

πŸš€ v0.10 β†’ v1.0 Migration Guide

Step-by-step migration guide, legacy tool mapping table, and STATE_MEMORY_COMPAT mode.

πŸ’‘ Value Proposition & Theory

Cognitive Externalization, FSM Formalism, First-Hop Determinism & Benchmark metrics.

πŸ“‹ State Memory Concepts

Node Types (task, decision, blocker...), Status Values, Typed Edges & Seeding Guidelines.

βš™οΈ Configuration & IDE Setup

Auto-Initialization details, Environment Variables table, and Editor Configs (Cursor, VS Code, Claude, Antigravity, Windsurf).

πŸ› οΈ CLI Command Reference

CLI flags (init, run, view, inspect, metrics, audit, doctor, backup, restore, merge) & Git Scanner.

⏱️ Sessions, Snapshots & SDD

Session Lifecycle, Event Audit Trail, Snapshots, Trajectories, Sub-directory support & Spec-Driven Development.

🧰 Tools, Resources & Prompts

Complete reference for all 13 Consolidated MCP Tools, read-only state-memory:/// Resources, and Prompt templates.

πŸ“˜ Formal API Reference

Formal parameters, return schemas, and code signatures for all MCP endpoints.

🎨 3D Visualizer Guide

Viewing and exporting the interactive WebGL 3D Force-Directed Graph visualizer.

πŸ—„οΈ Database Schema

SQLite tables, columns, indexes, and schema migration history.


πŸ“– Agent Playbook: 5-Step Canonical Workflow

When an autonomous AI agent enters a repository with state-memory-mcp:

1. Orient & Bootstrap ──▢ manage_sessions(action: "start") + get_analytics(action: "summary")
2. Task Selection     ──▢ manage_tasks(action: "next") + manage_tasks(action: "find_blockers")
3. Trace Context      ──▢ query_graph(action: "trace") + manage_specs(action: "compliance")
4. Execute & Record   ──▢ manage_nodes(action: "create", type: "decision") + manage_edges(action: "link_visual")
5. Validate & Close   ──▢ run_diagnostics(action: "validate") + manage_tasks(action: "complete") + manage_sessions(action: "end")

πŸ§ͺ Testing

# Run full unit, integration, and performance benchmark test suite across all 113 test files (418 tests)
npm run test

βš–οΈ License & Disclaimers

Developed and maintained by PuterVision. Released under the MIT License.

  • Local Storage Guarantee: All graph data, decision records, and event logs remain 100% local in your workspace. No telemetry or project data is ever transmitted.

  • Trademarks & Non-Affiliation: Product names (Cursor, Claude Code, Gemini, Windsurf, VS Code, GitHub, SQLite) are property of their respective owners and used solely for compatibility identification.

Available Tools

13 tools
get_analyticsA
Read-onlyIdempotent

Compute workflow metrics, velocity, burndown, cognitive load, decision lineages, and contradiction audits (actions: summary, velocity, burndown, value_metrics, cognitive_load, critical_path, context_snapshot, active_context, decision_trail, find_related_decisions, contradictions). Use get_analytics instead of query_graph when calculating high-level progress statistics, ROI metrics, or auditing decision conflicts.

Returns summary dashboard, velocity charts, burndown series, cognitive load metrics, critical path DAG, or contradiction reports.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of historical days for burndown (default: 14).
actionYesThe analytics or decision analysis action to execute: summary, velocity, burndown, value_metrics, cognitive_load, critical_path, context_snapshot, active_context, decision_trail, find_related_decisions, contradictions.
node_idNoDecision node ID for decision_trail.
projectNoTarget project name or slug.
artifact_idNoArtifact node ID for find_related_decisions.
window_daysNoNumber of days to analyze for velocity (default: 14).
milestone_idNoMilestone ID for critical_path calculation.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds useful value by listing the shape of returned artifacts (dashboard, velocity charts, burndown series, DAG, reports) despite no output schema existing, though it does not disclose per-action behavior nuances.

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

Conciseness3/5

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

The routing rule is well front-loaded, but the eleven-action list is repeated twice within the description itself and again in the schema, which is redundant. It is somewhat over-sized for the information conveyed.

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

Completeness4/5

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

With no output schema, the description usefully summarizes the return values, and annotations cover the safety contract. It is close to complete for a multi-action tool, missing only action-level guidance about which parameters apply to which action.

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

Parameters3/5

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

Schema description coverage is 100% and the enum plus per-parameter descriptions fully document the inputs, so the schema carries the burden. The description restates the action list but adds no syntax, defaults, or format detail beyond what the schema already provides.

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

Purpose5/5

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

The description gives a specific verb+resource ('Compute workflow metrics') and enumerates the concrete analytics it produces, so an agent knows exactly what this tool does. It also explicitly distinguishes itself from the similarly-named sibling query_graph.

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

Usage Guidelines4/5

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

It names the alternative (query_graph) and the conditions that select this tool (high-level progress statistics, ROI metrics, decision-conflict auditing). However, the routing guidance only covers the metrics/high-level cases and does not explain when to pick the decision-analysis actions (decision_trail, find_related_decisions, context_snapshot) over other siblings.

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

get_eventsA
Read-onlyIdempotent

Inspect the append-only event audit ledger, query structured changesets, and generate session post-mortems (actions: log, changelog, post_mortem). Use get_events instead of manage_snapshots when examining the granular chronological sequence of mutations rather than restoring state checkpoints.

Returns chronological event array, structured changeset diff, or session post-mortem markdown report.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum events to return (1-1000).
sinceNoISO timestamp or relative duration (e.g. 2h, 1d) for log or changelog.
untilNoEnding ISO timestamp for log.
actionYesThe event query action to execute: log, changelog, post_mortem.
offsetNoPagination offset for log.
projectNoTarget project name or slug.
git_branchNoGit branch filter for changelog.
session_idNoSession ID for log or post_mortem.
since_sessionNoSession ID to diff from for changelog.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description still adds value by characterizing the ledger as 'append-only' (immutability of the underlying data) and by stating the shape of each action's return, which the annotations do not.

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

Conciseness5/5

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

Three sentences: purpose plus actions, then sibling routing, then return values. Nothing is redundant, and the routing constraint that determines tool selection is front-loaded rather than buried.

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

Completeness4/5

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

For a 9-parameter read-only tool with no output schema, the description covers purpose, selection criteria, and the return format for each action, which is enough to call it correctly. It does not address pagination behavior despite log exposing limit/offset, a minor residual gap.

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

Parameters4/5

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

Schema coverage is 100%, so per-parameter syntax is already documented and the baseline is 3. The description goes beyond the schema by mapping each action value to a distinct output (chronological event array, structured changeset diff, session post-mortem markdown), which is semantics the enum listing alone does not convey.

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

Purpose5/5

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

The description names a specific resource ('append-only event audit ledger'), three concrete actions (log, changelog, post_mortem), and the returned artifacts. It is immediately distinguishable from siblings like manage_snapshots, which it explicitly positions itself against.

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

Usage Guidelines5/5

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

It gives an explicit either/or routing rule: use get_events over manage_snapshots when examining the chronological sequence of mutations rather than restoring checkpoints. The parenthetical action list also tells the agent which sub-mode to select without opening the schema.

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

manage_dataA
Destructive

Export and import graph structures, issue tracker items, fine-tuning trajectories, and multimodal synergy metrics (actions: export_graph, export_issues, export_trajectories, export_joint_trajectories, export_synergy_metrics, from_tick, import_graph, import_issues, import_spec). Use manage_data instead of query_graph when bulk-transferring graph data or generating AI training datasets.

Returns serialized graph payload, trajectory dataset, synergy metrics, or import statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault
edgesNoArray of edge objects for import_graph.
forceNoForce overwrite during import.
limitNoMaximum items to export (1-1000).
nodesNoArray of node objects for import_graph.
sinceNoStart timestamp for trajectories.
untilNoEnd timestamp for trajectories.
actionYesThe data export or import action to execute: export_graph, export_issues, export_trajectories, export_joint_trajectories, export_synergy_metrics, from_tick, import_graph, import_issues, import_spec.
formatNoData format.
issuesNoArray of issue objects for import_issues.
offsetNoOffset for trajectories.
projectNoTarget project name or slug.
file_pathNoFile path for import_spec.
session_idNoSession ID filter for trajectories.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the destructive/import consequences are partly carried by structured metadata. The description adds the return payload types (serialized graph, trajectory dataset, synergy metrics, import statistics), which is useful, but it never states that import actions can overwrite or destroy existing data β€” a notable omission for a destructive tool.

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

Conciseness4/5

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

Two tight sentences: the first front-loads the resource scope and action list, the second routes the agent away from query_graph, and a third short sentence covers return values. Dense but every sentence earns its place; the action enumeration is long yet necessary for a nine-action tool.

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

Completeness4/5

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

With 13 parameters, 100% schema coverage, and no output schema, the description sensibly supplies the return-value summary the output schema lacks and states the resource scope. It is complete enough to call correctly, though it leaves per-action parameter applicability to the schema descriptions.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description only restates the action names already enumerated in the action enum and adds no syntax, format, or applicability guidance beyond what the schema documents (e.g., 'edges for import_graph').

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

Purpose4/5

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

The description gives specific verbs (export, import) and enumerates the four resource families (graph structures, issue tracker items, fine-tuning trajectories, synergy metrics) plus the full action list. It clearly differentiates from query_graph. It loses a point only because the tool is a broad nine-action facade whose scope is hard to hold in mind from prose alone.

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

Usage Guidelines4/5

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

It explicitly names the alternative (query_graph) and the condition that selects this tool instead: bulk-transferring graph data or generating AI training datasets. It does not address the other import/export-adjacent siblings (manage_specs, manage_snapshots), so the 'when not' coverage is partial.

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

manage_databaseA
Destructive

Physical SQLite database maintenance, backups, integrity checks, and Git VCS state sync (actions: backup, restore, audit, merge, branch_diff, branch_merge). Use manage_database instead of manage_snapshots when managing physical SQLite files, cross-branch merges, or database corruption audits.

Returns database backup path, foreign key integrity report, branch merge conflict report, or diff.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoForce overwrite during restore or merge.
actionYesThe database administration or VCS sync action to execute: backup, restore, audit, merge, branch_diff, branch_merge.
projectNoTarget project name or slug.
backupPathNoSource backup file path for restore.
outputPathNoTarget destination file path for backup.
sourcePathNoSource SQLite database path for merge.
source_branchNoSource git branch for branch_merge.
target_branchNoTarget git branch to compare or merge against.
resolution_strategyNoConflict resolution strategy for branch_merge.

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description adds useful context about VCS sync and return types, but it does not go beyond annotations to explain which actions overwrite data, what permissions are needed, or how conflicts are resolved. A 3 is appropriate given the annotations carry the main behavioral burden.

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

Conciseness5/5

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

Three sentences, each earning its place: the first scopes the tool and lists actions, the second routes from a sibling, and the third summarizes return values. It is front-loaded and contains no redundant filler.

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

Completeness4/5

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

The description covers the tool's purpose, alternative sibling, and return values, and the annotations plus full schema coverage handle safety and parameter semantics. It does not explicitly map which parameters apply to which action, though the schema descriptions do this adequately. The definition is complete enough for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter already has a semantic description in the schema. The description lists the actions but does not add syntax, format, or conditional logic beyond what the schema provides, making the baseline 3 correct.

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

Purpose5/5

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

The description states a specific verb and resource ('Physical SQLite database maintenance, backups, integrity checks, and Git VCS state sync') and enumerates all six actions. It also explicitly distinguishes itself from the sibling manage_snapshots, so an agent can tell what this tool does without opening the schema.

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

Usage Guidelines5/5

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

It gives explicit routing guidance: use manage_database instead of manage_snapshots when managing physical SQLite files, cross-branch merges, or database corruption audits. This names the alternative and the condition that selects it, leaving little to inference.

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

manage_edgesA
Destructive

Manage typed graph relationships between nodes (actions: add, remove, batch_add, link_visual). Use manage_edges instead of manage_nodes when creating or modifying relationships between existing entities rather than entity data itself.

Returns created edge record, batch count, or visual link confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoThe semantic relationship type.
edgesNoArray of edge objects for batch_add.
actionYesThe edge management action to execute: add, remove, batch_add, link_visual.
projectNoTarget project name or slug.
metadataNoOptional metadata for link_visual.
source_idNoID of the source node.
target_idNoID of the target node.
propertiesNoOptional metadata properties for the edge.
source_urlNoOptional URL where the visual state was captured.
relationshipNoRelationship type for link_visual (e.g. renders_state, blocked_by_visual_state).
visual_state_idNoVisual Memory snapshot/state ID for link_visual.
visual_descriptionNoOptional text description for the visual state.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so mutation semantics are covered structurally. The description adds value beyond that by disclosing the three distinct return shapes (created edge record, batch count, visual link confirmation), which matters because there is no output schema. It stops short of saying what a remove destroys or whether edges are recoverable.

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

Conciseness4/5

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

Three sentences with the action list front-loaded and zero filler; each sentence carries distinct information (scope, sibling routing, return shape). The action enumeration is mildly redundant with the schema enum but is defensible as orientation material.

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

Completeness4/5

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

For a 12-parameter, nested-object, no-output-schema mutation tool, the description covers scope, sibling disambiguation, and expected returns, which are the main gaps an agent would hit. It leaves the batch_add edge object shape and link_visual prerequisites entirely to the schema, which is acceptable given 100% schema coverage.

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

Parameters3/5

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

Schema description coverage is 100%, so all 12 parameters carry their own descriptions and the description need not re-document them. The description only restates the four action values already listed in the action enum's own description, adding no syntax or format detail beyond the schema.

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

Purpose5/5

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

States a specific resource ('typed graph relationships between nodes') and enumerates the four supported actions inline. It goes further by explicitly naming the sibling it is not (manage_nodes) and the boundary condition that separates them, so an agent can route correctly without opening either schema.

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

Usage Guidelines4/5

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

The 'Use manage_edges instead of manage_nodes when...' sentence gives a clear selection rule against the most confusable sibling. It does not, however, explain when to pick add vs batch_add vs link_visual, leaving intra-tool action selection to the enum names.

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

manage_nodesA
Destructive

Manage graph nodes in the state graph (actions: create, update, get, remove, list, search, batch_create, batch_update, add_note). Use manage_nodes instead of manage_tasks when operating on general node types (decisions, artifacts, plans, milestones, blockers) rather than runnable task workflow states.

Returns node object, edge connections, batch results, or search matches.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoUnique node identifier for get, update, or remove.
idsNoArray of node IDs for batch_update.
tagsNoArray of searchable tags.
textNoText note content for add_note.
typeNoThe type classification of the node.
limitNoMaximum number of items to return (1-1000).
nodesNoArray of node payloads for batch_create.
queryNoSearch term for full-text search.
titleNoTitle or label of the node.
actionYesThe node management action to execute: create, update, get, remove, list, search, batch_create, batch_update, add_note.
offsetNoNumber of items to skip for pagination.
statusNoStatus of the node (e.g. pending, in_progress, done, blocked, active, accepted, current).
compactNoWhether to return a lightweight compact summary.
projectNoTarget project name or slug.
metadataNoArbitrary structured key-value metadata.
algorithmNoSearch algorithm for search action.
attach_toNoNode ID to attach observation note to via references edge.
git_branchNoGit branch filter.
session_idNoActive session identifier for change attribution.
include_edgesNoWhether to include inbound/outbound edges on get.
expected_versionNoOptimistic concurrency version check for update.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is partly covered. The description adds the return-shape surface ('Returns node object, edge connections, batch results, or search matches'), which is useful given there is no output schema, but it never warns which actions mutate/destroy data (remove, batch_update) or mention the optimistic concurrency behavior implied by expected_version.

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

Conciseness4/5

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

Two compact sentences plus a short return-shape line, with the action enumeration and the sibling-routing rule front-loaded. No filler, though the parenthetical action list slightly duplicates the action enum in the schema.

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

Completeness3/5

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

For a 21-parameter, 9-action, nested-object tool with no output schema, the description covers the action set and the return surface but omits action/parameter coupling (e.g. add_note requires attach_to/text, batch_update requires ids) and any warning that some actions are destructive. Adequate but with clear gaps for a tool this broad.

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

Parameters3/5

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

Schema description coverage is 100% across all 21 parameters, so the schema already carries the parameter semantics; the description adds no per-parameter meaning beyond the action list. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose5/5

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

The description names a specific verb+resource ('Manage graph nodes in the state graph') and enumerates the nine supported actions, so an agent knows exactly what surface this tool exposes. It also explicitly distinguishes itself from the closest sibling by routing runnable task states to manage_tasks.

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

Usage Guidelines4/5

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

It gives an explicit when-to-use rule with an alternative named: 'Use manage_nodes instead of manage_tasks when operating on general node types (decisions, artifacts, plans, milestones, blockers) rather than runnable task workflow states.' That is clear routing context, but it offers no guidance on when to pick specific actions versus the overlapping query_graph sibling (e.g. search), and no exclusions for the destructive actions.

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

manage_sessionsA

Manage agent tracking sessions and multi-turn workflow attribution (actions: start, end, list, bootstrap). Use manage_sessions instead of manage_tasks when establishing agent session boundaries and tracking multi-turn workflows rather than individual work items.

Returns session record, bootstrap context snapshot, or active session listing.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of sessions to list (1-1000).
actionYesThe session management action to execute: start, end, list, bootstrap.
projectNoTarget project name or slug.
agent_idNoAgent identifier for session tracking and change attribution.
metadataNoArbitrary session metadata.
session_idNoUnique session identifier for end.
task_limitNoMaximum runnable tasks to return on bootstrap.
active_onlyNoWhether to return only active unclosed sessions on list.

TDQS

A3.9/5.0
Behavior3/5

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

Annotations declare write (readOnlyHint=false), non-destructive, non-idempotent. The description adds the return shapes (session record, bootstrap context snapshot, active session listing), which is useful context. However it does not disclose what 'end' does to state, permission needs, or idempotency behavior, so it stays at baseline-plus.

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

Conciseness4/5

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

Three compact sentences, front-loaded with purpose and action list, then routing, then returns. No filler, though the parenthetical action list and schema already overlap slightly.

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

Completeness4/5

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

For a multi-action, 8-parameter tool with no output schema, the description covers purpose, action set, sibling routing, and return shapes. It is largely complete, though the destructive semantics of 'end' and per-action prerequisites remain unstated.

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

Parameters3/5

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

Schema description coverage is 100%, so all eight parameters (including limit, active_only, session_id scope, task_limit) are already documented in the schema. The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.

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

Purpose5/5

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

The description states a specific verb+resource (manage agent tracking sessions / multi-turn workflow attribution), enumerates the four actions (start, end, list, bootstrap), and explicitly contrasts itself with the sibling manage_tasks. An agent can distinguish this from manage_tasks without opening either schema.

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

Usage Guidelines4/5

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

It gives explicit routing: 'Use manage_sessions instead of manage_tasks when establishing agent session boundaries and tracking multi-turn workflows rather than individual work items.' That names the alternative and the deciding condition, but it offers no guidance on choosing among its own actions (start vs. bootstrap vs. list) or other siblings.

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

manage_snapshotsA
Destructive

State checkpointing, time travel, diffing, and undo operations (actions: save, list, diff, get_state, revert, undo, get_history). Use manage_snapshots instead of manage_database when reverting state graph mutations or comparing checkpoints rather than physical database file maintenance.

Returns snapshot record, state graph diff, historical graph state, or node audit history.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoForce snapshot even if node count is high.
limitNoMaximum snapshots to list (1-1000).
actionYesThe snapshot management action to execute: save, list, diff, get_state, revert, undo, get_history.
node_idNoNode ID for undo or get_history.
projectNoTarget project name or slug.
timestampNoISO 8601 timestamp for get_state or revert.
session_idNoOptional session identifier for save.
snapshot_id_aNoFirst snapshot ID for diff.
snapshot_id_bNoSecond snapshot ID for diff.

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description adds return types but never clarifies that revert/undo mutate state while list/diff/get_state/get_history are safe reads, leaving mixed-action risk unstated.

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

Conciseness4/5

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

Two tight paragraphs with the core capability front-loaded before the alternative and the return summary. The parenthetical action list is mildly redundant with the schema enum, but no sentence is wasted.

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

Completeness4/5

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

For a nine-parameter, seven-action tool with no output schema, the description supplies purpose, differentiation, action inventory, and return types, which is substantial. It lacks per-action parameter applicability (e.g., timestamp for get_state/revert), the one remaining gap for a tool this complex.

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

Parameters3/5

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

Schema description coverage is 100% and each parameter is documented, so the burden is on the schema. The description's restatement of the action list duplicates the enum and adds no mapping of which parameters apply to which action.

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

Purpose5/5

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

States specific verbs and resources (state checkpointing, time travel, diffing, undo) and enumerates the supported actions, so an agent knows exactly what domain this covers. It explicitly distinguishes itself from the sibling manage_database, making it separable without opening the schema.

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

Usage Guidelines4/5

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

Explicitly routes the agent away from manage_database with a concrete condition: use this when reverting state graph mutations or comparing checkpoints rather than physical database file maintenance. It does not advise when to pick among the seven internal actions or when not to snapshot at all, so it stops short of a full 5.

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

manage_specsA

Spec-Driven Development (SDD) lifecycle and workflow template generation (actions: scaffold, ingest, export, compliance, verify, decompose_feature, template). Use manage_specs instead of manage_nodes when authoring, ingesting, or verifying formal SDD specifications against acceptance criteria.

Returns specification AST, compliance matrix, verification verdict, or decomposed feature plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName of template or feature.
titleNoTitle of feature spec or template.
actionYesThe specification or template action to execute: scaffold, ingest, export, compliance, verify, decompose_feature, template.
formatNoFormat of spec file.
statusNoVerification status for verify.
projectNoTarget project name or slug.
spec_idNoSpec node ID for export.
subtasksNoArray of subtask titles for decompose_feature.
templateNoTemplate type for template action.
file_pathNoFile path of PRD or Gherkin feature for ingest.
descriptionNoFeature description for decompose_feature.
criterion_idNoAcceptance criterion node ID for verify.
observation_idNoOptional observation node ID containing test proof.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations supply the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false), so the agent already knows this is a non-destructive mutation surface. The description adds useful return-shape context (AST, compliance matrix, verdict, feature plan), which matters since there is no output schema. However it discloses nothing about per-action side effects, permissions, or whether operations are reversible, so it is only partially transparent.

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

Conciseness4/5

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

Two front-loaded sentences plus a return sentence, no filler. The action list is repeated in the description, the action enum, and the action property description, which is mild redundancy, but each sentence otherwise earns its place.

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

Completeness3/5

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

For a tool with 7 actions and 13 parameters, the description covers the routing question and the return types, and the schema covers parameters fully. What is missing is any per-action contextual detail, for example which parameters apply to ingest versus verify, leaving the agent to infer mappings from parameter names alone.

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

Parameters3/5

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

Schema description coverage is 100%, so each of the 13 parameters is already documented in the schema, including the action enum. The description only restates the action list and return types, adding no per-parameter meaning or per-action parameter mapping. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description names a specific domain (Spec-Driven Development) and enumerates the actions the tool performs, so the agent understands it handles SDD spec authoring, ingestion, and verification plus template generation. It distinguishes itself from the closest sibling, manage_nodes, which is strong. It stops short of 5 because the tool is a broad multi-action bundle and the description never sharpens what each action's purpose is.

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

Usage Guidelines4/5

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

It gives an explicit routing rule: use manage_specs instead of manage_nodes when authoring, ingesting, or verifying formal SDD specifications against acceptance criteria. That is a clear when-to-use with a named alternative. It lacks per-action selection guidance (when to use verify vs compliance vs decompose_feature), which keeps it from a 5.

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

manage_tasksA

Task prioritization, workflow execution, blockers, and stale task management (actions: next, complete, find_blocked, find_stale, find_blockers, find_similar_blockers, auto_prune). Use manage_tasks instead of query_graph when querying runnable tasks by priority order or resolving execution blockers.

Returns prioritized runnable tasks, blocker hierarchy, similar resolved blockers, or completion confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoNode type filter for find_stale.
limitNoMaximum tasks to return (1-1000).
queryNoQuery text for find_similar_blockers.
actionYesThe task management action to execute: next, complete, find_blocked, find_stale, find_blockers, find_similar_blockers, auto_prune.
statusNoStatus filter for find_stale.
node_idNoOptional node ID to check blockers for.
projectNoTarget project name or slug.
task_idNoTask node ID to complete.
thresholdNoSimilarity threshold for find_similar_blockers (0.0 - 1.0).
git_branchNoGit branch filter.
older_thanNoDuration threshold for staleness (e.g. 7d, 24h, 30m).
decision_idNoDecision node ID for find_blocked.
target_statusNoTarget status to assign when auto-pruning (e.g. cancelled).
artifact_titleNoOptional title of artifact produced on complete.
include_contextNoWhether to include parent plan/milestone and blocker context on next.
visual_state_idNoOptional visual state ID to link on complete.
artifact_metadataNoOptional metadata for produced artifact.
artifact_file_pathNoOptional file path for produced artifact.
include_transitiveNoWhether to include transitive blockers.
visual_relationshipNoVisual relationship for complete (default: renders_state).

TDQS

A3.6/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false with destructiveHint=false, and the description is consistent with mutation-triggering actions (complete, auto_prune). It adds useful disclosure of what each action returns, which annotations do not cover. However, it says nothing about side effects of auto_prune, whether completion/pruning is reversible, or permission requirements for a tool whose default action set includes mutations.

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

Conciseness4/5

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

Three sentences, front-loaded with the action inventory then the routing rule then return values; no filler. It is dense but every sentence carries information, and the action list could arguably be deferred to the schema's enum.

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

Completeness4/5

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

For a 20-parameter, multi-action tool with no output schema, the description supplies return-value orientation per action and a sibling-routing rule. The schema's per-parameter action scoping compensates for the missing action-to-parameter mapping. Remaining gap is the absence of any safety/reversibility note around the mutating actions.

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

Parameters3/5

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

Schema description coverage is 100% and each param description already scopes itself to an action (e.g., 'for find_stale', 'for find_similar_blockers'), so the schema does the heavy lifting. The description adds no syntax, format, or default detail beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

The description enumerates the exact action set (next, complete, find_blocked, find_stale, find_blockers, find_similar_blockers, auto_prune) and names the resource domain, so an agent knows this is a task-lifecycle tool. It also differentiates itself from a sibling by name (query_graph). It stops short of a single crisp verb+resource statement, but coverage is strong.

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

Usage Guidelines4/5

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

It gives an explicit routing rule: use manage_tasks instead of query_graph when querying runnable tasks by priority order or resolving execution blockers. That names an alternative and the selecting condition. It does not, however, explain when to prefer one action over another within the tool, nor any exclusions.

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

query_graphA
Read-onlyIdempotent

Query graph topology, neighborhoods, dependency paths, safe read-only SQL queries, and compact System One task slices (actions: subgraph, trace, raw, natural_language, compact_slice). Use query_graph instead of get_analytics when exploring graph topology and path traversals rather than aggregated numerical metrics.

Returns subgraph nodes and edges, upstream/downstream trace path, raw SQL rows, or compact task slice.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlNoRead-only SELECT query for raw action.
depthNoMaximum depth for subgraph query (1-10).
queryNoNatural language search query for natural_language action.
actionYesThe graph query action to execute: subgraph, trace, raw, natural_language, compact_slice.
paramsNoQuery parameters for raw action.
node_idNoStarting node ID for trace.
projectNoTarget project name or slug.
root_idNoRoot node ID for subgraph query.
directionNoDirection of dependency traversal for trace.
max_depthNoMaximum traversal depth for trace (1-50).
edge_typesNoAllowed edge types for trace (default: depends_on, blocks, child_of).

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description reinforces 'safe read-only SQL,' which the schema already states, and adds only brief return-shape notes per action without disclosing permissions, limits, or scoping behavior.

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

Conciseness4/5

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

Three sentences that are front-loaded with the tool's scope and routing rule. The parenthetical action list duplicates the enum already present in the schema, a minor redundancy, but nothing is bloated.

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

Completeness4/5

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

For an 11-parameter, multi-action tool with no output schema, the description does summarize the return shapes across actions and gives a routing rule. It falls short on mapping parameters to actions, but the schema covers parameters and the safety profile is fully annotated, making the definition largely sufficient.

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

Parameters3/5

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

Schema coverage is 100%, so all 11 parameters are already documented in the schema, which serves as the baseline 3. The description names the actions but adds no parameter-level detail (e.g., which params apply to which action) beyond what the schema provides.

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

Purpose5/5

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

States a specific verb (Query) plus the resources it operates on (graph topology, neighborhoods, dependency paths, compact task slices) and enumerates its five actions. It explicitly distinguishes itself from the get_analytics sibling, so an agent can route without opening the schema.

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

Usage Guidelines4/5

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

The description gives an explicit when-to-use/when-not rule: use query_graph for topology and path traversals rather than aggregated metrics, naming get_analytics as the alternative. It does not, however, guide selection among its own five actions (subgraph vs trace vs natural_language), leaving that to inference.

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

run_diagnosticsA
Destructive

Run graph sanity checks, health diagnostics, reference validation, audit chain verification, and storage maintenance (actions: validate, doctor, check_refs, audit_chain, compact, archive, prune_events, version, dedupe). Use run_diagnostics instead of get_analytics when performing database repair, AST reference auto-healing, or verifying SHA-256 event hash chains.

Returns validation diagnostics, health report, broken reference repair log, Merkle chain audit, or maintenance stats.

ParametersJSON Schema
NameRequiredDescriptionDefault
applyNoFor dedupe action: whether to apply merging (default: false for dry-run).
actionYesThe diagnostic or maintenance action to execute: validate, doctor, check_refs, audit_chain, compact, archive, prune_events, version, dedupe.
checksNoOptional subset of validation checks.
dry_runNoSimulate event pruning without deleting.
projectNoTarget project name or slug.
auto_healNoAutomatically fix broken file references on check_refs.
older_thanNoAge duration threshold for prune_events (e.g. 90d).
preserve_typesNoEvent types to preserve from pruning.
older_than_daysNoAge threshold in days for archive (default: 30).
prune_orphaned_edgesNoWhether to prune dangling edges during compact.

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the mutation risk is flagged structurally. The description adds useful nuance by separating read-only diagnostics (validate/doctor/check_refs/audit_chain) from maintenance actions (compact/archive/prune_events/dedupe), but it never states that those actions irreversibly delete data, nor does it expose the dry-run default.

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

Conciseness4/5

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

Front-loaded with the verb and action set, followed by the sibling comparison and return values. The parenthetical action list largely duplicates the enum, which is mildly redundant, but the structure and length are otherwise efficient.

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

Completeness4/5

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

For a 10-parameter, no-output-schema tool, the description covers what actions exist and what each returns (diagnostics, health report, repair log, Merkle chain audit, maintenance stats). It stops short of linking action-specific parameters (apply, auto_heal, dry_run) to their triggering actions, leaving that to the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so all ten parameters (apply, dry_run, older_than, preserve_types, etc.) are already documented in the schema. The description restates only the action enum and adds no syntax, defaults, or cross-parameter constraints beyond what the schema provides.

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

Purpose5/5

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

States a specific verb (run) plus the resources/actions involved (validate, doctor, check_refs, audit_chain, compact, archive, prune_events, version, dedupe) and explicitly names the sibling it is not (get_analytics). An agent can distinguish it from the other manage_* and query tools without opening a schema.

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

Usage Guidelines4/5

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

Explicitly routes the agent: 'Use run_diagnostics instead of get_analytics when performing database repair, AST reference auto-healing, or verifying SHA-256 event hash chains.' This is clear when-to-use guidance, but it does not state when NOT to run destructive actions or any prerequisites (backups, permissions).

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

use_blackboardA
Destructive

Multi-agent shared blackboard for asynchronous coordination and mutex leases (actions: get, set, delete, lease, list, post, read). Use use_blackboard instead of manage_nodes when exchanging transient inter-agent messages or mutex resource leases rather than recording persistent graph knowledge.

Returns blackboard message payload, lease acquisition status, active topic list, or deletion confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoBlackboard entry identifier for get or delete.
modeNoLease action mode: acquire or release (default: acquire).
limitNoMaximum number of items or topics to return.
topicNoBlackboard topic or channel name.
actionYesThe blackboard action to execute: get, set, delete, lease, list, post, read.
contentNoMessage payload to post/set.
projectNoTarget project name or slug.
agent_idNoSender or claiming agent identifier.
agent_roleNoSender agent role (e.g. planner, coder, reviewer).
resource_idNoResource identifier to lease or release.
ttl_secondsNoTime-to-live in seconds (default: 3600).
topic_prefixNoPrefix filter for listing topics.
duration_secondsNoLease hold duration in seconds (default: 60).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, non-idempotent and closed-world, so the safety profile is partly covered. The description adds genuinely new behavioral context by disclosing the return shapes (message payload, lease acquisition status, topic list, deletion confirmation) and the asynchronous/lease coordination model. It does not, however, say which of the seven actions is destructive or what deletion actually removes, which is the main remaining gap.

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

Conciseness4/5

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

Two sentences, front-loaded with the purpose before the sibling disambiguation and return summary. The parenthetical action list duplicates the action enum verbatim, which is a small but real redundancy rather than a functional defect.

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

Completeness4/5

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

For a 13-parameter, 7-action tool with no output schema, the description does carry the return-value information an agent would otherwise lack. What is missing is the mapping of which parameters apply to which action (e.g. id for get/delete, resource_id for lease), leaving the agent to infer that from parameter names alone.

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

Parameters3/5

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

Schema description coverage is 100% across all 13 parameters, so the schema already documents each field including enum values and defaults. The description adds no per-parameter meaning beyond repeating the action enum, so the baseline 3 applies.

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

Purpose5/5

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

Names a concrete verb+resource ('Multi-agent shared blackboard') and enumerates the seven supported actions, which the agent can map directly onto the enum. It also explicitly distinguishes itself from the sibling manage_nodes, so an agent can route between them without opening either schema.

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

Usage Guidelines5/5

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

States an explicit when-to-use and when-not-to-use rule: 'Use use_blackboard instead of manage_nodes when exchanging transient inter-agent messages or mutex resource leases rather than recording persistent graph knowledge.' The alternative and the selecting condition are both named.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev1.4.0
    • Changedmanage_data2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"The data export or import action to execute: export_graph, export_issues, export_trajectories, export_joint_trajectories, export_synergy_metrics, import_graph, import_issues, import_spec."New value: +"The data export or import action to execute: export_graph, export_issues, export_trajectories, export_joint_trajectories, export_synergy_metrics, from_tick, import_graph, import_issues, import_spec."
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "export_graph",
        -  "export_issues",
        -  "export_trajectories",
        -  "export_joint_trajectories",
        -  "export_synergy_metrics",
        -  "import_graph",
        -  "import_issues",
        -  "import_spec"
        -]New value: +[
        +  "export_graph",
        +  "export_issues",
        +  "export_trajectories",
        +  "export_joint_trajectories",
        +  "export_synergy_metrics",
        +  "from_tick",
        +  "import_graph",
        +  "import_issues",
        +  "import_spec"
        +]
  2. 13 tool updatesv1.3.1
    • Changedget_analytics2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"The analytics or decision analysis action to execute."New value: +"The analytics or decision analysis action to execute: summary, velocity, burndown, value_metrics, cognitive_load, critical_path, context_snapshot, active_context, decision_trail, find_related_decisions, contradictions."
      • addedInput schema / properties / action / enum
        Added value: +[
        +  "summary",
        +  "velocity",
        +  "burndown",
        +  "value_metrics",
        +  "cognitive_load",
        +  "critical_path",
        +  "context_snapshot",
        +  "active_context",
        +  "decision_trail",
        +  "find_related_decisions",
        +  "contradictions"
        +]
    • Changedget_events2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"The event query action to execute."New value: +"The event query action to execute: log, changelog, post_mortem."
      • addedInput schema / properties / action / enum
        Added value: +[
        +  "log",
        +  "changelog",
        +  "post_mortem"
        +]
    • Changedmanage_data2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"The data export or import action to execute."New value: +"The data export or import action to execute: export_graph, export_issues, export_trajectories, export_joint_trajectories, export_synergy_metrics, import_graph, import_issues, import_spec."
      • addedInput schema / properties / action / enum
        Added value: +[
        +  "export_graph",
        +  "export_issues",
        +  "export_trajectories",
        +  "export_joint_trajectories",
        +  "export_synergy_metrics",
        +  "import_graph",
        +  "import_issues",
        +  "import_spec"
        +]
    • Changedmanage_database2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"The database administration or VCS sync action to execute."New value: +"The database administration or VCS sync action to execute: backup, restore, audit, merge, branch_diff, branch_merge."
      • addedInput schema / properties / action / enum
        Added value: +[
        +  "backup",
        +  "restore",
        +  "audit",
        +  "merge",
        +  "branch_diff",
        +  "branch_merge"
        +]
    • Changedmanage_edges2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"The edge management action to execute."New value: +"The edge management action to execute: add, remove, batch_add, link_visual."
      • addedInput schema / properties / action / enum
        Added value: +[
        +  "add",
        +  "remove",
        +  "batch_add",
        +  "link_visual"
        +]
    • Changedmanage_nodes2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"The node management action to execute."New value: +"The node management action to execute: create, update, get, remove, list, search, batch_create, batch_update, add_note."
      • addedInput schema / properties / action / enum
        Added value: +[
        +  "create",
        +  "update",
        +  "get",
        +  "remove",
        +  "list",
        +  "search",
        +  "batch_create",
        +  "batch_update",
        +  "add_note"
        +]
    • Changedmanage_sessions2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"The session management action to execute."New value: +"The session management action to execute: start, end, list, bootstrap."
      • addedInput schema / properties / action / enum
        Added value: +[
        +  "start",
        +  "end",
        +  "list",
        +  "bootstrap"
        +]
    • Changedmanage_snapshots2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"The snapshot management action to execute."New value: +"The snapshot management action to execute: save, list, diff, get_state, revert, undo, get_history."
      • addedInput schema / properties / action / enum
        Added value: +[
        +  "save",
        +  "list",
        +  "diff",
        +  "get_state",
        +  "revert",
        +  "undo",
        +  "get_history"
        +]
    • Changedmanage_specs2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"The specification or template action to execute."New value: +"The specification or template action to execute: scaffold, ingest, export, compliance, verify, decompose_feature, template."
      • addedInput schema / properties / action / enum
        Added value: +[
        +  "scaffold",
        +  "ingest",
        +  "export",
        +  "compliance",
        +  "verify",
        +  "decompose_feature",
        +  "template"
        +]
    • Changedmanage_tasks2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"The task management action to execute."New value: +"The task management action to execute: next, complete, find_blocked, find_stale, find_blockers, find_similar_blockers, auto_prune."
      • addedInput schema / properties / action / enum
        Added value: +[
        +  "next",
        +  "complete",
        +  "find_blocked",
        +  "find_stale",
        +  "find_blockers",
        +  "find_similar_blockers",
        +  "auto_prune"
        +]
    • Changedquery_graph2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"The graph query action to execute."New value: +"The graph query action to execute: subgraph, trace, raw, natural_language, compact_slice."
      • addedInput schema / properties / action / enum
        Added value: +[
        +  "subgraph",
        +  "trace",
        +  "raw",
        +  "natural_language",
        +  "compact_slice"
        +]
    • Changedrun_diagnostics2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"The diagnostic or maintenance action to execute."New value: +"The diagnostic or maintenance action to execute: validate, doctor, check_refs, audit_chain, compact, archive, prune_events, version, dedupe."
      • addedInput schema / properties / action / enum
        Added value: +[
        +  "validate",
        +  "doctor",
        +  "check_refs",
        +  "audit_chain",
        +  "compact",
        +  "archive",
        +  "prune_events",
        +  "version",
        +  "dedupe"
        +]
    • Changeduse_blackboard2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"The blackboard action to execute."New value: +"The blackboard action to execute: get, set, delete, lease, list, post, read."
      • addedInput schema / properties / action / enum
        Added value: +[
        +  "get",
        +  "set",
        +  "delete",
        +  "lease",
        +  "list",
        +  "post",
        +  "read"
        +]
  3. 13 tool updatesv1.2.1
    • Changedget_analytics3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -true
      • addedInput schema / required
        Added value: +[
        +  "action"
        +]
    • Changedget_events3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -true
      • addedInput schema / required
        Added value: +[
        +  "action"
        +]
    • Changedmanage_data6 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -true
      • removedInput schema / properties / edges / items / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / issues / items / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / nodes / items / additionalProperties
        Removed value: -{}
      • addedInput schema / required
        Added value: +[
        +  "action"
        +]
    • Changedmanage_database3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -true
      • addedInput schema / required
        Added value: +[
        +  "action"
        +]
    • Changedmanage_edges6 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -true
      • removedInput schema / properties / edges / items / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / metadata / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / properties / additionalProperties
        Removed value: -{}
      • addedInput schema / required
        Added value: +[
        +  "action"
        +]
    • Changedmanage_nodes5 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -true
      • removedInput schema / properties / metadata / additionalProperties
        Removed value: -{}
      • removedInput schema / properties / nodes / items / additionalProperties
        Removed value: -{}
      • addedInput schema / required
        Added value: +[
        +  "action"
        +]
    • Changedmanage_sessions4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -true
      • removedInput schema / properties / metadata / additionalProperties
        Removed value: -{}
      • addedInput schema / required
        Added value: +[
        +  "action"
        +]
    • Changedmanage_snapshots3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -true
      • addedInput schema / required
        Added value: +[
        +  "action"
        +]
    • Changedmanage_specs3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -true
      • addedInput schema / required
        Added value: +[
        +  "action"
        +]
    • Changedmanage_tasks4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -true
      • removedInput schema / properties / artifact_metadata / additionalProperties
        Removed value: -{}
      • addedInput schema / required
        Added value: +[
        +  "action"
        +]
    • Changedquery_graph3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -true
      • addedInput schema / required
        Added value: +[
        +  "action"
        +]
    • Changedrun_diagnostics3 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -true
      • addedInput schema / required
        Added value: +[
        +  "action"
        +]
    • Changeduse_blackboard11 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedInput schema / additionalProperties
        Removed value: -true
      • changedInput schema / properties / agent_id / description
        Previous value: -"Sender agent identifier."New value: +"Sender or claiming agent identifier."
      • changedInput schema / properties / content / description
        Previous value: -"Message payload to post."New value: +"Message payload to post/set."
      • addedInput schema / properties / duration_seconds
        Added value: +{
        +  "description": "Lease hold duration in seconds (default: 60).",
        +  "type": "number"
        +}
      • addedInput schema / properties / id
        Added value: +{
        +  "description": "Blackboard entry identifier for get or delete.",
        +  "type": "string"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Maximum number of items or topics to return.",
        +  "type": "number"
        +}
      • addedInput schema / properties / mode
        Added value: +{
        +  "description": "Lease action mode: acquire or release (default: acquire).",
        +  "enum": [
        +    "acquire",
        +    "release"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / resource_id
        Added value: +{
        +  "description": "Resource identifier to lease or release.",
        +  "type": "string"
        +}
      • addedInput schema / properties / topic_prefix
        Added value: +{
        +  "description": "Prefix filter for listing topics.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "action"
        +]
  4. 93 tool updatesv1.0.0
    • Removedadd_edge
    • Removedadd_node
    • Removedadd_note
    • Removedarchive_completed_nodes
    • Removedaudit_project_db
    • Removedauto_prune_stale_tasks
    • Removedbackup_project_db
    • Removedbatch_add_edges
    • Removedbatch_create_nodes
    • Removedbatch_update
    • Removedbootstrap_session
    • Removedburndown_chart
    • Removedcompact_graph
    • Removedcomplete_task
    • Removedcritical_path
    • Removeddecision_trail
    • Removeddetect_contradictions
    • Removeddiff_snapshots
    • Removeddoctor_report
    • Removedend_session
    • Removedexport_graph
    • Removedexport_issues
    • Removedexport_joint_trajectories
    • Removedexport_spec
    • Removedexport_trajectories
    • Removedfind_blocked_tasks
    • Removedfind_blockers
    • Removedfind_related_decisions
    • Removedfind_similar_blockers
    • Addedget_analytics
    • Removedget_cognitive_load
    • Removedget_context_snapshot
    • Removedget_event_log
    • Addedget_events
    • Removedget_node
    • Removedget_node_history
    • Removedget_project_summary
    • Removedget_spec_compliance
    • Removedget_stale_nodes
    • Removedget_state_at_timestamp
    • Removedget_subgraph
    • Removedget_synergy_metrics
    • Removedimpact_analysis
    • Removedimport_graph
    • Removedimport_issues
    • Removedingest_spec
    • Removedlink_visual_state
    • Removedlist_nodes
    • Removedlist_sessions
    • Removedlist_snapshots
    • Addedmanage_data
    • Addedmanage_database
    • Addedmanage_edges
    • Addedmanage_nodes
    • Addedmanage_sessions
    • Addedmanage_snapshots
    • Addedmanage_specs
    • Addedmanage_tasks
    • Removedmerge_project_db
    • Removednatural_language_query
    • Removednext_tasks
    • Removedplan_and_decompose_feature
    • Removedpost_blackboard
    • Removedpost_mortem_from_session
    • Removedprune_events
    • Changedquery_graph13 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +true
      • addedInput schema / properties / action
        Added value: +{
        +  "description": "The graph query action to execute.",
        +  "type": "string"
        +}
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "Maximum depth for subgraph query (1-10).",
        +  "type": "number"
        +}
      • addedInput schema / properties / direction
        Added value: +{
        +  "description": "Direction of dependency traversal for trace.",
        +  "enum": [
        +    "upstream",
        +    "downstream"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / edge_types
        Added value: +{
        +  "description": "Allowed edge types for trace (default: depends_on, blocks, child_of).",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / max_depth
        Added value: +{
        +  "description": "Maximum traversal depth for trace (1-50).",
        +  "type": "number"
        +}
      • addedInput schema / properties / node_id
        Added value: +{
        +  "description": "Starting node ID for trace.",
        +  "type": "string"
        +}
      • changedInput schema / properties / params / description
        Previous value: -"Optional query parameter values."New value: +"Query parameters for raw action."
      • changedInput schema / properties / project / description
        Previous value: -"Optional project identifier."New value: +"Target project name or slug."
      • addedInput schema / properties / query
        Added value: +{
        +  "description": "Natural language search query for natural_language action.",
        +  "type": "string"
        +}
      • addedInput schema / properties / root_id
        Added value: +{
        +  "description": "Root node ID for subgraph query.",
        +  "type": "string"
        +}
      • changedInput schema / properties / sql / description
        Previous value: -"The SELECT SQL query string."New value: +"Read-only SELECT query for raw action."
      • removedInput schema / required
        Removed value: -[
        -  "sql"
        -]
    • Removedread_blackboard
    • Removedremove_edge
    • Removedremove_node
    • Removedrestore_project_db
    • Removedrevert_to_timestamp
    • Addedrun_diagnostics
    • Removedsave_snapshot
    • Removedscaffold_spec
    • Removedscaffold_template
    • Removedsearch_nodes
    • Removedstart_session
    • Removedsubscribe_context_changes
    • Removedtrace_dependencies
    • Removedtraceback_to_node
    • Removedundo_last
    • Removedupdate_node
    • Addeduse_blackboard
    • Removedvalidate_graph
    • Removedvalidate_memory_references
    • Removedvalue_metrics
    • Removedvcs_branch_sync
    • Removedvcs_merge_resolution
    • Removedvelocity_analytics
    • Removedverify_audit_chain
    • Removedverify_requirement
    • Removedwatch_graph_changes
    • Removedwhat_changed
  5. 81 tool updatesv0.9.1
    • First observedadd_edge
    • First observedadd_node
    • First observedadd_note
    • First observedarchive_completed_nodes
    • First observedaudit_project_db
    • First observedauto_prune_stale_tasks
    • First observedbackup_project_db
    • First observedbatch_add_edges
    • First observedbatch_create_nodes
    • First observedbatch_update
    • First observedbootstrap_session
    • First observedburndown_chart
    • First observedcompact_graph
    • First observedcomplete_task
    • First observedcritical_path
    • First observeddecision_trail
    • First observeddetect_contradictions
    • First observeddiff_snapshots
    • First observeddoctor_report
    • First observedend_session
    • First observedexport_graph
    • First observedexport_issues
    • First observedexport_joint_trajectories
    • First observedexport_spec
    • First observedexport_trajectories
    • First observedfind_blocked_tasks
    • First observedfind_blockers
    • First observedfind_related_decisions
    • First observedfind_similar_blockers
    • First observedget_cognitive_load
    • First observedget_context_snapshot
    • First observedget_event_log
    • First observedget_node
    • First observedget_node_history
    • First observedget_project_summary
    • First observedget_spec_compliance
    • First observedget_stale_nodes
    • First observedget_state_at_timestamp
    • First observedget_subgraph
    • First observedget_synergy_metrics
    • First observedimpact_analysis
    • First observedimport_graph
    • First observedimport_issues
    • First observedingest_spec
    • First observedlink_visual_state
    • First observedlist_nodes
    • First observedlist_sessions
    • First observedlist_snapshots
    • First observedmerge_project_db
    • First observednatural_language_query
    • First observednext_tasks
    • First observedplan_and_decompose_feature
    • First observedpost_blackboard
    • First observedpost_mortem_from_session
    • First observedprune_events
    • First observedquery_graph
    • First observedread_blackboard
    • First observedremove_edge
    • First observedremove_node
    • First observedrestore_project_db
    • First observedrevert_to_timestamp
    • First observedsave_snapshot
    • First observedscaffold_spec
    • First observedscaffold_template
    • First observedsearch_nodes
    • First observedstart_session
    • First observedsubscribe_context_changes
    • First observedtrace_dependencies
    • First observedtraceback_to_node
    • First observedundo_last
    • First observedupdate_node
    • First observedvalidate_graph
    • First observedvalidate_memory_references
    • First observedvalue_metrics
    • First observedvcs_branch_sync
    • First observedvcs_merge_resolution
    • First observedvelocity_analytics
    • First observedverify_audit_chain
    • First observedverify_requirement
    • First observedwatch_graph_changes
    • First observedwhat_changed

TDQS

A3.7/5.0

Scored across 13 tools

Disambiguation3/5

The descriptions are unusually thorough with explicit 'use X instead of Y' guidance, which genuinely helps separate tools like manage_nodes vs manage_edges vs use_blackboard and manage_snapshots vs manage_database vs get_events. However, the underlying domain heavily overlaps: nodes/edges/specs/blackboard all manipulate graph-like entities, and query_graph/get_analytics/run_diagnostics all operate on the same graph for read, aggregate, and maintenance purposes. Boundaries are clarified by prose rather than being intrinsically clean.

Naming Consistency3/5

Most tools use a manage_* pattern (manage_data, manage_nodes, manage_edges, manage_sessions, manage_tasks, manage_snapshots, manage_specs, manage_database), which is consistent. But the remaining tools break the pattern with distinct verbs (query_graph, get_analytics, get_events, run_diagnostics, use_blackboard), producing mixed conventions. It remains readable, but there is no single predictable verb_noun scheme.

Tool Count4/5

13 tools is within the well-scoped range and appropriate for a state/memory graph server covering graph, tasks, sessions, specs, analytics, events, and diagnostics. The design consolidates many operations as actions within each tool rather than exploding the tool count, keeping the surface manageable. Slightly heavy given the breadth, but reasonable.

Completeness4/5

Coverage is broad: node/edge CRUD, task workflow, sessions, snapshots/time-travel, specs, database maintenance, graph queries, analytics, event ledger, diagnostics, and multi-agent blackboard. Most lifecycle operations (create, update, get, list, remove, batch) appear across the mutation tools. Minor gaps exist, such as bulk-delete actions being less explicit than bulk-create.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A self-hosted MCP server that provides AI assistants with a shared, persistent SQLite-backed memory for storing and retrieving project context, decisions, and discoveries. It enables cross-session continuity and team-wide knowledge sharing to keep AI coding tools aligned and informed.
    3
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    MCP server that provides cross-session persistent memory for AI coding assistants using local vector database and semantic search, enabling automatic recall of project context, issues, and tasks.
    9
    11 PyPI
    91
    Apache 2.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    Persistent memory server for AI assistants with semantic search and three-layer context (global, project, personality). Works with MCP-compatible AI tools like Claude Code, Cursor, Continue, Cline, and more.
    1
    -