state-memory-mcp
A local, deterministic SQLite-backed state memory MCP server for tracking and querying AI coding workflow state, tasks, decisions, artifacts, blockers, specs, and relationships.
Create, update, search, batch, and annotate graph nodes (tasks, decisions, artifacts, plans, milestones, blockers, specs, observations, etc.).
Link nodes with typed semantic edges (depends_on, blocks, produces, references, verifies, etc.) and visual-state relationships.
Manage task queues: next tasks, completion, blockers, stale tasks, similar blockers, and auto-pruning.
Track agent sessions, bootstrap context, and attribute changes to agents.
Author, ingest, export, verify, and decompose Spec-Driven Development specs and acceptance criteria.
Save, diff, revert, and time-travel through graph snapshots and node history.
Query graph topology: subgraphs, dependency traces, raw read-only SQL, natural language queries, and compact task slices.
Compute analytics: velocity, burndown, value metrics, cognitive load, critical path, decision trails, and contradictions.
Inspect the append-only event ledger, changelogs, and session post-mortems.
Run diagnostics, health checks, reference validation, audit-chain verification, and storage maintenance.
Back up, restore, audit, merge SQLite databases, and sync/diff/merge across Git branches.
Import/export graphs, issues, trajectories, synergy metrics, and specs.
Coordinate multi-agent work via shared blackboard topics, messages, and mutex leases.
Provides Git-aware state tracking by dynamically scoping project state to the current Git branch, and offers VCS branch sync and merge resolution tools for the state graph.
@putervision/state-memory-mcp
@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-globalRelated 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
TaskSliceextraction 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-mcpfor 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-1KBcompact_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 |
High-signal architectural overview, module inventory, data flows, and design decisions. | |
Step-by-step migration guide, legacy tool mapping table, and | |
Cognitive Externalization, FSM Formalism, First-Hop Determinism & Benchmark metrics. | |
Node Types ( | |
βοΈ Configuration & IDE Setup | Auto-Initialization details, Environment Variables table, and Editor Configs (Cursor, VS Code, Claude, Antigravity, Windsurf). |
π οΈ CLI Command Reference | CLI flags ( |
β±οΈ Sessions, Snapshots & SDD | Session Lifecycle, Event Audit Trail, Snapshots, Trajectories, Sub-directory support & Spec-Driven Development. |
Complete reference for all 13 Consolidated MCP Tools, read-only | |
π 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 toolsget_analyticsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of historical days for burndown (default: 14). | |
| action | Yes | 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. | |
| node_id | No | Decision node ID for decision_trail. | |
| project | No | Target project name or slug. | |
| artifact_id | No | Artifact node ID for find_related_decisions. | |
| window_days | No | Number of days to analyze for velocity (default: 14). | |
| milestone_id | No | Milestone ID for critical_path calculation. |
TDQS
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.
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.
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.
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.
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.
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_eventsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum events to return (1-1000). | |
| since | No | ISO timestamp or relative duration (e.g. 2h, 1d) for log or changelog. | |
| until | No | Ending ISO timestamp for log. | |
| action | Yes | The event query action to execute: log, changelog, post_mortem. | |
| offset | No | Pagination offset for log. | |
| project | No | Target project name or slug. | |
| git_branch | No | Git branch filter for changelog. | |
| session_id | No | Session ID for log or post_mortem. | |
| since_session | No | Session ID to diff from for changelog. |
TDQS
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.
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.
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.
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.
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.
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_dataADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| edges | No | Array of edge objects for import_graph. | |
| force | No | Force overwrite during import. | |
| limit | No | Maximum items to export (1-1000). | |
| nodes | No | Array of node objects for import_graph. | |
| since | No | Start timestamp for trajectories. | |
| until | No | End timestamp for trajectories. | |
| action | Yes | 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. | |
| format | No | Data format. | |
| issues | No | Array of issue objects for import_issues. | |
| offset | No | Offset for trajectories. | |
| project | No | Target project name or slug. | |
| file_path | No | File path for import_spec. | |
| session_id | No | Session ID filter for trajectories. |
TDQS
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.
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.
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.
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.
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.
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_databaseADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Force overwrite during restore or merge. | |
| action | Yes | The database administration or VCS sync action to execute: backup, restore, audit, merge, branch_diff, branch_merge. | |
| project | No | Target project name or slug. | |
| backupPath | No | Source backup file path for restore. | |
| outputPath | No | Target destination file path for backup. | |
| sourcePath | No | Source SQLite database path for merge. | |
| source_branch | No | Source git branch for branch_merge. | |
| target_branch | No | Target git branch to compare or merge against. | |
| resolution_strategy | No | Conflict resolution strategy for branch_merge. |
TDQS
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.
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.
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.
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.
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.
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_edgesADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | The semantic relationship type. | |
| edges | No | Array of edge objects for batch_add. | |
| action | Yes | The edge management action to execute: add, remove, batch_add, link_visual. | |
| project | No | Target project name or slug. | |
| metadata | No | Optional metadata for link_visual. | |
| source_id | No | ID of the source node. | |
| target_id | No | ID of the target node. | |
| properties | No | Optional metadata properties for the edge. | |
| source_url | No | Optional URL where the visual state was captured. | |
| relationship | No | Relationship type for link_visual (e.g. renders_state, blocked_by_visual_state). | |
| visual_state_id | No | Visual Memory snapshot/state ID for link_visual. | |
| visual_description | No | Optional text description for the visual state. |
TDQS
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.
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.
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.
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.
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.
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_nodesADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Unique node identifier for get, update, or remove. | |
| ids | No | Array of node IDs for batch_update. | |
| tags | No | Array of searchable tags. | |
| text | No | Text note content for add_note. | |
| type | No | The type classification of the node. | |
| limit | No | Maximum number of items to return (1-1000). | |
| nodes | No | Array of node payloads for batch_create. | |
| query | No | Search term for full-text search. | |
| title | No | Title or label of the node. | |
| action | Yes | The node management action to execute: create, update, get, remove, list, search, batch_create, batch_update, add_note. | |
| offset | No | Number of items to skip for pagination. | |
| status | No | Status of the node (e.g. pending, in_progress, done, blocked, active, accepted, current). | |
| compact | No | Whether to return a lightweight compact summary. | |
| project | No | Target project name or slug. | |
| metadata | No | Arbitrary structured key-value metadata. | |
| algorithm | No | Search algorithm for search action. | |
| attach_to | No | Node ID to attach observation note to via references edge. | |
| git_branch | No | Git branch filter. | |
| session_id | No | Active session identifier for change attribution. | |
| include_edges | No | Whether to include inbound/outbound edges on get. | |
| expected_version | No | Optimistic concurrency version check for update. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of sessions to list (1-1000). | |
| action | Yes | The session management action to execute: start, end, list, bootstrap. | |
| project | No | Target project name or slug. | |
| agent_id | No | Agent identifier for session tracking and change attribution. | |
| metadata | No | Arbitrary session metadata. | |
| session_id | No | Unique session identifier for end. | |
| task_limit | No | Maximum runnable tasks to return on bootstrap. | |
| active_only | No | Whether to return only active unclosed sessions on list. |
TDQS
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.
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.
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.
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.
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.
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_snapshotsADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Force snapshot even if node count is high. | |
| limit | No | Maximum snapshots to list (1-1000). | |
| action | Yes | The snapshot management action to execute: save, list, diff, get_state, revert, undo, get_history. | |
| node_id | No | Node ID for undo or get_history. | |
| project | No | Target project name or slug. | |
| timestamp | No | ISO 8601 timestamp for get_state or revert. | |
| session_id | No | Optional session identifier for save. | |
| snapshot_id_a | No | First snapshot ID for diff. | |
| snapshot_id_b | No | Second snapshot ID for diff. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name of template or feature. | |
| title | No | Title of feature spec or template. | |
| action | Yes | The specification or template action to execute: scaffold, ingest, export, compliance, verify, decompose_feature, template. | |
| format | No | Format of spec file. | |
| status | No | Verification status for verify. | |
| project | No | Target project name or slug. | |
| spec_id | No | Spec node ID for export. | |
| subtasks | No | Array of subtask titles for decompose_feature. | |
| template | No | Template type for template action. | |
| file_path | No | File path of PRD or Gherkin feature for ingest. | |
| description | No | Feature description for decompose_feature. | |
| criterion_id | No | Acceptance criterion node ID for verify. | |
| observation_id | No | Optional observation node ID containing test proof. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Node type filter for find_stale. | |
| limit | No | Maximum tasks to return (1-1000). | |
| query | No | Query text for find_similar_blockers. | |
| action | Yes | The task management action to execute: next, complete, find_blocked, find_stale, find_blockers, find_similar_blockers, auto_prune. | |
| status | No | Status filter for find_stale. | |
| node_id | No | Optional node ID to check blockers for. | |
| project | No | Target project name or slug. | |
| task_id | No | Task node ID to complete. | |
| threshold | No | Similarity threshold for find_similar_blockers (0.0 - 1.0). | |
| git_branch | No | Git branch filter. | |
| older_than | No | Duration threshold for staleness (e.g. 7d, 24h, 30m). | |
| decision_id | No | Decision node ID for find_blocked. | |
| target_status | No | Target status to assign when auto-pruning (e.g. cancelled). | |
| artifact_title | No | Optional title of artifact produced on complete. | |
| include_context | No | Whether to include parent plan/milestone and blocker context on next. | |
| visual_state_id | No | Optional visual state ID to link on complete. | |
| artifact_metadata | No | Optional metadata for produced artifact. | |
| artifact_file_path | No | Optional file path for produced artifact. | |
| include_transitive | No | Whether to include transitive blockers. | |
| visual_relationship | No | Visual relationship for complete (default: renders_state). |
TDQS
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.
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.
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.
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.
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.
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_graphARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| sql | No | Read-only SELECT query for raw action. | |
| depth | No | Maximum depth for subgraph query (1-10). | |
| query | No | Natural language search query for natural_language action. | |
| action | Yes | The graph query action to execute: subgraph, trace, raw, natural_language, compact_slice. | |
| params | No | Query parameters for raw action. | |
| node_id | No | Starting node ID for trace. | |
| project | No | Target project name or slug. | |
| root_id | No | Root node ID for subgraph query. | |
| direction | No | Direction of dependency traversal for trace. | |
| max_depth | No | Maximum traversal depth for trace (1-50). | |
| edge_types | No | Allowed edge types for trace (default: depends_on, blocks, child_of). |
TDQS
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.
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.
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.
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.
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.
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_diagnosticsADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | For dedupe action: whether to apply merging (default: false for dry-run). | |
| action | Yes | The diagnostic or maintenance action to execute: validate, doctor, check_refs, audit_chain, compact, archive, prune_events, version, dedupe. | |
| checks | No | Optional subset of validation checks. | |
| dry_run | No | Simulate event pruning without deleting. | |
| project | No | Target project name or slug. | |
| auto_heal | No | Automatically fix broken file references on check_refs. | |
| older_than | No | Age duration threshold for prune_events (e.g. 90d). | |
| preserve_types | No | Event types to preserve from pruning. | |
| older_than_days | No | Age threshold in days for archive (default: 30). | |
| prune_orphaned_edges | No | Whether to prune dangling edges during compact. |
TDQS
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.
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.
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.
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.
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.
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_blackboardADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Blackboard entry identifier for get or delete. | |
| mode | No | Lease action mode: acquire or release (default: acquire). | |
| limit | No | Maximum number of items or topics to return. | |
| topic | No | Blackboard topic or channel name. | |
| action | Yes | The blackboard action to execute: get, set, delete, lease, list, post, read. | |
| content | No | Message payload to post/set. | |
| project | No | Target project name or slug. | |
| agent_id | No | Sender or claiming agent identifier. | |
| agent_role | No | Sender agent role (e.g. planner, coder, reviewer). | |
| resource_id | No | Resource identifier to lease or release. | |
| ttl_seconds | No | Time-to-live in seconds (default: 3600). | |
| topic_prefix | No | Prefix filter for listing topics. | |
| duration_seconds | No | Lease hold duration in seconds (default: 60). |
TDQS
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.
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.
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.
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.
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.
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 tool update
v1.4.0- Changed
manage_data2 fields changed- changed
Input schema / properties / action / descriptionPrevious 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." - changed
Input schema / properties / action / enumPrevious 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" +]
13 tool updates
v1.3.1- Changed
get_analytics2 fields changed- changed
Input schema / properties / action / descriptionPrevious 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." - added
Input schema / properties / action / enumAdded value: +[ + "summary", + "velocity", + "burndown", + "value_metrics", + "cognitive_load", + "critical_path", + "context_snapshot", + "active_context", + "decision_trail", + "find_related_decisions", + "contradictions" +]
- Changed
get_events2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"The event query action to execute."New value: +"The event query action to execute: log, changelog, post_mortem." - added
Input schema / properties / action / enumAdded value: +[ + "log", + "changelog", + "post_mortem" +]
- Changed
manage_data2 fields changed- changed
Input schema / properties / action / descriptionPrevious 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." - added
Input schema / properties / action / enumAdded value: +[ + "export_graph", + "export_issues", + "export_trajectories", + "export_joint_trajectories", + "export_synergy_metrics", + "import_graph", + "import_issues", + "import_spec" +]
- Changed
manage_database2 fields changed- changed
Input schema / properties / action / descriptionPrevious 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." - added
Input schema / properties / action / enumAdded value: +[ + "backup", + "restore", + "audit", + "merge", + "branch_diff", + "branch_merge" +]
- Changed
manage_edges2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"The edge management action to execute."New value: +"The edge management action to execute: add, remove, batch_add, link_visual." - added
Input schema / properties / action / enumAdded value: +[ + "add", + "remove", + "batch_add", + "link_visual" +]
- Changed
manage_nodes2 fields changed- changed
Input schema / properties / action / descriptionPrevious 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." - added
Input schema / properties / action / enumAdded value: +[ + "create", + "update", + "get", + "remove", + "list", + "search", + "batch_create", + "batch_update", + "add_note" +]
- Changed
manage_sessions2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"The session management action to execute."New value: +"The session management action to execute: start, end, list, bootstrap." - added
Input schema / properties / action / enumAdded value: +[ + "start", + "end", + "list", + "bootstrap" +]
- Changed
manage_snapshots2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"The snapshot management action to execute."New value: +"The snapshot management action to execute: save, list, diff, get_state, revert, undo, get_history." - added
Input schema / properties / action / enumAdded value: +[ + "save", + "list", + "diff", + "get_state", + "revert", + "undo", + "get_history" +]
- Changed
manage_specs2 fields changed- changed
Input schema / properties / action / descriptionPrevious 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." - added
Input schema / properties / action / enumAdded value: +[ + "scaffold", + "ingest", + "export", + "compliance", + "verify", + "decompose_feature", + "template" +]
- Changed
manage_tasks2 fields changed- changed
Input schema / properties / action / descriptionPrevious 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." - added
Input schema / properties / action / enumAdded value: +[ + "next", + "complete", + "find_blocked", + "find_stale", + "find_blockers", + "find_similar_blockers", + "auto_prune" +]
- Changed
query_graph2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"The graph query action to execute."New value: +"The graph query action to execute: subgraph, trace, raw, natural_language, compact_slice." - added
Input schema / properties / action / enumAdded value: +[ + "subgraph", + "trace", + "raw", + "natural_language", + "compact_slice" +]
- Changed
run_diagnostics2 fields changed- changed
Input schema / properties / action / descriptionPrevious 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." - added
Input schema / properties / action / enumAdded value: +[ + "validate", + "doctor", + "check_refs", + "audit_chain", + "compact", + "archive", + "prune_events", + "version", + "dedupe" +]
- Changed
use_blackboard2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"The blackboard action to execute."New value: +"The blackboard action to execute: get, set, delete, lease, list, post, read." - added
Input schema / properties / action / enumAdded value: +[ + "get", + "set", + "delete", + "lease", + "list", + "post", + "read" +]
13 tool updates
v1.2.1- Changed
get_analytics3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -true - added
Input schema / requiredAdded value: +[ + "action" +]
- Changed
get_events3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -true - added
Input schema / requiredAdded value: +[ + "action" +]
- Changed
manage_data6 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -true - removed
Input schema / properties / edges / items / additionalPropertiesRemoved value: -{} - removed
Input schema / properties / issues / items / additionalPropertiesRemoved value: -{} - removed
Input schema / properties / nodes / items / additionalPropertiesRemoved value: -{} - added
Input schema / requiredAdded value: +[ + "action" +]
- Changed
manage_database3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -true - added
Input schema / requiredAdded value: +[ + "action" +]
- Changed
manage_edges6 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -true - removed
Input schema / properties / edges / items / additionalPropertiesRemoved value: -{} - removed
Input schema / properties / metadata / additionalPropertiesRemoved value: -{} - removed
Input schema / properties / properties / additionalPropertiesRemoved value: -{} - added
Input schema / requiredAdded value: +[ + "action" +]
- Changed
manage_nodes5 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -true - removed
Input schema / properties / metadata / additionalPropertiesRemoved value: -{} - removed
Input schema / properties / nodes / items / additionalPropertiesRemoved value: -{} - added
Input schema / requiredAdded value: +[ + "action" +]
- Changed
manage_sessions4 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -true - removed
Input schema / properties / metadata / additionalPropertiesRemoved value: -{} - added
Input schema / requiredAdded value: +[ + "action" +]
- Changed
manage_snapshots3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -true - added
Input schema / requiredAdded value: +[ + "action" +]
- Changed
manage_specs3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -true - added
Input schema / requiredAdded value: +[ + "action" +]
- Changed
manage_tasks4 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -true - removed
Input schema / properties / artifact_metadata / additionalPropertiesRemoved value: -{} - added
Input schema / requiredAdded value: +[ + "action" +]
- Changed
query_graph3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -true - added
Input schema / requiredAdded value: +[ + "action" +]
- Changed
run_diagnostics3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -true - added
Input schema / requiredAdded value: +[ + "action" +]
- Changed
use_blackboard11 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -true - changed
Input schema / properties / agent_id / descriptionPrevious value: -"Sender agent identifier."New value: +"Sender or claiming agent identifier." - changed
Input schema / properties / content / descriptionPrevious value: -"Message payload to post."New value: +"Message payload to post/set." - added
Input schema / properties / duration_secondsAdded value: +{ + "description": "Lease hold duration in seconds (default: 60).", + "type": "number" +} - added
Input schema / properties / idAdded value: +{ + "description": "Blackboard entry identifier for get or delete.", + "type": "string" +} - added
Input schema / properties / limitAdded value: +{ + "description": "Maximum number of items or topics to return.", + "type": "number" +} - added
Input schema / properties / modeAdded value: +{ + "description": "Lease action mode: acquire or release (default: acquire).", + "enum": [ + "acquire", + "release" + ], + "type": "string" +} - added
Input schema / properties / resource_idAdded value: +{ + "description": "Resource identifier to lease or release.", + "type": "string" +} - added
Input schema / properties / topic_prefixAdded value: +{ + "description": "Prefix filter for listing topics.", + "type": "string" +} - added
Input schema / requiredAdded value: +[ + "action" +]
93 tool updates
v1.0.0- Removed
add_edge - Removed
add_node - Removed
add_note - Removed
archive_completed_nodes - Removed
audit_project_db - Removed
auto_prune_stale_tasks - Removed
backup_project_db - Removed
batch_add_edges - Removed
batch_create_nodes - Removed
batch_update - Removed
bootstrap_session - Removed
burndown_chart - Removed
compact_graph - Removed
complete_task - Removed
critical_path - Removed
decision_trail - Removed
detect_contradictions - Removed
diff_snapshots - Removed
doctor_report - Removed
end_session - Removed
export_graph - Removed
export_issues - Removed
export_joint_trajectories - Removed
export_spec - Removed
export_trajectories - Removed
find_blocked_tasks - Removed
find_blockers - Removed
find_related_decisions - Removed
find_similar_blockers - Added
get_analytics - Removed
get_cognitive_load - Removed
get_context_snapshot - Removed
get_event_log - Added
get_events - Removed
get_node - Removed
get_node_history - Removed
get_project_summary - Removed
get_spec_compliance - Removed
get_stale_nodes - Removed
get_state_at_timestamp - Removed
get_subgraph - Removed
get_synergy_metrics - Removed
impact_analysis - Removed
import_graph - Removed
import_issues - Removed
ingest_spec - Removed
link_visual_state - Removed
list_nodes - Removed
list_sessions - Removed
list_snapshots - Added
manage_data - Added
manage_database - Added
manage_edges - Added
manage_nodes - Added
manage_sessions - Added
manage_snapshots - Added
manage_specs - Added
manage_tasks - Removed
merge_project_db - Removed
natural_language_query - Removed
next_tasks - Removed
plan_and_decompose_feature - Removed
post_blackboard - Removed
post_mortem_from_session - Removed
prune_events - Changed
query_graph13 fields changed- changed
Input schema / additionalPropertiesPrevious value: -falseNew value: +true - added
Input schema / properties / actionAdded value: +{ + "description": "The graph query action to execute.", + "type": "string" +} - added
Input schema / properties / depthAdded value: +{ + "description": "Maximum depth for subgraph query (1-10).", + "type": "number" +} - added
Input schema / properties / directionAdded value: +{ + "description": "Direction of dependency traversal for trace.", + "enum": [ + "upstream", + "downstream" + ], + "type": "string" +} - added
Input schema / properties / edge_typesAdded value: +{ + "description": "Allowed edge types for trace (default: depends_on, blocks, child_of).", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / max_depthAdded value: +{ + "description": "Maximum traversal depth for trace (1-50).", + "type": "number" +} - added
Input schema / properties / node_idAdded value: +{ + "description": "Starting node ID for trace.", + "type": "string" +} - changed
Input schema / properties / params / descriptionPrevious value: -"Optional query parameter values."New value: +"Query parameters for raw action." - changed
Input schema / properties / project / descriptionPrevious value: -"Optional project identifier."New value: +"Target project name or slug." - added
Input schema / properties / queryAdded value: +{ + "description": "Natural language search query for natural_language action.", + "type": "string" +} - added
Input schema / properties / root_idAdded value: +{ + "description": "Root node ID for subgraph query.", + "type": "string" +} - changed
Input schema / properties / sql / descriptionPrevious value: -"The SELECT SQL query string."New value: +"Read-only SELECT query for raw action." - removed
Input schema / requiredRemoved value: -[ - "sql" -]
- Removed
read_blackboard - Removed
remove_edge - Removed
remove_node - Removed
restore_project_db - Removed
revert_to_timestamp - Added
run_diagnostics - Removed
save_snapshot - Removed
scaffold_spec - Removed
scaffold_template - Removed
search_nodes - Removed
start_session - Removed
subscribe_context_changes - Removed
trace_dependencies - Removed
traceback_to_node - Removed
undo_last - Removed
update_node - Added
use_blackboard - Removed
validate_graph - Removed
validate_memory_references - Removed
value_metrics - Removed
vcs_branch_sync - Removed
vcs_merge_resolution - Removed
velocity_analytics - Removed
verify_audit_chain - Removed
verify_requirement - Removed
watch_graph_changes - Removed
what_changed
81 tool updates
v0.9.1- First observed
add_edge - First observed
add_node - First observed
add_note - First observed
archive_completed_nodes - First observed
audit_project_db - First observed
auto_prune_stale_tasks - First observed
backup_project_db - First observed
batch_add_edges - First observed
batch_create_nodes - First observed
batch_update - First observed
bootstrap_session - First observed
burndown_chart - First observed
compact_graph - First observed
complete_task - First observed
critical_path - First observed
decision_trail - First observed
detect_contradictions - First observed
diff_snapshots - First observed
doctor_report - First observed
end_session - First observed
export_graph - First observed
export_issues - First observed
export_joint_trajectories - First observed
export_spec - First observed
export_trajectories - First observed
find_blocked_tasks - First observed
find_blockers - First observed
find_related_decisions - First observed
find_similar_blockers - First observed
get_cognitive_load - First observed
get_context_snapshot - First observed
get_event_log - First observed
get_node - First observed
get_node_history - First observed
get_project_summary - First observed
get_spec_compliance - First observed
get_stale_nodes - First observed
get_state_at_timestamp - First observed
get_subgraph - First observed
get_synergy_metrics - First observed
impact_analysis - First observed
import_graph - First observed
import_issues - First observed
ingest_spec - First observed
link_visual_state - First observed
list_nodes - First observed
list_sessions - First observed
list_snapshots - First observed
merge_project_db - First observed
natural_language_query - First observed
next_tasks - First observed
plan_and_decompose_feature - First observed
post_blackboard - First observed
post_mortem_from_session - First observed
prune_events - First observed
query_graph - First observed
read_blackboard - First observed
remove_edge - First observed
remove_node - First observed
restore_project_db - First observed
revert_to_timestamp - First observed
save_snapshot - First observed
scaffold_spec - First observed
scaffold_template - First observed
search_nodes - First observed
start_session - First observed
subscribe_context_changes - First observed
trace_dependencies - First observed
traceback_to_node - First observed
undo_last - First observed
update_node - First observed
validate_graph - First observed
validate_memory_references - First observed
value_metrics - First observed
vcs_branch_sync - First observed
vcs_merge_resolution - First observed
velocity_analytics - First observed
verify_audit_chain - First observed
verify_requirement - First observed
watch_graph_changes - First observed
what_changed
TDQS
Scored across 13 tools
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.
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.
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.
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
Related MCP Connectors
- mcpOAuthai.butlerbrain
Persistent memory for AI assistants. Save once; recall from Claude, ChatGPT, or any MCP client.
Cross-tool persistent memory and context for AI assistants over MCP.
Persistent, portable memory for AI assistants β your private memory graph, from any MCP client.
Persistent memory and cross-session learning for AI coding assistants (hosted remote MCP).
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA 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.3MIT
- AlicenseBqualityDmaintenanceMCP 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.911 PyPI91Apache 2.0
- FlicenseNot gradedqualityDmaintenanceA persistent, conflict-aware memory MCP server for AI coding assistants (Cursor, Claude Code).-
- FlicenseNot gradedqualityDmaintenancePersistent 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-