state-memory-mcp
@putervision/state-memory-mcp
@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-globalRelated 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/:
Руководство | Описание |
Информативный архитектурный обзор, перечень модулей, потоки данных и проектные решения. | |
Пошаговое руководство по миграции, таблица сопоставления устаревших инструментов и режим | |
Когнитивная экстернализация, формализм конечных автоматов (FSM), детерминизм первого шага и метрики бенчмарков. | |
Типы узлов ( | |
Детали автоматической инициализации, таблица переменных окружения и конфигурации редакторов (Cursor, VS Code, Claude, Antigravity, Windsurf). | |
Флаги CLI ( | |
Жизненный цикл сессий, журнал аудита событий, снимки, траектории, поддержка подкаталогов и Spec-Driven Development. | |
Полный справочник по всем 13 консолидированным MCP-инструментам, ресурсам только для чтения | |
Формальные параметры, возвращаемые схемы и сигнатуры кода для всех MCP-эндпоинтов. | |
Просмотр и экспорт интерактивного 3D-визуализатора графа с силовой раскладкой на WebGL. | |
Таблицы 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 toolsget_analyticsGet AnalyticsARead-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).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of historical days for burndown (default: 14). | |
| action | No | The analytics or decision analysis action to execute. | |
| 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 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.
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.
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.
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.
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.
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 EventsBRead-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).
| 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 | No | The event query action to execute. | |
| 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?
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.
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.
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.
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.
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.
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).
| 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 | No | The data export or import action to execute. | |
| 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 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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Force overwrite during restore or merge. | |
| action | No | The database administration or VCS sync action to execute. | |
| 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?
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | The semantic relationship type. | |
| edges | No | Array of edge objects for batch_add. | |
| action | No | The edge management action to execute. | |
| 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?
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.
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.
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.
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.
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.
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).
| 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 | No | The node management action to execute. | |
| 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?
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of sessions to list (1-1000). | |
| action | No | The session management action to execute. | |
| 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 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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Force snapshot even if node count is high. | |
| limit | No | Maximum snapshots to list (1-1000). | |
| action | No | The snapshot management action to execute. | |
| 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?
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name of template or feature. | |
| title | No | Title of feature spec or template. | |
| action | No | The specification or template action to execute. | |
| 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 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.
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.
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.
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.
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.
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).
| 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 | No | The task management action to execute. | |
| 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 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.
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.
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.
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.
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.
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 GraphARead-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).
| 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 | No | The graph query action to execute. | |
| 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?
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | For dedupe action: whether to apply merging (default: false for dry-run). | |
| action | No | The diagnostic or maintenance action to execute. | |
| 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 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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Blackboard topic or channel name. | |
| action | No | The blackboard action to execute. | |
| content | No | Message payload to post. | |
| project | No | Target project name or slug. | |
| agent_id | No | Sender agent identifier. | |
| agent_role | No | Sender agent role (e.g. planner, coder, reviewer). | |
| ttl_seconds | No | Time-to-live in seconds (default: 3600). |
TDQS
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
- mcpOAuthai.butlerbrain
Persistent memory for AI assistants. Save once; recall from Claude, ChatGPT, or any MCP client.
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).
Persistent AI memory shared across Claude, ChatGPT, coding agents, and compatible MCP clients.
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
- AlicenseBqualityBmaintenanceMCP 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.991Apache 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-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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