Skip to main content
Glama

@putervision/state-memory-mcp

npm version npm downloads CI Node TypeScript Website License: MIT

@putervision/state-memory-mcp — это детерминированный сервер Model Context Protocol (MCP), не требующий инфраструктуры, который предоставляет AI-ассистентам для написания кода (таким как Cursor, Claude Code, Gemini или Copilot) структурированный постоянный граф на основе SQLite для отслеживания состояния рабочего процесса — задач, решений, артефактов, планов, блокеров и их семантических связей.

🌐 Официальная документация и веб-сайт: statememorymcp.com


⚡ Быстрый старт и установка

Предварительные требования: 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.

Альтернативные варианты

# 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

🌟 Ключевые особенности

  • 🧠 Детерминированная память состояния: операции с памятью выполняются без участия LLM в цикле; быстрые детерминированные обходы графа на базе SQLite.

  • ⚡ 13 консолидированных MCP-инструментов промышленного уровня: полный CRUD, установление связей, проверка на наличие циклов в DAG, полнотекстовый поиск FTS5, TF-IDF RAG, откат истории с перемещением во времени (time-travel), Spec-Driven Development и самовосстанавливающаяся валидация.

  • 📉 Эффективное управление контекстом: выгрузка контекста в локальную базу данных SQLite, что помогает уменьшить раздувание контекста промпта и расход контекстного окна.

  • 🚀 Снижение задержки на 67–74%: устраняет многошаговые циклы сканирования файлов; агенты получают разблокированные задачи и блокеры за миллисекунды.

  • 🤝 Мультиагентный Blackboard: общее хранилище контекста, позволяющее параллельным субагентам безопасно публиковать решения, задачи и обновления блокеров.

  • 🎨 Интерактивный 3D-визуализатор: браузерный 3D-визуализатор графа с силовой раскладкой на WebGL и тёмной темой (state-memory-mcp view).

  • 🔗 Синергия двух MCP-серверов: работайте в паре с @putervision/vision-memory-mcp для кэширования визуального состояния, перцептивного хеширования и криптографических мультимодальных пакетов доказательств.

  • 🛡️ 100% локально и конфиденциально: архитектура local-first; все состояние остается внутри .state-memory-mcp/ в вашем рабочем пространстве.


🛠️ Набор MCP-инструментов

@putervision/state-memory-mcp предоставляет 13 консолидированных MCP-инструментов промышленного уровня, организованных по 5 основным областям рабочего процесса:

  • Граф и связи: manage_nodes (CRUD узлов, векторный поиск FTS5/TF-IDF, атомарные пакетные изменения, заметки наблюдений), manage_edges (типизированные связи DAG, мультимодальное связывание визуальных состояний).

  • Выполнение задач и очередь работ: manage_tasks (топологическая очередь зависимостей, обнаружение блокеров, завершение задач с артефактами, автоматическая очистка), manage_sessions (атрибуция агентов, отслеживание ходов, начальная загрузка контекста).

  • Spec-Driven Development (SDD): manage_specs (разбор PRD/RFC, декомпозиция требований в задачи, проверка критериев приемки в реальном времени, оценка соответствия).

  • Аналитика, аудит и диагностика: get_analytics (velocity, burndown, ROI токенов, когнитивная нагрузка, критический путь), get_events (журнал событий на SHA-256 с защитой от подделки), run_diagnostics (валидация DAG, проверки работоспособности, целостность ссылок AST).

  • Данные, снимки и мультиагентность: manage_snapshots (контрольные точки, отмена через time-travel), manage_database (резервные копии, проверки контрольных сумм, слияние веток VCS), manage_data (массовый импорт/экспорт, ML-траектории), query_graph (подграфы, трассировка зависимостей, сырой SQL), use_blackboard (асинхронная мультиагентная доска тем).

👉 Полные спецификации параметров, возвращаемые схемы и примеры полезных нагрузок см. в Tools Reference Guide и Formal API Reference.


🚀 Архитектура и жизненный цикл графа состояния

                      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
               └─────────────────────────────────┘

📚 Каталог документации

Изучите специализированные руководства и подробные разборы в каталоге docs/:

Руководство

Описание

🏗️ Architecture & Codebase Distillation

Информативный архитектурный обзор, перечень модулей, потоки данных и проектные решения.

🚀 v0.10 → v1.0 Migration Guide

Пошаговое руководство по миграции, таблица сопоставления устаревших инструментов и режим STATE_MEMORY_COMPAT.

💡 Value Proposition & Theory

Когнитивная экстернализация, формализм конечных автоматов (FSM), детерминизм первого шага и метрики бенчмарков.

📋 State Memory Concepts

Типы узлов (task, decision, blocker...), значения статусов, типизированные ребра и рекомендации по начальному заполнению.

⚙️ Configuration & IDE Setup

Детали автоматической инициализации, таблица переменных окружения и конфигурации редакторов (Cursor, VS Code, Claude, Antigravity, Windsurf).

🛠️ CLI Command Reference

Флаги CLI (init, run, view, inspect, metrics, audit, doctor, backup, restore, merge) и сканер Git.

⏱️ Sessions, Snapshots & SDD

Жизненный цикл сессий, журнал аудита событий, снимки, траектории, поддержка подкаталогов и Spec-Driven Development.

🧰 Tools, Resources & Prompts

Полный справочник по всем 13 консолидированным MCP-инструментам, ресурсам только для чтения state-memory:/// и шаблонам промптов.

📘 Formal API Reference

Формальные параметры, возвращаемые схемы и сигнатуры кода для всех MCP-эндпоинтов.

🎨 3D Visualizer Guide

Просмотр и экспорт интерактивного 3D-визуализатора графа с силовой раскладкой на WebGL.

🗄️ Database Schema

Таблицы SQLite, столбцы, индексы и история миграций схемы.


📖 Плейбук агента: канонический рабочий процесс из 5 шагов

Когда автономный AI-агент попадает в репозиторий с 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")

🧪 Тестирование

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

⚖️ Лицензия и отказ от ответственности

Разработано и сопровождается компанией PuterVision. Распространяется под лицензией MIT License.

  • Гарантия локального хранения: все данные графа, записи решений и журналы событий остаются на 100% локальными в вашем рабочем пространстве. Никакая телеметрия или данные проекта никогда не передаются.

  • Товарные знаки и отсутствие аффилированности: названия продуктов (Cursor, Claude Code, Gemini, Windsurf, VS Code, GitHub, SQLite) являются собственностью соответствующих владельцев и используются исключительно для указания совместимости.

Available Tools

13 tools
get_analyticsGet AnalyticsA
Read-only

Compute workflow metrics, velocity, burndown, cognitive load, decision lineages, and contradiction audits. Supported actions: summary (project overview), velocity (throughput and duration), burndown (time-series remaining tasks chart), value_metrics (token savings and ROI), cognitive_load (ICL and ECL context complexity), critical_path (longest unfinished task chain), context_snapshot (consolidated overview), decision_trail (trace decision lineage), find_related_decisions (find decisions related to an artifact), contradictions (audit for conflicting decisions or broken states).

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of historical days for burndown (default: 14).
actionNoThe analytics or decision analysis action to execute.
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

A3.9/5.0
Behavior3/5

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

Annotations already indicate read-only and non-destructive behavior. The description aligns with this (compute) and adds no extra context about auth, rate limits, or side effects, so it is neutral rather than additive.

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?

The description is moderately concise, front-loaded with the core purpose, and uses a clear list of actions with parenthetical explanations. It conveys substantial detail without excessive verbosity, though it is slightly longer than necessary.

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 gives a good idea of what each action returns (e.g., overview, chart, metrics) but does not specify the exact output structure or format. Since there is no output schema, the description adequately informs the agent of expected results.

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?

The schema covers all parameters with descriptions, but the tool description adds value by mapping specific parameters to actions (e.g., days for burndown, window_days for velocity, milestone_id for critical_path). This enhances understanding beyond the schema alone.

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 clearly states the tool computes various analytics metrics and lists supported actions like summary, velocity, burndown, etc. It is specific and distinguishable from sibling tools like query_graph or get_events by focusing on derived metrics rather than raw data.

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

Usage Guidelines3/5

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

The description lists supported actions but does not explicitly state when to prefer this tool over alternatives. It implies usage for analytics but lacks direct comparison or conditional guidance (e.g., 'use this for high-level metrics; use query_graph for raw data').

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

get_eventsGet EventsB
Read-only

Inspect the append-only event audit ledger, query structured changesets, and generate session post-mortems. Supported actions: log (query event ledger with filters), changelog (get structured graph diff since timestamp or session), post_mortem (analyze a session and produce a structured 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.
actionNoThe event query action to execute.
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

B3.4/5.0
Behavior3/5

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

The description adds some behavioral context beyond the annotations by mentioning 'append-only' and listing three distinct actions (log, changelog, post_mortem). However, it lacks details on side effects, error handling, or output format. The annotations already cover read-only and non-destructive nature, which the description does not contradict.

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?

The description is concise and well-structured: two sentences with a clear overall purpose followed by a list of supported actions. It avoids redundancy and is easy to parse.

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

Completeness2/5

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

There is no output schema, and the description does not explain what log or changelog return. It only hints that post_mortem produces a 'structured markdown report'. It also omits details about pagination or result types, leaving significant gaps for the agent.

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?

The input schema already provides descriptions for all parameters, so the baseline is high (coverage 100%). The description does not add meaningful clarifications about parameter usage, such as which parameters apply to which action. It repeats the parameter list implicitly but without extra semantic value.

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 clearly states the tool's purpose: inspecting an append-only event audit ledger, querying structured changesets, and generating session post-mortems. It also lists three specific actions (log, changelog, post_mortem) which distinguish it from siblings like query_graph or get_analytics.

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

Usage Guidelines2/5

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

The description does not provide explicit guidance on when to use this tool over alternatives. It lists actions but does not explain under what circumstances each should be invoked, nor does it differentiate from other query/analytics tools. Users must infer usage from the actions.

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

manage_dataManage DataB

Export and import graph structures, issue tracker items, fine-tuning trajectories, and multimodal synergy metrics. Supported actions: export_graph (export to JSON/DOT/Mermaid/HTML), export_issues (export to GitHub/Jira JSON), export_trajectories (export JSONL fine-tuning data), export_joint_trajectories (export interleaved state + vision data), export_synergy_metrics (compute dual-memory metrics), import_graph (bulk import nodes & edges), import_issues (import GitHub/Jira issues), import_spec (import PRD/Gherkin spec).

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.
actionNoThe data export or import action to execute.
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

B3.3/5.0
Behavior4/5

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

Annotations indicate the tool is not read-only (readOnlyHint false) and not destructive by default, but the description explicitly lists import and export actions, which are non-destructive but involve changes. The description adds context about supported formats and actions (e.g., export to JSON/DOT/Mermaid) that helps set expectations. It does not disclose behaviors like overwrite behavior beyond the 'force' parameter, but annotations already cover none of that, so the description's additional action list adds value.

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 description is a long single sentence that enumerates nine actions with parenthetical details. It front-loads the general purpose but becomes cluttered. It could be structured as a list for clarity. It is not concise given the number of actions covered.

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?

Given the complexity of a 13-parameter, multi-action tool, the description is too thin. It does not specify which parameters are required or optional for each action, nor does it provide any action-specific parameter requirements or output formats. With no output schema and zero required parameters, an agent cannot reliably infer which parameters to supply for a given action. The description covers the action names but not the full usage context.

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 13 parameters are described in the schema. The description lists actions and mentions some associated parameters (e.g., for import_graph: nodes, edges) but doesn't go beyond the schema's own descriptions. The description helps map which parameters apply to which actions, but this mapping is implicit rather than explicit, so it doesn't fully compensate for the lack of action-specific parameter guidance.

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 lists a clear set of actions (export_graph, import_graph, etc.) across multiple domains (graph, issues, trajectories, metrics), which makes the tool's scope evident. However, it packs many operations into one tool, so it does not differentiate itself from siblings like manage_nodes or manage_specs, which likely handle more focused operations.

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

Usage Guidelines2/5

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

The description enumerates actions but gives no guidance on when to choose this tool over siblings. For instance, it doesn't explain that manage_nodes should be used for fine-grained node edits while import_graph is for bulk loading. There are no explicit when-to-use or when-not-to-use conditions.

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

manage_databaseManage DatabaseB

Physical SQLite database maintenance, backups, integrity checks, and Git VCS state sync. Supported actions: backup (online SQLite backup), restore (destructive restore from backup), audit (foreign keys and physical integrity check), merge (merge external SQLite state DB), branch_diff (diff state nodes across git branches), branch_merge (resolve graph conflicts during branch merge).

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoForce overwrite during restore or merge.
actionNoThe database administration or VCS sync action to execute.
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

B3/5.0
Behavior1/5

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

The description explicitly notes that restore is destructive and that the force parameter allows overwriting during restore or merge, which is valuable behavioral information. However, the annotation destructiveHint=false directly contradicts this, as the tool can perform destructive operations. This is a critical inconsistency, and the description fails to align with the structured metadata, warranting a score of 1.

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?

The description is a single sentence but effectively packs information: it states the general purpose and then lists all six actions with brief parenthetical clarifications. It is concise and front-loaded, though the dense list could be more readable with bullet formatting. Every phrase adds information without waste.

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

Completeness2/5

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

With no output schema and a tool that includes destructive actions, the description should explain behavior in more depth—such as where backups are written, prerequisites for restore, how merge resolves conflicts, and what the audit reports. It only names actions without detailing side effects, expected returns, or edge cases, leaving substantial gaps for an agent.

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 description coverage is 100%, so baseline is 3. The description adds significant value by enumerating the valid values for the action parameter (backup, restore, audit, merge, branch_diff, branch_merge), which the schema leaves vague as 'the database administration or VCS sync action to execute.' For other parameters, the schema descriptions suffice, but the action list is a notable contribution.

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 clearly defines the tool as handling SQLite database maintenance, backups, integrity checks, and Git VCS sync, and it lists six specific actions. This distinguishes it from sibling tools like manage_nodes or manage_sessions, which focus on other resources. However, it is a multi-action tool, so the purpose is broad rather than a single verb, preventing a perfect score.

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

Usage Guidelines3/5

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

The description implies usage contexts—database maintenance and VCS state sync—but does not explicitly compare to alternatives or state when not to use it. While the tool name and action list make its domain clear, there is no direct contrast with sibling tools or exclusion criteria, so guidance is only implied, not explicitly provided.

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

manage_edgesManage EdgesB

Manage typed graph relationships between nodes. Supported actions: add (create typed relationship), remove (delete relationship), batch_add (create multiple relationships atomically), link_visual (link task or artifact to visual memory state).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoThe semantic relationship type.
edgesNoArray of edge objects for batch_add.
actionNoThe edge management action to execute.
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

B3.4/5.0
Behavior4/5

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

The description adds value beyond the annotations by disclosing the action enum ('add', 'remove', 'batch_add', 'link_visual') and clarifying that 'batch_add' is atomic ('create multiple relationships atomically'). The mention of 'link_visual' provides context for what would otherwise be an opaque parameter. However, there's no mention of destructive-behavior details, permission requirements, or failure semantics. The atomicity note shows the author knows how to disclose behavior when they want to.

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 description is compact—two sentences—but the parameter list in parentheses is dense and could be structured more effectively. The atomicity callout is front-loaded appropriately. It's readable but not as scannable as the best examples.

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 mutating, multi-action tool with no annotations, no output schema, and 12 parameters, a description would need to explain parameter groupings (which params apply to add vs. batch_add vs. link_visual) and clarify the new semantics of the 'link_visual' feature. The current description names the actions and parameters but doesn't provide this mapping. However, the schema covers all parameters, and the basic graph-operation behavior is simple enough for an agent to infer.

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?

With schema description coverage at 100%, the schema documents all 12 parameters, including the enum for 'type' and descriptions for each field. The description meaningfully adds value by naming the four actions and clarifying the atomicity of batch_add. However, the description could have provided a mapping between parameters and actions, which is essential given the complexity of a multi-action tool.

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

Purpose3/5

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

The description uses a specific verb ('Manage'), a clear resource ('typed graph relationships between nodes'), and enumerates supported actions (add, remove, batch_add, link_visual). However, it doesn't differentiate this tool from its siblings beyond the generic graph-relationship scope, and 'Manage Edges' is tautological with the tool name. It's functional but lacks the precision of the best examples.

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

Usage Guidelines3/5

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

The description implies a complex tool with a 'link_visual' action that 'links task or artifact to visual memory state,' which is somewhat distinct from the first three actions. However, it doesn't state when to use this tool vs. alternatives like manage_nodes, manage_tasks, or manage_snapshots, nor does it address the parameter-grouping complexity (12 params, 0 required) or which parameters apply to which action. The usage context is only partially clear.

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

manage_nodesManage NodesC

Manage graph nodes in the state graph. Supported actions: create (add single node), update (modify node properties), get (fetch node with edges), remove (delete node and cascade edges), list (filter nodes), search (FTS5 or TF-IDF search), batch_create (create multiple nodes atomically), batch_update (update multiple nodes atomically), add_note (log observation node with optional context link).

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.
actionNoThe node management action to execute.
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

C2.9/5.0
Behavior3/5

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

The description adds useful behavioral detail beyond annotations: 'remove (delete node and cascade edges)' discloses destructive cascading, 'batch_create/batch_update atomically' discloses atomicity, and 'add_note (log observation node with optional context link)' discloses side effects. However, the disclosed cascade-delete behavior directly conflicts with annotations' destructiveHint=false, creating trust ambiguity about whether remove is safe.

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?

Every word earns its place — no filler. But the entire action taxonomy is crammed into one run-on sentence, making it hard to scan for a specific action. A bulleted or structured enumeration would materially improve parseability without adding length.

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

Completeness2/5

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

This is a complex dispatcher (21 params, 9 actions, nested objects) with no output schema, yet the description leaves critical gaps: no action-to-parameter mapping, no return-value or response-shape disclosure for each action, and no per-action constraints. An agent cannot reliably determine which parameters are relevant for a chosen action or what result to expect, so the definition is incomplete for its complexity.

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 21 parameters carry descriptions in the schema; the tool description itself adds no parameter details beyond the action names. The description does not map actions to their relevant parameters (e.g., that 'algorithm' applies only to 'search'), but per the baseline rule for full schema coverage, the description need not duplicate the schema. The un-enumerated 'action' string benefits slightly from the listed valid values.

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 states 'Manage graph nodes in the state graph' with a specific resource, and enumerates nine concrete actions (create, update, get, remove, list, search, batch_create, batch_update, add_note). This distinguishes it from siblings like manage_edges and manage_snapshots by resource. However, 'manage' plus a long action list is a dispatcher-style breadth that weakens the single-purpose clarity.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance is provided. The sibling list includes conceptually overlapping tools (manage_tasks, manage_specs, query_graph, manage_edges), and the description never explains when to call manage_nodes versus those alternatives, nor does it note that 'task'/'spec' node types exist here despite dedicated manage_tasks/manage_specs siblings. An agent has no routing cues.

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

manage_sessionsManage SessionsA

Manage agent tracking sessions and multi-turn workflow attribution. Supported actions: start (begin tracked session), end (conclude session), list (view active/historical sessions), bootstrap (single-turn start + context snapshot + next tasks).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of sessions to list (1-1000).
actionNoThe session management action to execute.
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.6/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=false (mutation) and destructiveHint=false (not destructive). The description adds the notion of sensitive actions like 'start' and 'end' but does not disclose side effects, reversibility, or what happens to session data on end. It introduces 'context snapshot' and 'next tasks' for bootstrap, which is a helpful behavioral detail, but lacks depth about state changes or consequences.

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?

The description is two compact sentences with zero filler. The purpose is front-loaded, and the action list is provided efficiently in parentheses. Every word earns its place, making it easy to scan.

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

Completeness2/5

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

With 8 parameters, multiple actions, and no output schema, the description is under-specified. It does not explain which parameters apply to which action (e.g., session_id for end, limit for list), nor does it describe the return shape or outcomes. The absence of output schema amplifies the gap, leaving an agent without enough context to call the tool correctly across different 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%, so the baseline is 3. The description does not add any parameter-specific meaning beyond the schema; it only lists action names without mapping them to required parameters. An agent must rely solely on the schema to know which fields matter for each action, which the description does not clarify.

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 clearly states a specific verb + resource: 'Manage agent tracking sessions and multi-turn workflow attribution.' It also enumerates four concrete actions (start, end, list, bootstrap), which differentiates it from sibling tools like manage_nodes or manage_tasks. An agent can immediately understand the tool's role 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 Guidelines3/5

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

The description implies usage by stating its purpose and actions, but does not explicitly say when to use this tool versus alternatives. No exclusions or comparisons are provided. For example, it doesn't mention that tasks would be managed elsewhere, or when a session must be started before tracking. The guidance is implicit rather than explicit.

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

manage_snapshotsManage SnapshotsB

State checkpointing, time travel, diffing, and undo operations. Supported actions: save (create named checkpoint), list (list checkpoints), diff (compare two snapshots), get_state (reconstruct graph state at historical timestamp), revert (rollback graph to historical timestamp), undo (revert last mutation on a node), get_history (chronological audit log for a node).

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoForce snapshot even if node count is high.
limitNoMaximum snapshots to list (1-1000).
actionNoThe snapshot management action to execute.
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

B3/5.0
Behavior1/5

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

The annotations indicate destructiveHint=false, yet the description includes 'revert' and 'undo' actions which are destructive operations. This is a clear contradiction. Additionally, the description does not disclose side effects like state mutation, permission requirements, or irreversible changes, so behavioral transparency is severely lacking.

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?

The description is concise, a single sentence that enumerates the supported actions. It is well-structured and front-loaded with the overall purpose, making it easy to scan and understand.

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

Completeness2/5

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

The description omits crucial context: it does not mention what each action returns, whether results are paginated, error handling, or examples. Since there is no output schema, the description should clarify expected outputs but does not. It also lacks notes on side effects or limitations, leaving an agent with incomplete information for invoking the tool correctly.

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?

The schema descriptions cover all 9 parameters, but the tool description itself does not elaborate on parameter usage. It does list the action values in the text, which partially clarifies the action parameter, but it does not map parameters to specific actions or explain how they interact. The description adds some value by naming the actions, but parameter semantics are mostly derived from 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?

The description clearly states the tool manages snapshots and lists the specific actions (save, list, diff, get_state, revert, undo, get_history). This distinguishes it from sibling tools like manage_nodes or query_graph, so an agent can identify its purpose readily.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool vs alternatives. It does not mention conditions like 'when you need to save or revert state' or reference scenarios that would make this tool preferable to others. The action list is informative but lacks situational context.

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

manage_specsManage SpecsA

Spec-Driven Development (SDD) lifecycle and workflow template generation. Supported actions: scaffold (generate spec template in .specs/), ingest (parse PRD/Gherkin into graph nodes), export (export spec node back to Markdown/Gherkin), compliance (calculate requirement coverage matrix), verify (mark acceptance criterion verified/failing), decompose_feature (decompose feature into plan/milestones/subtasks), template (scaffold FDD or RFC template).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName of template or feature.
titleNoTitle of feature spec or template.
actionNoThe specification or template action to execute.
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

A4.1/5.0
Behavior4/5

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

Annotations only carry readOnlyHint=false, openWorldHint=false, destructiveHint=false, so the description must carry the behavioral weight. It does: scaffold generates, ingest parses into graph nodes, verify marks criteria, decompose creates plan/milestones/subtasks. These are honest descriptions of mutating behaviors. It does not disclose deeper effects like undo behavior or permissions, but that is not critical here.

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?

The first sentence states the broad purpose, and the second packs all seven actions into a compact, scannable list. Every phrase adds information; there is no repetition, filler, or restating of the tool name. This is an efficient structure for a multi-action dispatcher.

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?

Given 13 parameters, 7 actions, no output schema, and no required parameters, the description is strong on action semantics but weak on action-to-parameter mapping. An agent might struggle to know, for example, which parameters to pass for 'compliance' or whether 'template' requires both 'template' and 'name'. This is the main completeness gap.

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 schema itself documents all 13 parameters. The description adds semantics to the action enumeration values (e.g., what 'scaffold' means) but does not map which parameters each action requires. Baseline 3 is appropriate because the schema handles the parameter-level burden.

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 opens with a clear domain ('Spec-Driven Development (SDD) lifecycle and workflow template generation') and then enumerates seven concrete actions with brief parenthetical effects. This distinguishes manage_specs from sibling graph-management tools like manage_nodes and manage_edges by scope and action set.

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 action list establishes clear context for when to use this tool (when performing SDD scaffold/ingest/export/compliance/verify/decompose/template operations). It does not explicitly name sibling alternatives or state exclusions, but the use cases are self-evident from the action names and descriptions.

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

manage_tasksManage TasksB

Task prioritization, workflow execution, blockers, and stale task management. Supported actions: next (query prioritized unblocked tasks), complete (mark done and optionally create artifact), find_blocked (find tasks blocked by a decision), find_stale (find idle/untouched tasks), find_blockers (find active blockers), find_similar_blockers (TF-IDF search for previously resolved blockers), auto_prune (cancel stale in-progress tasks).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoNode type filter for find_stale.
limitNoMaximum tasks to return (1-1000).
queryNoQuery text for find_similar_blockers.
actionNoThe task management action to execute.
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

B3.2/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false, openWorldHint=false, destructiveHint=false, matching the description's implied mutation operations like 'complete' and 'auto_prune'. The description adds context by detailing what each action does (e.g., 'cancel stale in-progress tasks'), but it doesn't disclose side effects beyond action names, such as reversibility, permission requirements, or rate limits. It does not contradict annotations, and given the annotation coverage, the description is adequate but not rich.

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?

The description is a single dense paragraph that starts with a clear general statement, then lists each action with a short parenthetical explanation. It's front-loaded and free of fluff, though the long enumeration could be more scannable with line breaks. Still, it is appropriately sized for the tool's scope.

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?

Given the tool's complexity (20 params, no required, no output schema), the description provides a high-level overview of actions but lacks a mapping from actions to parameters. An agent may struggle to know which parameters apply to each action (e.g., task_id for complete, query for find_similar_blockers). While the schema documents each parameter individually, the description doesn't synthesize this information. The description is adequate for initial selection but insufficient for correct invocation without further inference.

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?

The schema provides descriptions for all 20 parameters (100% coverage), so the baseline is 3. The description does not add any parameter-specific details; it mentions actions but doesn't map them to parameters. However, since the schema already covers semantics, the description doesn't need to compensate. It offers no extra benefit beyond what the schema provides.

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 clearly states the tool's purpose: task management via multiple specific actions (next, complete, find_blocked, etc.), each with a brief explanation. The resource (tasks) is explicit and distinct from sibling tools like manage_nodes or manage_snapshots, though it doesn't explicitly contrast them. The listing of actions is informative and covers the main capabilities.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It simply enumerates supported actions without mentioning circumstances where a sibling tool would be more appropriate, nor does it state any prerequisites or exclusions. An agent must infer from the tool name that it's for tasks, but there's no explicit routing to help select this over manage_nodes or manage_snapshots.

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

query_graphQuery GraphA
Read-only

Query graph topology, neighborhoods, dependency paths, and safe read-only SQL queries. Supported actions: subgraph (fetch N-hop neighborhood around root node), trace (trace dependency chain upstream or downstream with cycle detection), raw (execute safe read-only SELECT query against SQLite), natural_language (translate natural language query into graph operations).

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.
actionNoThe graph query action to execute.
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.6/5.0
Behavior4/5

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

The annotations already declare readOnlyHint and destructiveHint, and the description reinforces the 'safe read-only' nature. It also mentions cycle detection for trace, which adds behavioral detail beyond the annotations. However, it does not describe return formats or potential side effects (though read-only implies none).

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?

The description is concise and lists actions clearly, but it is a single sentence that packs many details. It front-loads the purpose and then itemizes actions, which is efficient, though the lack of separate sections might reduce scannability.

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?

The description covers the main actions and parameters reasonably well for a read-only query tool. However, it does not explain when to use specific actions (e.g., subgraph vs trace vs raw) or how they relate to sibling tools. No output schema exists, so return values are not described, which is acceptable per guidelines.

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?

The schema covers 100% of parameters with descriptions, but many descriptions are minimal (e.g., 'Query parameters for raw action'). The description provides little additional semantic meaning beyond the schema, and the action parameter's possible values are only listed in the description, not in the schema.

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 clearly states the tool queries graph topology, neighborhoods, dependency paths, and safe read-only SQL queries, listing specific actions. It names the resource (graph) and the verb (query), but does not explicitly differentiate from sibling tools beyond the read-only aspect.

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

Usage Guidelines3/5

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

The description implies usage for graph-related queries and read-only operations, but does not explicitly state when to use this tool versus alternatives like manage_nodes or get_analytics. No exclusions or alternatives are mentioned, though the read-only nature is implied.

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

run_diagnosticsRun DiagnosticsB

Run graph sanity checks, health diagnostics, reference validation, audit chain verification, and storage maintenance. Supported actions: validate (check cycles, orphans, dangling edges), doctor (database WAL mode, schema version, storage health), check_refs (validate file paths and AST symbols with auto-heal), audit_chain (verify SHA-256 event hash integrity), compact (reclaim SQLite storage), archive (archive old completed tasks), prune_events (permanently prune events - admin mode required), version (retrieve package version info), dedupe (detect and merge duplicate nodes).

ParametersJSON Schema
NameRequiredDescriptionDefault
applyNoFor dedupe action: whether to apply merging (default: false for dry-run).
actionNoThe diagnostic or maintenance action to execute.
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

B3.4/5.0
Behavior3/5

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

Annotations declare destructiveHint=false despite actions like prune_events, compact, archive, and dedupe being potentially destructive. The description notes prune_events requires admin mode and provides a dry_run parameter for simulation, and dedupe uses apply for merging, but it doesn't explicitly clarify that these actions alter state. The description partially compensates by warning about permanent pruning, but it doesn't fully address the contradiction with the destructive hint.

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 description is a long single sentence listing many actions and parameters, which becomes dense. It is front-loaded with the main purpose but the long list of actions feels like a wall of text. It could be more structured (e.g., grouping actions by type: health checks vs maintenance) to improve scannability.

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?

Given the tool has 10 params, no required params, and no output schema, the description covers the actions and key params but does not explain return values or what constitutes a successful execution. It lacks clarity on how the agent knows which action to choose for a given need, and doesn't explain the relationship between actions like check_refs and auto-heal or older_than vs older_than_days. There is also no mention of error conditions or side effects beyond prune_events admin requirement.

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 all parameters have descriptions. The tool description adds context by explaining which action each parameter relates to (e.g., dry_run for prune_events, older_than for prune_events, apply for dedupe, auto_heal for check_refs). This mapping helps the agent use parameters correctly, adding value beyond the schema.

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 clearly states the tool's purpose: running graph diagnostics and maintenance, listing specific actions. It distinguishes from siblings like manage_nodes, manage_edges, manage_database, and get_analytics by covering a broad set of checks and maintenance actions. However, it doesn't explicitly differentiate from manage_database which may overlap with storage maintenance actions (compact, archive, prune).

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

Usage Guidelines3/5

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

The description lists supported actions and explains some parameters (e.g., admin mode for prune_events, auto-heal for check_refs), but does not provide explicit guidance on when to use this tool versus the many siblings (manage_nodes, manage_edges, manage_database, get_analytics). The list of actions implies usage but doesn't state exactly when this tool is the right choice over alternatives.

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

use_blackboardUse BlackboardA

Multi-agent shared blackboard for asynchronous agent coordination. Supported actions: post (publish ephemeral notice with topic, content, and TTL expiration), read (read active non-expired blackboard notices).

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoBlackboard topic or channel name.
actionNoThe blackboard action to execute.
contentNoMessage payload to post.
projectNoTarget project name or slug.
agent_idNoSender agent identifier.
agent_roleNoSender agent role (e.g. planner, coder, reviewer).
ttl_secondsNoTime-to-live in seconds (default: 3600).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate the operation is not read-only and not destructive, while the description adds meaningful behavioral detail: notices are ephemeral, expire via TTL, and reads only return active non-expired notices. It does not cover overwrite, visibility, or authentication, but it goes beyond the annotations without contradicting them.

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?

Two sentences with no filler: the first front-loads the purpose and the second summarizes the supported actions. It earns its place without repeating 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 7-parameter tool with no output schema and minimal annotations, the description conveys the core blackboard concept but leaves the per-action call shape (which parameters apply to post vs read) and the read return behavior to inference. The generic schema descriptions make this a noticeable 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 the baseline is 3, but the description adds extra meaning by defining the legal action values ('post' and 'read') and explaining how topic, content, and ttl_seconds factor into a post. It does not clarify project, agent_id, or agent_role beyond their schema descriptions.

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 (shared blackboard), a clear purpose (asynchronous agent coordination), and the supported actions (post and read). It distinguishes itself from the manage_*/query_* sibling tools rather than merely restating its title.

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 provides a clear intended usage context: asynchronous agent coordination via a shared blackboard. It does not explicitly name alternatives or when-not-to-use cases, but the purpose is obvious enough for an agent to select it appropriately.

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. Dates show when Glama detected each change.

  1. 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
  2. 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
Disambiguation5/5

Each tool has a clearly distinct domain: snapshots, nodes, edges, sessions, tasks, specs, database, data, query, analytics, events, diagnostics, and blackboard. Even where actions overlap (e.g., query_graph vs. get_analytics), the intended use is distinct—topology vs. metrics. No two tools appear to do the same thing.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (manage_*, query_*, get_*, run_*, use_*) with snake_case throughout. The verbs are semantically appropriate and the pattern is uniform across the entire set.

Tool Count5/5

With 13 tools, the server is well-scoped for a state memory system. Each tool covers a distinct area and none feel redundant or excessive. The count falls within the ideal 3–15 range.

Completeness4/5

The tool set offers comprehensive coverage for graph CRUD, snapshots, sessions, specs, database maintenance, export/import, analytics, events, and diagnostics. A minor gap exists in manage_tasks: it lacks explicit create/update/delete actions, though tasks might be managed via nodes. Overall, the surface is nearly complete for the stated purpose.

Maintenance

ActivityActive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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
    B
    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
    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
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/putervision/state-memory-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server