Skip to main content
Glama
mcasdfgf

MCP Roo Memory

by mcasdfgf

MCP Roo Memory

Persistent, graph-based memory for Roo Code via the Model Context Protocol (MCP).

LLMs have a short memory. Every new conversation starts from scratch — context windows overflow, past decisions fade, and reasoning chains disappear.

MCP Roo Memory gives your AI agent a structured, persistent brain:

  • Graph memory — knowledge is not a flat dump, but a fractal graph of tasks, entities, facts, and decisions

  • Semantic search — find what matters by meaning, not keywords (50+ languages)

  • Context window control — hot/cold/archive tiers so you don't drown in tokens

  • Knowledge evolution — decisions can be superseded, facts can be updated, stale data gets archived

  • Temporal awareness — time as first-class citizen: chronological walks, session timelines, temporal vector filters

Python 3.11+ MIT Status Docker

⚠️ Disclaimer

This is an experimental project — a search for form and architecture. It works, it has tests, but treat it as a Proof of Concept (PoC). The software is provided "AS IS", without any warranty of any kind. Use it at your own risk. See LICENSE for details.


Quick Start

Zero system dependencies — just Docker. Everything runs in containers; no Python, no venv, no pip.

1. Start the stack

git clone https://github.com/mcasdfgf/mcp-roo-memory.git
cd mcp-roo-memory
docker compose up -d

This starts two containers:

Container

What it does

cortex-qdrant

Vector database (port 6333)

cortex-mcp

Cortex server (idle, waits for MCP connections)

2. Global MCP configuration

Add Cortex as a global MCP server for all your projects. The server is always running in Docker, so any project can connect.

Edit ~/.config/VSCodium/User/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json (or the equivalent path for VS Code):

{
  "mcpServers": {
    "cortex": {
      "command": "docker",
      "args": ["exec", "-i", "cortex-mcp", "python3", "-m", "src.cortex"]
    }
  }
}

VSCode users: replace VSCodium with Code in the path above.

3. Project-level configuration (for workspace isolation)

If you want memory isolated per project, copy the reference .roo/ directory into your project:

cp -r ./mcp-roo-memory/.roo ./your-project/

Then edit .roo/mcp.json in your project and add --workspace your-project-name:

{
  "mcpServers": {
    "cortex": {
      "command": "docker",
      "args": [
        "exec", "-i", "cortex-mcp", "python3",
        "-m", "src.cortex", "--workspace", "your-project-name"
      ],
      "alwaysAllow": ["desktop_open", "graph_add_node", "vector_search", "graph_get_node",
                       "graph_add_relation", "graph_search", "desktop_focus",
                       "desktop_history", "graph_traverse", "graph_walk",
                       "graph_decompose", "graph_update_node", "graph_supersede",
                       "graph_delete_node", "vector_store",
                       "temporal_walk", "session_timeline"]
    }
  }
}

Replace your-project-name with a unique identifier — mcp-roo-memory, researcher, ai-pulse, etc.

How isolation works:

  • desktop_open() and graph_add_node() — always write to your project's workspace

  • vector_search() without workspace_id — searches across all projects (cross-project recall)

  • vector_search(workspace_id="project") — narrows search to one project

4. Done

Restart Roo Code. Your agent now has persistent memory — zero system pollution.


🏠 Native pip (advanced)

If you prefer running without Docker — or you're developing Cortex itself:

# Requirements: Python 3.11+
git clone https://github.com/mcasdfgf/mcp-roo-memory.git
cd mcp-roo-memory
python -m venv .venv
source .venv/bin/activate
pip install -e .

# Qdrant is still needed:
docker run -d --name qdrant -p 6333:6333 qdrant/qdrant

MCP config:

{
  "mcpServers": {
    "cortex": {
      "command": "python",
      "args": ["-m", "src.cortex"],
      "env": {
        "CORTEX_DB_PATH": "/path/to/cortex.db",
        "CORTEX_QDRANT_HOST": "localhost",
        "CORTEX_QDRANT_PORT": "6333"
      }
    }
  }
}

Related MCP server: M.I.M.I.R - Multi-agent Intelligent Memory & Insight Repository

Problems This Solves

Problem

How Cortex solves it

Flat memory — facts are stored as unrelated chunks

Fractal graph — tasks decompose into subtasks, facts connect to decisions, entities index files

Context window overflow — everything grows unbounded

Desktop Viewport — Hot (always loaded) / Cold (on focus) / Archive (search only) tiers

No navigation — can't walk a reasoning chain

Graph traversal — follow supersedes, derives_from, leads_to relations like a path

Stale facts linger — old decisions pollute context

Mutation strategy — Update (typo fix) / Supersede (approach changed) / Stale-cascade (rework)

Keyword search fails — "auth implementation" doesn't find "JWT with RS256"

Semantic vector search — multilingual embeddings (50+ languages) via Qdrant + fastembed

No time axis — can't answer "what happened in what order"

Temporal layer — chronological walks, session timelines, temporal vector filters


Architecture

┌──────────────────────────────────────────────┐
│              MCP Client (Roo Code)            │
└──────────────────────┬───────────────────────┘
                        │ stdio (MCP protocol)
┌──────────────────────▼───────────────────────┐
│               CortexServer                     │
│         17 tools · 4 resources                 │
├──────────┬──────────┬──────────┬─────────────┤
│ Graph    │ Vector   │ Desktop  │ Database    │
│ CRUD,    │ Qdrant + │ Hot/     │ SQLite      │
│ traverse,│ fastembed│ Cold/    │ graph +     │
│ walk     │ semantic │ Archive  │ history     │
└──────────┴──────────┴──────────┴─────────────┘

Three layers of intelligence:

  1. Graph (SQLite) — who relates to who, what decomposes into what

  2. Vector (Qdrant) — what does this mean, what's semantically similar

  3. Desktop (viewport) — what fits in the context window right now


Using as Primary Roo Memory

Make Cortex your agent's default memory system by copying the .roo/ directory into your project:

# Copy reference config from this repo
cp -r ./mcp-roo-memory/.roo ./your-project/

The .roo/ directory contains ready-to-use reference configs:

File / Dir

Purpose

custom_instructions.md

Cortex bootstrap — mandatory sequence, core principles

mcp.json

Reference MCP server config (edit --workspace for your project)

rules/

Boot, save, templates, triggers — memory lifecycle

rules-architect/

Memory rules for Architect mode

rules-ask/

Memory rules for Ask mode

rules-code/

Memory rules for Code mode

rules-coding-teacher/

Memory rules for Coding Teacher mode

rules-debug/

Memory rules for Debug mode

rules-documentation-writer/

Memory rules for Documentation Writer mode

rules-orchestrator/

Memory rules for Orchestrator mode

rules-project-research/

Memory rules for Project Research mode

For deep understanding of the memory model, see CONCEPT.md.


Tools Overview

Tool

What it does

desktop_open

Open/restore a workspace session

desktop_focus

Bring a node into hot context

desktop_history

Get navigation history for a workspace

graph_add_node

Store any knowledge: entity, fact, decision, task...

graph_get_node

Retrieve a node with its relations

graph_add_relation

Create a relation between two nodes

graph_traverse

Walk the graph from a starting node

graph_walk

Walk along a reasoning chain

graph_decompose

Break a task into structured subtasks

graph_update_node

Update a node's data in-place

graph_supersede

Replace outdated knowledge (keeps history)

graph_delete_node

Delete a node and its vector

vector_search

Find things by meaning, across 50+ languages

vector_store

Store text with automatic vectorization

graph_search

Hybrid: semantic + graph subgraph expansion

temporal_walk

Chronological graph traversal (time axis)

session_timeline

Flat timeline of all events in a session

That's all 17 tools

See full list in CONCEPT.md §8


Configuration

All via CORTEX_* environment variables:

Variable

Default

Description

CORTEX_DB_PATH

cortex.db

SQLite database path

CORTEX_QDRANT_HOST

localhost

Qdrant host

CORTEX_QDRANT_PORT

6333

Qdrant port

CORTEX_QDRANT_TIMEOUT

30

Connection timeout (s)

CORTEX_COLLECTION_NAME

cortex_memory

Qdrant collection name

CORTEX_EMBEDDING_MODEL

sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2

Embedding model (50+ languages)

CORTEX_ARCHIVE_DAYS_THRESHOLD

7

Days before auto-archive

CORTEX_DESKTOP_HOT_LIMIT

5

Max hot nodes in viewport

CORTEX_DESKTOP_HISTORY_LIMIT

10

Max history entries


Project Structure

.
├── docker-compose.yml    ← Two services: cortex + qdrant
├── Dockerfile            ← Multi-stage, python:3.11-slim
├── .dockerignore
├── src/cortex/
│   ├── __init__.py    — Cortex factory (component assembly)
│   ├── __main__.py    — MCP server entry point (stdio)
│   ├── config.py      — Configuration (pydantic-settings)
│   ├── db.py          — DatabaseManager (SQLite)
│   ├── desktop.py     — DesktopManager (viewport + timeline)
│   ├── graph.py       — GraphManager (CRUD, navigation, mutation, temporal)
│   ├── models.py      — Pydantic models (Node, Relation, Viewport)
│   ├── server.py      — MCP server (17 tools, 4 resources)
│   └── vector.py      — VectorManager (Qdrant, embeddings, temporal filters)
└── tests/

Deep Dive

Document

What you'll find

CONCEPT.md

Full philosophy, data model, node taxonomy (17 types), relation taxonomy (22 types), SQL schema

ADR-001

Fractal memory architecture decision

ADR-002

SQLite + JSON for graph instead of Neo4j/Cayley

ADR-003

Qdrant for vectors (existing)

ADR-004

fastembed for embeddings (paraphrase-multilingual-MiniLM-L12-v2)

ADR-005

Desktop Viewport — context window strategy

ADR-006

Knowledge evolution: update / supersede / stale

ADR-007

Regression search: meaning → context → files

ADR-008

Temporal layer — time as first-class citizen

CHANGELOG.md

Project release history

CONTRIBUTING.md

Development guidelines


Development

# Native install (inside venv)
pip install -e .
pip install pytest pytest-asyncio

# Run all tests (188+ tests)
pytest tests/ -v

# With coverage
pytest tests/ --cov=src.cortex -v

Tests cover every component: models (17), config (19), database (26), graph (19), desktop (14), vector (19), server (19), integration (3) — 136+ total.

See CONTRIBUTING.md for guidelines.


License

MIT © 2026

Available Tools

17 tools
desktop_focusA

Focus on a specific node — expand its subgraph with all relations and child nodes. Use when you need to explore context around a specific task, fact, or decision. Also logs this focus to navigation history for Hot/Cold tier calculations.

workspace_id is OPTIONAL.

ParametersJSON Schema
NameRequiredDescriptionDefault
node_idYesID of the node to focus on
workspace_idNoOptional. Falls back to env/CWD folder name / 'default'

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses logging to navigation history for tier calculations, indicating state effects, but does not specify whether the operation is read-only, destructive, or other side effects. It provides moderate transparency.

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?

Description is concise with two sentences and a separate line for workspace_id. Information is front-loaded, and every sentence adds value. No wasted words.

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

Completeness3/5

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

The description explains purpose, usage, and side effects but does not mention what the tool returns or its output format. Given no output schema, this is a gap. The parameter details are clear, but overall completeness is moderate.

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 baseline is 3. The description reiterates that workspace_id is optional and mentions fallback behavior, but the schema already includes that detail ('Falls back to env/CWD folder name / default'). No additional value beyond 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 focuses on a node and expands its subgraph with relations and child nodes, using a specific verb and resource. It also mentions logging for tier calculations, providing good specificity. However, it does not explicitly distinguish from sibling tools like graph_traverse or temporal_walk, which have similar exploration purposes.

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

Usage Guidelines4/5

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

Explicitly states 'Use when you need to explore context around a specific task, fact, or decision,' giving clear context for usage. Lacks explicit when-not-to-use or alternative tools, but the guidance is sufficient for appropriate use cases.

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

desktop_historyA

Get navigation history for a workspace session. Use to understand what was recently worked on or to restore context.

workspace_id is OPTIONAL.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_idNoOptional. Falls back to env/CWD folder name / 'default'
limitNo

TDQS

A3.5/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It correctly implies a read operation with no side effects, but doesn't disclose auth needs, rate limits, or return format constraints.

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

Conciseness4/5

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

Two sentences plus a prominent note about workspace_id optionality; front-loaded and efficient, though could be more concise about limit parameter.

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

Completeness4/5

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

For a simple 2-parameter read-only tool with no output schema, the description covers purpose and basic usage adequately, missing only pagination details for the limit parameter.

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 50%: workspace_id has description, limit does not. Description restates workspace_id optionality but adds no meaning for limit. Baseline 3 is appropriate as description partially compensates.

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?

Description clearly states 'Get navigation history for a workspace session', specifying a verb and resource. It distinguishes from siblings like 'session_timeline' by focusing on navigation history, though not explicitly differentiating.

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?

Provides use case hints ('understand what was recently worked on or restore context') but lacks explicit when-not-to-use or alternative tool recommendations among the 16 siblings.

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

desktop_openA

Open a workspace session and return its Desktop Viewport (Hot/Cold/Archive tiers). Use at the START of every task to initialize or resume a session. Returns: session root, hot nodes (current focus + direct relations), cold nodes (other active nodes, titles only), archive info (old nodes, search only). Hot=3-10 nodes always in context, Cold=10-100 by focus/search, Archive=100+ by vector_search only.

Without workspace_id, opens YOUR PROJECT's workspace (from CORTEX_WORKSPACE_ID / --workspace). To see another project's viewport, pass its workspace_id explicitly.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_idNoOptional. Omit to open your project's workspace. Set to open another project.

TDQS

A4.8/5.0
Behavior5/5

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

Despite no annotations, the description fully discloses return structure (session root, hot/cold/archive nodes with sizes) and default behavior based on workspace_id. No destructive behavior is implied, and the tool's effects are transparent.

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

Conciseness4/5

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

The description is reasonably concise and front-loaded with core purpose. It packs useful information but could be slightly more structured to improve readability.

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

Completeness5/5

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

Given no output schema, the description adequately explains return values and behavior. All parameters are covered, and usage context is fully provided. No gaps in essential information.

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% for the single parameter, but the description adds meaningful context: explains default behavior and explicit usage for other workspaces. This goes beyond the schema's basic description.

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 opens a workspace session and returns a Desktop Viewport with Hot/Cold/Archive tiers. It specifies it should be used at the start of every task to initialize or resume a session, distinguishing it from sibling tools like desktop_focus and desktop_history.

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

Usage Guidelines5/5

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

Explicit usage guidance: 'Use at the START of every task to initialize or resume a session.' Also explains when to omit or include workspace_id, giving clear context for use versus alternatives.

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

graph_add_nodeA

Add a node to the knowledge graph. Supports 13 types (entity, fact, decision, thought, chunk, question, hypothesis, action, error, note, pattern, goal, constraint — all vectorized; session, task, subtask, fileref — graph only). Text in data.text or data.title is automatically indexed into Qdrant vector search for vectorizable types. For fileref nodes, pass path in data.path.

workspace_id is OPTIONAL.

ParametersJSON Schema
NameRequiredDescriptionDefault
parent_idNoParent node ID (can be null for roots under session)
typeYesNode type: entity|fact|decision|chunk|thought|question|hypothesis|action|error|note|pattern|goal|constraint|session|task|subtask|fileref
workspace_idNoOptional. Falls back to env/CWD folder name / 'default'
dataYesJSON data: text/title/content for semantic content, path/filetype/description for fileref, plus tags array and any custom metadata

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description discloses key behaviors: automatic vector indexing for text in data.text/data.title, optional workspace_id with fallback, and special handling for fileref nodes. However, it does not mention return type, idempotency, or side effects.

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

Conciseness4/5

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

Two sentences plus a note, covering purpose and key details efficiently. Could be structured with bullet points for the type list for easier scanning, but still concise.

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?

Lacks output schema and does not describe return values (e.g., node ID). For a creation tool, this is a significant gap. Also does not clarify if parent_id is required or optional despite being nullable.

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%, baseline 3. The description adds value by explaining how data.text and data.title trigger vector indexing, and that data.path is used for fileref nodes, going beyond the schema's generic 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?

Clearly states 'Add a node to the knowledge graph' with specific verb and resource. Lists supported types, distinguishing it from sibling tools like graph_add_relation and graph_delete_node.

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?

Provides some context like automatic indexing for vectorizable types and path for fileref, but lacks explicit when-to-use or when-not-to-use guidance compared to alternatives like graph_update_node or graph_decompose.

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

graph_add_relationB

Create a relation between two nodes. Supports 22 relation types: Hierarchical (contains, decomposes_to, belongs_to), Semantic (derives_from, supports, contradicts, related_to, questions, answers), Index (indexes Entity->Fileref, extracted_from Fact/Chunk->Fileref, references, implements, relates_to_file), Chronological (sequel_to, supersedes, leads_to, resolves, triggers), Dependency (depends_on, blocks, constrained_by).

ParametersJSON Schema
NameRequiredDescriptionDefault
from_idYesSource node ID
to_idYesTarget node ID
typeYesRelation type (22 types available)
weightNoRelation strength 0.0-1.0

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility. It does not disclose side effects (e.g., overwriting existing relations), prerequisites (e.g., node existence), or constraints (e.g., weight bounds). This is a significant gap for a mutation tool.

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

Conciseness4/5

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

The description is a single sentence with a parenthetical list, front-loaded with the core action. While the list of 22 types is lengthy, it is necessary for clarity and the overall structure is efficient.

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?

Despite having no output schema, the description does not explain return values, error handling, or preconditions (e.g., that nodes must exist). This lack of completeness makes it harder for an agent to use correctly without guessing.

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 the baseline is 3. The description adds value by categorizing the 22 enum values into groups (Hierarchical, Semantic, etc.), which is not in the schema. However, no additional meaning is provided for 'weight' beyond what the schema states.

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?

Describes the action with a specific verb+resource ('Create a relation between two nodes') and enumerates 22 relation types in categories, clearly distinguishing it from sibling tools like graph_add_node (which creates nodes).

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?

No explicit when-to-use or alternatives are mentioned. The relation type categories provide implicit context, but the description does not guide the agent on when this tool is preferable to other graph tools (e.g., graph_decompose).

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

graph_decomposeA

Decompose a task node into subtasks. Creates subtask nodes and adds decomposes_to relations. Use for planning and breaking down complex tasks into manageable pieces.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesParent task node ID
subtasksYes

TDQS

A3.6/5.0
Behavior3/5

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

Without annotations, the description carries full burden. It states key actions (creates subtask nodes and adds relations) but does not disclose side effects, idempotency, or failure behavior.

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 sentences with no wasted words, front-loading the key action and then adding usage context.

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 two required parameters and no output schema, the description covers basic purpose but lacks details about return values, reversibility, or constraints (e.g., only tasks can be decomposed).

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

Parameters2/5

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

Schema coverage is 50%, but the description adds no extra meaning beyond the schema. The 'subtasks' parameter structure is not elaborated, leaving its semantics incomplete.

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: decomposing a task node into subtasks, creating subtask nodes and relations. This distinguishes it from sibling tools like graph_add_node or graph_add_relation by focusing on decomposition.

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 says to use it for planning and breaking down complex tasks, providing context but no explicit when-not-to-use or alternative tools among siblings like graph_add_node.

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

graph_delete_nodeA

Delete a node and its vector from Qdrant. With cascade=true, also deletes all child nodes (subtree). Use with caution — prefer graph_supersede (stale) for history preservation.

ParametersJSON Schema
NameRequiredDescriptionDefault
node_idYes
cascadeNoCascade delete all child nodes

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, but description explicitly states destructive action and cascade behavior, with a cautionary note. Could be more explicit about side effects on relations but sufficiently transparent.

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 concise sentences, front-loaded with core purpose, followed by usage guidance. No unnecessary words.

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?

Given simple tool with no output schema and few parameters, description covers purpose, behavior, and alternative. Missing details like return value but not critical for understanding tool's function.

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

Parameters2/5

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

Schema coverage is 50% and description adds no new parameter semantics beyond what schema already provides for cascade; node_id has no description in schema or description.

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 it deletes a node and its vector from Qdrant, distinguishing it from sibling tool graph_supersede which preserves history.

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

Usage Guidelines5/5

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

Explicitly advises using graph_supersede for history preservation, providing clear when-to-use and when-not-to-use guidance.

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

graph_get_nodeA

Get a node with its relations and child nodes. Use to inspect a node's full context: what it contains, what it relates to, what references it.

ParametersJSON Schema
NameRequiredDescriptionDefault
node_idYes
depthNoRecursion depth for children

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden for behavioral transparency. It describes the tool as 'Get' (implying read-only) but fails to disclose potential cost of deep recursion (via depth parameter) or any forbidden side effects. More explicit statements about non-modification and performance considerations would improve transparency.

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 extremely concise at two sentences, front-loaded with the action and then the purpose. Every word earns its place with no redundancy.

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?

Despite no output schema, the description adequately conveys what is returned: node, relations, and child nodes. For a graph retrieval tool, this covers the essential components. However, additional details on the response structure (e.g., fields of the node) would enhance completeness for complex graph data.

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 50% (only depth has a description). The tool description adds little beyond the schema: it mentions 'child nodes' but does not clarify how depth controls recursion or describe node_id format. The description adds marginal value, meeting the baseline for medium coverage.

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 verb 'Get' and the resource 'a node with its relations and child nodes', effectively distinguishing it from sibling tools like graph_search (which searches) and graph_add (which modifies). The purpose is unambiguous.

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

Usage Guidelines4/5

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

The description advises to use the tool 'to inspect a node's full context', providing a specific use case. However, it does not explicitly contrast with similar sibling tools like graph_traverse or graph_walk, nor state when not to use it. This leaves some ambiguity for an AI agent choosing among alternatives.

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

graph_supersedeA

Supersede an old node with a new one (Strategy B: Supersedes). Marks old node as stale, creates a new node with supersedes relation. Use when a decision or fact fundamentally changes — preserves history of why previous decision was made. The old node remains searchable but is marked stale and deprioritized in results.

ParametersJSON Schema
NameRequiredDescriptionDefault
old_idYesID of the node to supersede (will become stale)
new_dataYesNew JSON data for the replacement node

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description fully bears the responsibility. It discloses that the old node becomes stale, a new node is created with a supersedes relation, and history is preserved. This is sufficient for understanding side effects, though it does not mention potential impacts on related data or permissions.

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 three sentences, front-loaded with the core action. Each sentence adds distinct value: action, usage context, and behavioral outcome. No wasted words.

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?

Given the lack of output schema, the description does not specify return value. However, the tool's mutation behavior is well explained, and the description covers key aspects of usage and effect. Slightly incomplete but adequate for most agents.

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 already documents both parameters. The description adds no new parameter-level details beyond the schema, so baseline score of 3 is appropriate.

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 action: 'Supersede an old node with a new one'. It specifies the mechanism (marks old as stale, creates new with supersedes relation) and distinguishes it from siblings like graph_update_node or graph_delete_node by emphasizing history preservation.

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

Usage Guidelines4/5

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

The description gives explicit guidance: 'Use when a decision or fact fundamentally changes'. It also explains the outcome (old node remains searchable but deprioritized). However, it does not explicitly state when to avoid using this tool.

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

graph_traverseA

Traverse the graph starting from a node, following relations. Optionally filter by relation type. Uses recursive CTE up to specified depth. Use to discover how nodes are connected in the graph.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_idYes
relationNoOptional: filter by relation type (e.g., 'contains', 'depends_on')
depthNo

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description must carry the full burden. It discloses that it uses a recursive CTE and respects a depth limit, implying a read-only traversal. However, it does not explicitly state that it has no side effects, nor mention any authorization requirements or performance implications. Some behavioral context is given, but not comprehensive.

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 extremely concise: two sentences. The first sentence states the core action and optional filtering. The second adds technical details and a use case. Every word earns its place, with no redundancy or filler.

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 existence of siblings like graph_walk and temporal_walk, the description does not differentiate this traversal from alternatives. It does not describe the output format (no output schema), though the context of 'discovering connections' implies a list of nodes/paths. The description covers the basic functionality but lacks completeness in distinguishing from similar tools and describing return structure.

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 only 33% (relation has a description). The description adds meaning by explaining start_id as the starting node, relation as optional filter, and depth's default of 3. It also mentions 'recursive CTE up to specified depth' which clarifies the depth parameter. However, it does not provide detailed semantics beyond what the schema already hints, and start_id lacks explicit description in the schema. Overall, marginal added 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 traverses a graph from a starting node following relations, with optional filtering by relation type and depth control. It specifies the algorithm (recursive CTE) and the use case (discovering connections). This provides a specific verb+resource scope that distinguishes it from many siblings.

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 mentions to use it 'to discover how nodes are connected in the graph,' implying a discovery use case. However, it lacks explicit guidance on when not to use it or alternatives like graph_walk, graph_search, or graph_decompose. No comparison with siblings is provided.

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

graph_update_nodeA

Update a node's data in-place (Strategy A: Update). If data.text changes, the Qdrant vector is automatically re-indexed. Use for small corrections and improvements. For major decision changes, use graph_supersede instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
node_idYes
dataYesNew JSON data (merged with existing)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses a key behavioral trait: automatic re-indexing of Qdrant vector when data.text changes. This adds value beyond the schema, though it does not describe other potential side effects or permissions.

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

Conciseness5/5

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

Three concise sentences, each serving a clear purpose: purpose, behavioral note, and usage guideline. No filler or redundant information.

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?

Given the moderate complexity and 15 sibling tools, the description covers purpose, behavior, usage, and alternatives. It does not describe return values or error conditions, but this is acceptable since no output schema exists and the return is likely the updated node.

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 50% (one of two parameters described). The tool description adds no parameter-specific information beyond what the schema provides. The missing 'node_id' description is not compensated, but the 'data' parameter is well-described in 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 verb 'Update' and the resource 'node', specifying 'in-place' and labeling it as 'Strategy A: Update'. It distinguishes itself from the sibling 'graph_supersede' by mentioning an alternative for major changes.

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

Usage Guidelines5/5

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

Explicitly provides usage context: 'Use for small corrections and improvements' and directly names the alternative tool 'graph_supersede' for different use cases, giving clear when-to-use and when-not-to-use guidance.

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

graph_walkA

Walk along a reasoning chain following sequel_to, derives_from, and leads_to relations. Use to reconstruct the chain of thought: how one thought led to another, what decisions were derived from what facts. Returns nodes in chronological order.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_idYesStarting node ID (typically a thought or fact)
stepsNo

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Reveals it walks specific relations and returns nodes in chronological order, but does not mention side effects, idempotency, or what happens when chain length exceeds steps limit. Adequate but not fully transparent.

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, front-loaded with key action. Every piece of information is essential and no redundancy. Highly concise.

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?

Covers purpose, specific relations, and output ordering. Lacks details on error behavior (e.g., no chain found) and exact return format of nodes. With no output schema, slight gap, but overall sufficient for its simplicity.

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 50%. Description adds meaning about relations and chronological order not in schema, but does not clarify that 'steps' parameter controls number of hops. Baseline 3 with moderate added 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?

Clearly states the verb 'walk' and specific resource 'reasoning chain following sequel_to, derives_from, and leads_to relations'. Distinguishes from siblings like graph_traverse and temporal_walk by specifying exact relation types and output order.

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

Usage Guidelines4/5

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

Explicitly says 'Use to reconstruct the chain of thought', providing clear context. However, lacks explicit when-not-to-use or direct comparisons to sibling tools like graph_traverse or temporal_walk.

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

session_timelineA

Show a flat timeline of the session: nodes created + navigation events. All merged and sorted by created_at ASC. Use to answer 'what happened in this session over time?'.

workspace_id is OPTIONAL.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_idNoOptional. Falls back to env/CWD folder name / 'default'
from_timeNoISO 8601 start time (optional)
to_timeNoISO 8601 end time (optional)
limitNo

TDQS

A3.5/5.0
Behavior3/5

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

No annotations provided, so description carries burden. Discloses merging, sorting, and event types, but omits details like output format, handling of empty results, or potential destructive effects (likely none).

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?

Extremely concise, two sentences plus a note, with no wasted words. Front-loaded with the primary action.

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?

With no output schema, description could have hinted at output structure. It describes merging and sorting but is vague on actual data fields returned. Adequate but not complete.

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 already covers all 4 parameters with descriptions (workspace_id, from_time, to_time, limit). Description only restates workspace_id optionality, adding minimal extra meaning beyond 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 specifies the tool shows a flat timeline of session events (nodes created + navigation events) merged and sorted. It is distinct from siblings like graph_traverse or temporal_walk, but doesn't explicitly differentiate.

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?

Provides a use case ('what happened in this session over time?') but lacks guidance on when not to use or alternatives among siblings.

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

temporal_walkA

Walk the graph along the time axis. Returns nodes ordered by created_at ASC within optional time range. Use to reconstruct the chronological sequence of decisions and events.

workspace_id is OPTIONAL.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_idNoOptional. Falls back to env/CWD folder name / 'default'
from_timeNoISO 8601 start time (optional)
to_timeNoISO 8601 end time (optional)
relation_typeNoFilter by node type / relation type (optional)
limitNo

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses ordering (ASC) and optionality of workspace_id, but lacks details on auth needs, rate limits, or behavior with empty results.

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 concise, front-loaded sentences with zero waste. Key information is presented first.

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?

No output schema exists, and the description does not specify output structure (e.g., array of nodes). Also, the default limit (50) is in schema but not mentioned in description. Somewhat incomplete for a 5-parameter tool.

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 80%, and the description adds value beyond schema by explaining workspace_id fallback behavior (env/CWD). This helps the agent understand parameter nuances.

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 walks the graph along the time axis, returns nodes ordered by created_at ASC, and is used for chronological reconstruction. This distinguishes it from sibling tools like graph_walk.

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

Usage Guidelines4/5

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

The description provides clear context on when to use (chronological sequence reconstruction) and notes workspace_id is optional. However, it does not mention when not to use or alternatives.

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

vector_storeA

Store text with automatic vectorization into Qdrant. Use for quick ad-hoc storage of facts without creating a full graph node. For structured knowledge, prefer graph_add_node which creates both a graph node and a vector.

workspace_id in metadata is OPTIONAL.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
metadataYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations exist, so description carries the burden. It mentions automatic vectorization and optional workspace_id, but lacks details on side effects, persistence guarantees, or failure modes.

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 concise sentences plus a succinct note about workspace_id, with no wasted words and key information front-loaded.

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?

Covers purpose, usage, and a key parameter detail; lacks return behavior but acceptable given no output schema and simple store operation.

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 0%, and description adds minimal parameter context beyond workspace_id being optional; text, node_type, and tags are not explained.

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 stores text with automatic vectorization into Qdrant and distinguishes it from graph_add_node by specifying it's for ad-hoc storage rather than structured knowledge.

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

Usage Guidelines5/5

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

Explicitly provides when to use (quick ad-hoc storage) and when not to use (prefer graph_add_node for structured knowledge), including an alternative tool.

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. 17 tool updates
    • First observeddesktop_focus
    • First observeddesktop_history
    • First observeddesktop_open
    • First observedgraph_add_node
    • First observedgraph_add_relation
    • First observedgraph_decompose
    • First observedgraph_delete_node
    • First observedgraph_get_node
    • First observedgraph_search
    • First observedgraph_supersede
    • First observedgraph_traverse
    • First observedgraph_update_node
    • First observedgraph_walk
    • First observedsession_timeline
    • First observedtemporal_walk
    • First observedvector_search
    • First observedvector_store

TDQS

A3.9/5.0
Disambiguation5/5

Each tool has a clear, distinct purpose. Desktop tools manage sessions and viewports, graph tools handle node and relation CRUD plus traversal, and vector tools handle semantic search and storage. Even similar-sounding tools like graph_search and vector_search are well-differentiated by their mechanics.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern, predominantly verb_noun (e.g., graph_add_node, vector_search). The naming is predictable and makes the tool's action and target clear.

Tool Count4/5

17 tools is slightly above the ideal 3-15 range, but the set is well-scoped for a memory server covering graph operations, search, session management, and temporal navigation. Each tool serves a distinct need without being excessive.

Completeness4/5

The tool surface covers CRUD for nodes, relations, search, session initialization, and temporal queries. Minor gaps exist (e.g., no direct relation deletion tool), but core workflows are fully supported with workarounds available.

Maintenance

ActivityStale
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
    C
    maintenance
    Provides AI assistants with persistent graph database memory using Neo4j, enabling task management, relationship understanding, semantic search with embeddings, file indexing, and multi-agent coordination through the Model Context Protocol.
    15
    282
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A local, persistent, semantically-aware knowledge graph for AI coding agents like Claude Code, providing efficient session memory with minimal token cost and zero runtime network calls.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides persistent memory for AI coding agents through the Model Context Protocol, enabling them to store and retrieve project knowledge across sessions.
    33
    MIT

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/mcasdfgf/mcp-roo-memory'

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