Skip to main content
Glama

Your AI forgets everything between sessions. Wadachi fixes that.
Wadachi (轍): the tracks wheels leave in a road — formerly known as Engram.

The MCP-native memory server for the LLM Wiki pattern.
Persistent memory + semantic search for Claude Code, Claude Desktop, Cursor, and any MCP client.

PyPI CI License: MIT Python 3.11+ Live demo

Live demo →  ·  docs + an interactive constellation over a fictional sample brain


The Problem

Every time you open Claude Code on a project, it starts from zero. It re-reads files, re-analyzes architecture, re-discovers patterns — burning tokens and time on things it already figured out yesterday.

You end up repeating yourself:

"Remember, we're using the observer pattern here..."
"The deploy script needs the --feynotes flag..."
"We already tried that approach, it doesn't work because..."

Related MCP server: auxly-memory-cli

The Solution

Wadachi gives your AI a persistent brain — a local knowledge base where it stores insights, decisions, and patterns, then retrieves them instantly at the start of every session.

One tool call at session start. All relevant context loaded. Zero wasted tokens re-discovering.

How it works

  1. Connectwadachi init wires the server into Claude Code (and Antigravity) automatically; any MCP client works.

  2. Register your projects — filesystem paths mapped to project names, so memories land in the right scope.

  3. Start with context — every session opens with get_context: relevant memories, recent decisions, what needs review.

  4. Store as you go — bugs, configs, patterns, decisions get saved the moment they're figured out. The brain compounds.


Where Wadachi sits: the harness

A stack has been forming under AI agents — prompt → context → harness → loop. Prompt engineering was wording one request well; context engineering was curating what the model sees before each call. Both hit the same wall: the window fills, quality falls off a cliff (context rot), and the usual remedy — summarising to make room (compaction) — buys that room by throwing away precision.

A harness is the scaffolding outside the model that re-initialises the agent step by step: fresh context each step, durable state read back from disk, work resumed exactly where it stopped. Nothing gets summarised, because nothing had to fit. Agent = Model + Harness.

Wadachi is not a harness. It is the memory of one — and memory here has two layers, with two different lifetimes:

  • The hippocampus — what you learned. Survives the end of a session. It is everything described below: memories, decisions, beliefs, the graph, sleep. Built.

  • The desk — what you are doing. Survives the end of a context window: the plan for the task in flight, the steps already done, where the thread was dropped. Built. desk opens one, desk_log records each attempt — especially the failures — and desk_read (or get_context, which surfaces it automatically) picks the work back up in a session that knows nothing.

And the boundary that keeps the two projects honest: Wadachi never executes anything, and never decides when something starts. No runner, no sandbox, no scheduler — those belong to whatever harness drives your agent. reflect, sleep and consolidate look loop-shaped, but they are background maintenance that proposes; they never decide that work should begin.

→ Full explanation: The harness — where Wadachi sits


Features

Persistent Memory — Knowledge stored as markdown files with SQLite metadata. Survives across sessions, searchable, human-readable.

Semantic Search — Finds memories by meaning, not just keywords. Ask for "linearizzazione sistemi" and it finds your notes on equilibrium points, even if the word "linearizzazione" never appears in them. Powered by local embeddings via fastembed — no API calls, no costs, runs on your machine.

Project Profiles — Register your projects with their filesystem paths. Wadachi auto-detects which project you're in and scopes memories accordingly. Your FeyNotes memories stay separate from your LaPlacebo memories.

Auto-Contextget_context is the killer tool: one call at session start that detects the project, gathers relevant memories, loads recent decisions, and returns everything your AI needs to hit the ground running.

Decision Log — Not just what you know, but what you decided and why. When a future session faces the same choice, it sees the rationale and the rejected alternatives — no more re-debating solved problems.

Constellation — Graph-Aware Recall — Plain recall is pure cosine top-k, so a memory that's strongly connected to your query but not textually similar never surfaces. Wadachi builds a weighted graph over your brain from citation edges ("memoria #82", "aggiorna #77" parsed from the prose), semantic k-NN edges, and shared-entity edges, then runs HippoRAG-style spreading activation (Personalized PageRank). recall_associative pulls up neighbours of your best hits even when their raw similarity is low — and returns the plain-cosine baseline alongside, so you can compare.

Entity Knowledge Graph (Graphify) — Extracts the entities inside your notes (convert.py, Di Gennaro, Opus 4.8) and the relations between them, linking memories that mention the same thing even when neither cites the other. Extraction runs through the local claude CLI — it uses your Claude plan, not metered API, so it costs $0 — and degrades gracefully when not installed.

Belief Revision — A plain store treats every memory as true forever; a brain shouldn't. review_beliefs does a read-only pass that flags memories likely gone stale — superseded by a newer note, past a temporal deadline ("resets 1 Jul"), or provisional/fallback wording — and annotates them in recall instead of silently trusting them. It never deletes: it suggests, you confirm with flag_stale / set_belief. Every update is non-destructive, so prior versions stay recoverable via memory_history.

Reflection & Insights — The brain thinks between sessions. reflect combines memories to surface cross-project analogies and non-obvious connections that no single memory holds — reusing the entity graph it already built, so no extra LLM cost. Candidates are proposed, never auto-trusted: you accept_insight (promoted to a real linked memory) or reject_insight.

Procedural Memory — Recency-ranked recall can hide the right rule and let you repeat a mistake twice. review_procedures clusters recurring incident memories by root theme and proposes a single always-on rule for review — human-in-the-loop, it never rewrites your operating instructions itself.


Quick Start

Three commands and your AI has a memory:

# 1 · install (pipx or uv — semantic search included, runs locally)
pipx install "wadachi[semantic]"        # or: uv tool install "wadachi[semantic]"

# 2 · guided setup: brain dir, database, Claude Code registration
wadachi init

# 3 · restart Claude Code — every session now starts with get_context

wadachi init creates the brain directory (default ~/.wadachi), brings the database to the latest schema, and registers the MCP server in Claude Code and Antigravity automatically. It is idempotent — safe to re-run anytime.

git clone https://github.com/EliaCinti/wadachi.git
cd wadachi
pip install -e ".[semantic]"
wadachi init

Claude Code~/.claude.json or project-level .mcp.json:

{
  "mcpServers": {
    "wadachi": {
      "command": "wadachi",
      "args": [],
      "env": {
        "BRAIN_DIR": "/Users/you/.wadachi"
      }
    }
  }
}

Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "wadachi": {
      "command": "wadachi",
      "args": []
    }
  }
}

Cursor.cursor/mcp_servers.json:

{
  "mcpServers": {
    "wadachi": {
      "command": "wadachi",
      "args": []
    }
  }
}

Register a project

In your first Claude session with Wadachi connected:

Register my project "feynotes" with description "Lecture audio to interactive web pages"
and path "/Volumes/ExtremeSSD/University/Lecture_From_Audio/"

Use it

From now on, every session can start with get_context and your AI already knows what's going on. As you work, important discoveries get stored automatically. Over time, the brain compounds — each session is smarter than the last.


Tools

Wadachi exposes 37 MCP tools26 in the menu by default, the ones a session reaches for while working, grouped by area below. The other 11 are brain maintenance, marked (maintenance): they stay out of the menu because measuring 741 real sessions showed they get chosen roughly once in total during work — but they are never gone, only a step further away, from the CLI (wadachi sleep, wadachi doctor) or by setting WADACHI_TOOLSETS=work,maintenance for a session that wants them back. manual prints the full description of every tool, in the menu or out.

Memory

Tool

What it does

store_memory

Save an insight, pattern, fix, or reference for future sessions.

get_memory

Load the full content of a specific memory by ID.

list_memories

Browse all memories. Filter by project or category.

update_memory

Modify a memory's content or tags — non-destructive, prior versions kept.

delete_memory

Permanently remove a memory.

memory_history

Show prior versions of a memory (preserved on every update).

Search & Context

Tool

What it does

get_context

Start here. Auto-detects project, returns relevant memories + decisions + stats + what needs review.

recall

Semantic (or keyword) search across stored knowledge, annotated with belief status.

expand_memory

Drill down from the compact context: full content of one or more memories by id.

brain_status

Health check, search mode, stats, and registered projects.

brain_watermark

The brain's current position (highest id per table) — take it before starting work.

changed_since

What appeared in the brain after a watermark taken earlier — "what did I miss?"

manual

Full description of every tool, in the menu and out — generated from the code, so it can't drift.

Decisions

Tool

What it does

store_decision

Log a decision with rationale and rejected alternatives.

list_decisions

Browse the decision history.

Projects

Tool

What it does

register_project

Map filesystem paths to a project name for auto-detection.

list_projects

Show all registered projects.

Desk

Tool

What it does

desk

Open, close, or list a desk — durable working state for a task in flight (the plan, the steps done, where it stopped).

desk_read

Pick a desk's thread back up: the plan, the next step, and what was already tried and failed.

desk_log

Tick the step that landed, note what did not work, and get back the next step.

Constellation — Graph

Tool

What it does

recall_associative

Spreading-activation recall over the memory graph (HippoRAG-style PPR); returns the cosine baseline too.

related_memories

Show the memories most strongly linked to a given one (typed neighbours).

memory_graph

Graph overview: hubs, orphans, components, a Mermaid backbone + the entity graph.

rebuild_entity_graph

(Re)build the Graphify entity knowledge graph via the local claude CLI ($0). (maintenance)

Belief Revision

Tool

What it does

review_beliefs

Read-only scan for memories likely gone stale (superseded / temporal / provisional). (maintenance)

set_belief

Update a memory's belief envelope: confidence, status, validity, supersession. (maintenance)

flag_stale

Mark a memory stale — kept and recoverable, but annotated in recall.

Reflection & Insights (all maintenance)

Tool

What it does

reflect

Surface cross-project analogies and non-obvious connections as proposed insights.

list_insights

List reflection insights by status (proposed / accepted / rejected).

accept_insight

Accept an insight and promote it to a real memory linked to its sources.

reject_insight

Reject an insight (kept on record, marked rejected).

Procedural Memory (maintenance)

Tool

What it does

review_procedures

Cluster recurring incidents and propose always-on rules for review (read-only).

Consolidation

Tool

What it does

consolidate

Propose groups of redundant memories to merge (read-only, you review). (maintenance)

merge_memories

Store your synthesis as a new memory; sources marked superseded, never deleted. (maintenance)

sleep

The brain's sleep: graph communities → merge candidates, fading leaves → decay candidates. Read-only. (maintenance)

Provenance & Time

Tool

What it does

why

Ask "why do we use X and not Y?" — decision, rationale, rejected alternatives, and the memories that cite it.

as_of

Time-travel: what the brain believed at a date, with content reconstructed from version history.

Memory Categories

Category

Use for

architecture

System design, structure, high-level patterns

bugfix

Bugs found and their solutions

config

Setup details, environment variables, infrastructure

pattern

Code conventions, recurring patterns, style rules

context

General project background and context

reference

API details, library usage, external documentation

note

Everything else


Storage

All data lives locally in ~/.wadachi (configurable via BRAIN_DIR env var; a legacy ~/.engram dir keeps working):

~/.wadachi/
├── brain.db                    # SQLite: metadata + cached embeddings
├── global/                     # Cross-project knowledge
│   ├── python-venv-tips.md
│   └── git-workflow.md
└── projects/
    ├── feynotes/
    │   ├── pipeline-architecture.md
    │   ├── katex-gotchas.md
    │   └── deploy-workflow.md
    └── laplacebo/
        └── solver-design.md

Memories are plain markdown files with YAML frontmatter — readable and editable by hand.

LLM Wiki native · Obsidian vault · OKF bundle

The brain follows Karpathy's LLM Wiki pattern: an agent-maintained markdown wiki with [[wikilinks]], a generated index.md catalog, an append-only log.md, and a SCHEMA.md documenting the conventions (edit it — the schema file is yours). Every link becomes a graph edge that associative recall and consolidation travel on.

  • Obsidian: the brain dir is a vault — open it and get the graph view for free. Zero lock-in.

  • OKF: every file carries the Open Knowledge Format type field — the brain is a conformant OKF bundle, portable to any OKF consumer.

  • wadachi doctor --fix upgrades pre-OKF brains in place (content never touched).


Upgrading

Your memories always survive an upgrade. The database schema is versioned: on first start after an update, wadachi applies any pending migrations — and backs up your brain.db automatically (to <brain>/backups/) before touching anything. Existing brains from older versions (including the Engram era, ~/.engram) are adopted in place: nothing to export, nothing to lose.

wadachi export              # optional but wise: read-only portable snapshot first
pipx upgrade wadachi        # or: uv tool upgrade wadachi
# restart Claude Code — migrations (if any) run on first start, after a backup

wadachi export never touches the brain (no migrations run) — safe even on a pre-wadachi Engram brain. wadachi restore <archive> --to <dir> brings it back somewhere new; --replace swaps the active brain (safety-exporting the current state first).


Search Modes

Wadachi ships with two search backends:

Mode

Install

How it works

Speed

Semantic

pip install fastembed

Local embeddings + cosine similarity. Finds by meaning.

~50ms

Keyword

Built-in

Token overlap scoring on title + tags + content.

~5ms

Semantic search runs entirely on your machine — no API calls, no cloud, no costs. The embedding model (BAAI/bge-small-en-v1.5, ~33M params) downloads once and runs locally.


Recently shipped

  • Constellation — graph-aware associative recall (citation + semantic + entity edges, HippoRAG-style spreading activation)

  • Graphify entity graph — entity/relation extraction over the brain via the local claude CLI ($0)

  • Belief revision — stale / superseded / temporal flagging, annotated in recall, non-destructive

  • Reflection & insights — cross-memory analogies proposed for accept/reject

  • Procedural memory — recurring-incident clustering into candidate rules

  • Non-destructive memory history — every update preserves prior versions

  • Web graph visualizer — interactive constellation view, live at wadachi.eliacinti.dev

Roadmap

  • Auto-summarize old memories to reduce token usage

  • Memory importance decay (surface recent and frequently-accessed memories first)

  • Claude Code hooks for automatic context injection + brain backup on session stop

  • Export/sync with Notion

  • Conversation history indexing

  • Multi-language embedding model for better Italian support


Contributing

PRs welcome — read CONTRIBUTING.md first (philosophy: local-first, memories are sacred, propose don't auto-edit). Not a coder? The most valuable contribution is telling us how you use wadachi — there's no telemetry, feedback is all we have.

Acknowledgments

Inspired by mstrehse/mcp-brain — a Go-based MCP memory server that sparked the idea. Wadachi is a ground-up rewrite in Python with semantic search, project awareness, and auto-context injection.

License

MIT


Available Tools

31 tools
accept_insightA

Accept an insight: mark it accepted and promote it to a real memory linked to its source memories.

Args: insight_id: The insight to accept. project: Project for the promoted memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoglobal
insight_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It mentions the core side effects (marking accepted, promoting to memory, linking to source memories) but does not explain edge cases, reversibility, permissions, or what happens to the insight after promotion. This is adequate but not thorough.

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: a one-sentence summary followed by a minimal Args list. There is no filler or repetition. It earns its place with useful 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?

The tool is simple with only two parameters and an output schema exists, so return format is not needed. However, the description lacks mention of any prerequisites or state requirements (e.g., the insight must already exist and be pending). This is a minor gap, but the core action and parameters are fully covered.

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

Parameters4/5

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

The schema provides only parameter titles with 0% description coverage. The description compensates by including an Args section explaining both parameters: 'insight_id: The insight to accept' and 'project: Project for the promoted memory.' This adds semantic meaning, though the description of 'project' leaves its default behavior ('global') to the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose with a specific verb ('accept') and resource ('insight'), and explains the outcome: 'mark it accepted and promote it to a real memory linked to its source memories.' This distinguishes it from the sibling tool 'reject_insight' and any other operations.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like reject_insight, list_insights, or reflect. The description implies the action but does not specify conditions for acceptance, prerequisites, or situations where this tool is appropriate.

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

as_ofA

Time-travel: what did the brain believe at a given date?

Memories that existed then, with their content AS IT WAS (reconstructed from the non-destructive version history), and which of them were already superseded or expired at that date.

Args: date: ISO date ("2026-03-01") — the point in time to reconstruct. query: Optional filter — only memories relevant to this (searched today, content returned as of the date). project: Scope to a project. limit: Max memories.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
limitNo
queryNo
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses key non-obvious behaviors: the reconstruction from version history, the distinction between the current query search and historical content, and the indication of superseded/expired memories. This goes beyond a simple 'get memories as of date' statement.

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 well-structured with a purpose statement, a behavioral explanation, and a labeled Args list. It is slightly verbose, but every clause adds useful nuance (e.g., 'searched today, content returned as of the date'), so the length is justified.

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

Completeness4/5

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

The tool is a complex temporal reconstruction, and the description covers the main aspects: what it does, how it reconstructs, and what parameters are needed. It relies on an output schema (which exists) to detail return structure. It does not mention error cases or edge like invalid dates, but for a read-only query tool it is reasonably complete.

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

Parameters5/5

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

The schema has 0% description coverage, but the description explains each parameter in operational terms: date is the reconstruction point, query is an optional filter that is searched today but content returned as of date, project scopes the result, and limit caps the number. This adds meaning beyond the bare 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 opens with an evocative metaphor 'Time-travel: what did the brain believe at a given date?' and then clearly states the tool returns memories that existed in the past with their content as it was reconstructed from non-destructive version history. This is specific and distinguishes it from sibling tools that operate on current state.

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 clear context by explaining that it reconstructs a past state, implying use when historical perspective is needed. It does not explicitly name alternative tools or when NOT to use it, but the temporal focus and optional filters make the intended use obvious.

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

brain_statusB

Check Brain health and statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It implies a read-only operation ('Check') but does not state whether it is safe, what it returns, or any side effects, which is insufficient for 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 a single, short sentence with no superfluous content. It is appropriately concise for a simple tool, though it could be criticized for under-specification, that is a content issue, not a structure issue.

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

Completeness3/5

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

Given the tool has no parameters, it is relatively simple. However, the description does not explain what 'health and statistics' means or what the output schema contains, leaving significant ambiguity about the tool's behavior and return value.

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

Parameters4/5

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

The tool has zero parameters, and schema coverage is 100% (vacuously). The description adds some context by indicating the tool is a health/statistics check, but since there are no parameters, the baseline is appropriately set to 4.

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

Purpose3/5

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

The description uses the verb 'Check' and identifies the resource as 'Brain', which is a specific action. However, 'health and statistics' is vague and does not specify what aspects of health or which statistics are included, making it less precise than examples like 'List ALL calls in date range'.

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives. Sibling tools handle memory operations, but the description does not mention these or any exclusions, leaving the usage context implied at best.

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

consolidateA

Propose groups of redundant/overlapping memories to merge (READ-ONLY).

Finds clusters of highly-similar memories. Nothing is modified: review the groups, write a synthesis yourself, then call merge_memories(...) — the sources get marked superseded (never deleted, always recoverable).

Args: project: Scope to a project (None = whole brain). threshold: Cosine similarity above which two memories are considered redundant. max_groups: Max candidate groups to return.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo
thresholdNo
max_groupsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

Since no annotations are provided, the description carries the full transparency burden. It explicitly states 'READ-ONLY' and 'Nothing is modified', which is critical for a tool that could be mistaken for a mutating operation. It also discloses the eventual fate of sources after merge_memories: 'marked superseded (never deleted, always recoverable)', giving recovery guarantees without needing annotations.

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 compact and well-structured: a one-line purpose with the read-only caveat, a short behavioral explanation, a clear workflow sentence, and an Args list. Every sentence adds value—no filler or repetition of schema defaults. The front-loading of 'READ-ONLY' is strategically effective.

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?

For a tool with 3 optional parameters and no annotations, the description covers purpose, usage workflow, behavioral guarantees, and parameter semantics. An output schema exists, so the absence of return-value details is acceptable. It provides everything an agent needs to decide when to call it and what to expect.

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

Parameters5/5

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

Schema description coverage is 0%, so the description is the sole source of parameter meaning. It explains all three parameters clearly: 'project' scopes to a project or None for whole brain, 'threshold' defines the cosine similarity cutoff for redundancy, and 'max_groups' caps the number of returned groups. This goes far beyond the bare schema titles.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Propose groups of redundant/overlapping memories to merge.' It clearly distinguishes from siblings like merge_memories by emphasizing the read-only proposal nature. The parenthetical '(READ-ONLY)' and the explanation that nothing is modified further solidify the purpose.

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?

The description provides explicit when-to-use and when-to-then-use-alternative guidance: 'review the groups, write a synthesis yourself, then call merge_memories(...)'. This tells the agent exactly how to proceed after calling this tool, effectively naming merge_memories as the complementary next step. It also clarifies that this tool is for proposing, not executing merges.

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

delete_memoryA

Permanently delete a memory from the Brain.

Args: memory_id: The numeric ID of the memory to delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
memory_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/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 of behavioral disclosure. It explicitly states that deletion is permanent, which is a critical trait for a destructive operation. However, it does not mention potential side effects, error behavior, or permission requirements, though the permanence warning adds substantial 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: one action sentence and one parameter line. It front-loads the key information and contains no fluff, making it easy to parse quickly.

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

Completeness4/5

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

The tool has low complexity (one integer parameter, output schema present). The description covers the action, permanence, and parameter meaning. It does not mention edge cases like missing IDs or cascading effects, but given the simplicity and presence of an output schema, it is reasonably complete.

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

Parameters5/5

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

The schema has zero description coverage for memory_id, but the description explains it as 'the numeric ID of the memory to delete', providing essential meaning beyond the bare integer type. This fully compensates for the schema gap.

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 uses the specific verb 'delete' and identifies the resource as 'a memory from the Brain', clearly differentiating from siblings like get_memory, update_memory, and list_memories. The action and target are unambiguous.

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 does not provide explicit guidance on when to use this tool versus alternatives such as flag_stale or update_memory. Usage is implied by the tool's name and the action it performs, but no exclusions or alternative references are given.

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

expand_memoryA

Drill-down dal contesto compatto: il contenuto COMPLETO di una o più memorie.

Args: ids: Gli id (max 10) presi dai puntatori #id di get_context/recall.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/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 key behaviors: returns COMPLETE content, accepts up to 10 ids, and ids derive from get_context/recall. However, it does not disclose potential side effects, error handling, or whether any permissions are required. The read-only nature is implied but not stated explicitly.

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, front-loaded with the purpose, and the Args section is compact and directly informative. No redundant words or restatement of schema details.

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 tool's simplicity (one parameter, no enums, has output schema), the description is largely complete: it specifies the ID source, maximum count, and purpose. It omits error behavior and does not explicitly state that get_context/recall must be called first, but the reference to their #id pointers implies that prerequisite.

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

Parameters4/5

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

The schema provides only the type and array structure for 'ids', with no description. The text compensates by explaining the ids are pointers from get_context/recall and limited to max 10, adding meaningful context beyond the raw schema. This is sufficient for correct invocation.

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 function: 'Drill-down dal contesto compatto: il contenuto COMPLETO di una o più memorie.' It uses a specific verb ('drill-down'), names the resource ('memories'), and distinguishes from siblings by emphasizing it returns complete content from compact context, unlike recall/get_context which provide compact summaries.

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 usage context by specifying the IDs come from '#id pointers of get_context/recall', indicating when to use it. However, it does not explicitly state when NOT to use this tool versus alternatives like get_memory or recall_associative, lacking explicit exclusions.

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

flag_staleA

Mark a memory as stale: kept and recoverable, but annotated in recall.

Args: memory_id: The memory to flag. reason: Why it's stale. superseded_by: id of the memory that replaced it, if any.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonYes
memory_idYes
superseded_byNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/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 transparency burden. It usefully discloses that the memory is not deleted, remains recoverable, and becomes annotated in recall. However, it does not detail reversibility, exact recall visibility, or failure modes, leaving minor gaps.

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 leads with a one-sentence summary that captures the core behavior, then provides terse argument descriptions in a structured Args block. No wasted words; every sentence earns its place.

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 simple operation, the description covers operation semantics and all parameters. It does not explain exact recall behavior or how to revert the flag, but with an output schema present and focused args, the description is highly complete for its complexity.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must fully compensate. It explains every parameter: memory_id as the target, reason as justification for staleness, and superseded_by as the replacing memory if any. This is complete and adds clear meaning beyond the bare 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 opens with a specific verb+resource: "Mark a memory as stale", and adds crucial scope with "kept and recoverable, but annotated in recall" which clearly distinguishes it from delete_memory and update_memory. The purpose is unambiguous and operationally specific.

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 effect "kept and recoverable" implies use for memories that should be preserved but deprioritized, but there is no explicit when-to-use versus alternatives like delete_memory or update_memory. No exclusions or alternatives are named, leaving usage context to be inferred.

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

get_contextA

Auto-inject relevant context at the start of a session. Call this FIRST.

Detects the current project from cwd, then returns a COMPACT overview (~300-600 tokens): memory/decision pointers with ids, what needs review, stats. Drill into anything with expand_memory(ids=[...]).

Args: cwd: Current working directory (for project auto-detection). task_description: Brief description of what you're about to do (improves relevance). limit: Max memories to include. max_tokens: Token budget for the dense format — truncated by relevance, not by age. format: "dense" (default, compact markdown) or "json" (full previews, verbose).

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNo
limitNo
formatNodense
max_tokensNo
task_descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It reveals key behaviors: detects project from cwd, returns ~300-600 token overview, truncates by relevance not age, and supports two formats. It implies a read-only operation without stating so explicitly, and doesn't mention potential side effects, but the description is largely 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?

The description is well-structured: a clear opening instruction, a compact summary of functionality, and a tidy Args list. Every sentence contributes value, and it remains readable despite covering multiple aspects.

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?

For a tool with 5 parameters and an output schema, the description covers the purpose, workflow, parameters, and output characteristics. It is sufficient for an agent to know when and how to call it, and what to expect in return.

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

Parameters5/5

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

Schema coverage is 0%, but the description explains every parameter with meaningful details (e.g., 'max_tokens: Token budget for the dense format — truncated by relevance, not by age.'). It adds clarity beyond the schema, especially for format and max_tokens.

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: to auto-inject relevant context at the start of a session, with a specific output (compact overview of pointers and stats). It distinguishes itself from siblings by emphasizing it is the first tool to call for session context, unlike search/recall tools.

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 instructs to 'Call this FIRST' and provides a follow-up action ('Drill into anything with expand_memory(ids=[...])'). It also explains when to set task_description to improve relevance, giving clear context for use.

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

get_memoryA

Retrieve the full content of a specific memory by its ID.

Args: memory_id: The numeric ID of the memory to retrieve.

ParametersJSON Schema
NameRequiredDescriptionDefault
memory_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

There are no annotations, so the description carries the full burden. It transparently states this is a retrieval operation, implying no side effects, but it does not explicitly note read-only behavior or what happens if the memory does not exist. The 'retrieve' wording is adequate for a simple getter but lacks depth.

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, front-loading the main purpose in the first sentence. The Args block is necessary given the schema's lack of parameter descriptions, and every word earns its place with no extraneous content.

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 single-parameter retrieval tool, the description is nearly complete. It defines the action, the parameter, and with an output schema present, does not need to explain return values. It could be enhanced by mentioning error behavior or relationship to recall, but these are outside the core scope.

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

Parameters5/5

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

The schema has 0% description coverage, but the description compensates with an Args section explaining that memory_id is a numeric ID of the memory to retrieve. This adds clear meaning beyond the raw integer type in the schema and fully clarifies the only parameter.

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 function: retrieving the full content of a specific memory by ID. This verb+resource structure is specific and distinguishes it from siblings like list_memories (which lists) and recall (which likely performs semantic retrieval).

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

Usage Guidelines3/5

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

The description implies usage when a memory ID is known, but it does not explicitly state when to use this tool versus alternatives like recall or related_memories. There is no when-not guidance or mention of alternatives, so it relies on the reader to infer context.

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

list_decisionsB

List recent decisions, optionally filtered by project.

Args: project: Filter by project name. limit: Maximum number of decisions to return.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It implies a read-only list operation but does not define 'recent', default ordering, or any side effects. This lack of behavioral detail leaves uncertainty for an agent.

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, with a single introductory sentence followed by a clean argument list. Every word earns its place, and the purpose is front-loaded.

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

Completeness3/5

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

For a simple list tool, the description covers purpose and parameters adequately. However, the term 'recent' is undefined, and there is no mention of ordering or filter exactness. The existence of an output schema reduces the need to describe return values, but some context is still missing.

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

Parameters4/5

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

The input schema has no descriptions (0% coverage), so the description compensates by explaining both parameters: project filters by name, limit sets maximum returns. This adds meaningful semantics beyond the bare parameter names.

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 lists recent decisions with an optional project filter, which is a specific verb+resource. It is distinct from sibling tools like list_memories or list_projects by the resource 'decisions', but it does not explicitly differentiate itself or mention alternatives.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, such as store_decision or recall. The description only states what the tool does without any context for selection.

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

list_insightsA

List reflection insights, optionally by status (proposed | accepted | rejected).

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoproposed

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

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

With no annotations, the description must disclose behavior. It mentions an optional status filter but omits that the schema default is 'proposed' (as seen in the input schema). This could mislead an agent into thinking all insights are listed when no filter is provided. The read-only nature is implied by 'List', but the default filtering behavior is a significant undisclosed trait.

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 a single concise sentence, front-loaded with the primary action and resource. It includes the key optional filter without unnecessary words. Every word earns its place.

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

Completeness3/5

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

For a simple one-parameter list tool with an output schema, the description covers the core purpose and filter options. However, it fails to disclose the default 'proposed' status, which is critical for correct invocation. It also does not mention any pagination or ordering behavior, though this may be less critical given the output schema.

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

Parameters4/5

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

The description adds meaning beyond the raw schema by enumerating the valid status values: 'proposed | accepted | rejected'. The schema only shows a string or null type with no enum, so this is valuable semantic information. It does not mention the default value, but the core parameter meaning is well covered.

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 function: 'List reflection insights'. It uses a specific verb ('List') and resource ('reflection insights'), which distinguishes it from sibling tools like list_memories or list_decisions. The optional status filter is also mentioned, adding precision.

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 implies usage context: it is for listing insight results from the reflection process, while sibling tools like accept_insight and reject_insight are for modifying them. It does not explicitly state exclusions or alternatives, but the context is clear enough for an agent.

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

list_memoriesA

List all memories in the Brain, optionally filtered.

Args: project: Filter by project name. category: Filter by category (architecture, bugfix, config, pattern, context, reference, note).

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo
categoryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 must carry the full burden. The verb 'List' clearly indicates a safe read-only operation, and the optional filters are described. However, it omits details such as ordering, pagination, exact vs. partial matching, and whether all memory fields are returned, which leaves some behavioral ambiguity.

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

Conciseness5/5

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

The description is concise, front-loaded with the main purpose, and uses a clear structured format for arguments. Every sentence contributes to understanding, with 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?

For a simple list tool with two optional parameters and an output schema present, the description adequately covers the core purpose and parameter semantics. It does not explain return shape or potential limits, but the output schema presumably covers the return structure, and the tool's simplicity means these omissions are not critical.

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?

Since the schema has 0% description coverage, the description effectively compensates by explaining that 'project' filters by project name and 'category' filters by the listed categories (architecture, bugfix, config, pattern, context, reference, note). This adds meaningful semantics beyond the raw schema, which only defines types and defaults. It could go further by clarifying filter matching rules, but it is already valuable.

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?

Description uses a specific verb 'List' and a clear resource 'memories in the Brain', and by stating 'all memories' it distinguishes itself from related tools like get_memory or related_memories. There is no ambiguity about what this tool does.

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

Usage Guidelines3/5

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

The description implies usage when you need to list memories with optional filters, but it does not explicitly discuss when to choose this tool over siblings like recall, related_memories, or get_memory. No exclusion criteria or alternative names are mentioned, so usage guidance is only implicit.

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

list_projectsA

List all registered projects.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It adds behavioral scope ('all registered projects') but does not explicitly mention read-only semantics, pagination, or auth requirements. The verb 'List' implies a safe, non-mutating operation, but more detail could be provided.

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 a single, efficient sentence with no redundant wording. It immediately conveys the action and target, earning a perfect score for conciseness.

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 the tool's simplicity (zero parameters, output schema provided), the description is complete. It doesn't need to explain return values because the output schema covers that, and it correctly specifies the scope of projects listed.

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

Parameters4/5

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

The tool has zero parameters, so there are no parameter semantics to explain. The baseline for zero-parameter tools is 4, and the description appropriately reflects that no input is required.

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 action ('List') and the resource ('registered projects'), making it distinct from sibling tools like list_memories and list_decisions. The qualifier 'all registered' precisely scopes the operation.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like list_memories or list_decisions. The description gives no contextual cues or exclusions, leaving the agent to infer usage solely from the tool name.

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

memory_graphA

Overview of the brain as a graph: hubs, orphans, components, a Mermaid diagram of the citation backbone, and (if built) the Graphify entity graph with communities, god-nodes and surprising connections.

Args: project: Scope to a project (None = whole brain). focus_id: If set, the Mermaid diagram is centred on this memory. include_entities: Include the Graphify entity-graph summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo
focus_idNo
include_entitiesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose that the Graphify entity graph is included only if built, and that focus_id centers the diagram. However, it does not explicitly state that the tool is read-only, nor does it mention any limitations or resource implications.

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

Conciseness5/5

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

The description is concise: a one-sentence overview followed by a structured args list. Every piece adds value, and it is front-loaded with the tool's purpose.

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

Completeness4/5

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

The description covers the tool's purpose, parameters, and a key conditional behavior. An output schema exists to describe return values, so the lack of return format details is acceptable. It is complete enough, though it could benefit from explicit usage examples or edge-case handling (e.g., when the entity graph isn't built).

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

Parameters5/5

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

The input schema has 0% description coverage, but the description's args section explains each parameter clearly: project scopes to a project, focus_id centers the diagram, and include_entities toggles the entity graph summary. This fully compensates for the schema's lack of documentation.

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 provides an overview of the brain as a graph, listing specific outputs such as hubs, orphans, components, a Mermaid diagram, and the Graphify entity graph. This distinguishes it from sibling tools like recall and brain_status, which serve different purposes.

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

Usage Guidelines3/5

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

The description implies use for graph overview and analysis but does not explicitly state when to prefer this tool over alternatives or provide exclusions. It lacks guidance such as 'use this for structural queries' or 'instead of list_memories'.

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

memory_historyA

Show prior versions of a memory (preserved on every update — non-destructive).

Args: memory_id: The memory whose edit history to retrieve.

ParametersJSON Schema
NameRequiredDescriptionDefault
memory_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 carries the full burden. It explicitly discloses that history is preserved on every update and that the operation is non-destructive. This addresses safety and system behavior. However, it does not mention return format, ordering, or error handling, though an output schema exists.

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 exceptionally concise: one sentence for the action, one for safety context, and a clean args block. 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.

Completeness4/5

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

For a simple one-parameter, read-only tool with an output schema, the description covers the core purpose, the parameter, and safety. It leaves a minor ambiguity about whether the current version is included in the history, but the output schema likely clarifies this. Overall, it is sufficiently complete for the tool's complexity.

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

Parameters4/5

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

The schema has one required parameter (memory_id) with zero description coverage. The description provides a clear definition: 'The memory whose edit history to retrieve.' This adds meaning beyond the bare schema and fully covers the single parameter.

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 uses a specific verb ('Show') and a clear resource ('prior versions of a memory'), distinguishing it from sibling tools like get_memory (current version) and recall (query). It also adds context about history being preserved non-destructively, which reinforces its purpose.

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

Usage Guidelines3/5

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

The description implies usage (retrieve edit history) but does not explicitly state when to prefer this over alternatives like get_memory or as_of. No exclusions or alternative guidance is provided, leaving the agent to infer from the tool name and siblings.

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

merge_memoriesA

Merge redundant memories: store the synthesis as a NEW memory and mark the sources superseded (kept and recoverable — never deleted).

Args: source_ids: The memories being consolidated (≥2). title: Title of the merged memory. content: The synthesis you wrote (the sources' provenance is appended automatically). project: Project for the merged memory. tags: Tags for the merged memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
titleYes
contentYes
projectNoglobal
source_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

Since no annotations are provided, the description carries the full burden of behavioral disclosure. It explicitly states that sources are kept and recoverable, never deleted, and that provenance is appended automatically, which gives the agent important expectations beyond the bare operation.

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

Conciseness5/5

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

The description is concise, front-loaded with the purpose, and followed by an efficient parameter list. Every sentence adds functional information, and there is no fluff or redundancy.

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 that an output schema exists and all parameters are described with meaningful semantics, the description is complete for an agent to select and invoke the tool correctly. It also discloses the key behavioral constraint (sources never deleted) that is not otherwise available.

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

Parameters5/5

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

Although the schema itself has no descriptions (0% coverage), the description compensates fully by explaining each parameter: source_ids are the memories being consolidated (≥2), content is the synthesis with provenance appended automatically, and title/project/tags are for the new merged memory.

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 phrase 'Merge redundant memories: store the synthesis as a NEW memory and mark the sources superseded' clearly states the verb (merge), resource (memories), and the specific outcome (creating a new memory and superseding sources). This distinguishes it from siblings like store_memory, update_memory, and delete_memory.

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 a clear context: use for redundant memories that need consolidation. It does not explicitly name alternatives or exclusion conditions, but 'redundant memories' plus the merge semantics make the intended usage obvious relative to sibling tools.

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

rebuild_entity_graphA

(Re)build the Graphify entity knowledge graph over the brain.

Runs extraction via the local claude CLI (free; uses your Claude plan). Requires graphifyy installed (pip install graphifyy). Cached under BRAIN_DIR/.constellation so other tools read it instantly.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/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 of behavioral disclosure. It reveals that extraction runs via the local `claude` CLI, requires `graphifyy`, and caches results under BRAIN_DIR/.constellation for fast access by other tools. It does not mention potential destructive overwriting or performance details, but the provided context is substantive.

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

Conciseness5/5

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

The description is concise (four sentences), front-loads the primary purpose, and each sentence adds value: purpose, execution method, dependency, and caching behavior. There is no redundant or filler text.

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 provides useful context (caching, prerequisites, execution method) and an output schema exists, so return values need not be described. However, the unexplained `project` parameter and lack of guidance about when to use versus alternatives make the description incomplete for a fully informed decision.

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?

The schema has one optional parameter (`project`) with 0% description coverage, and the description does not mention this parameter at all. The description should have explained what `project` controls (e.g., scope or target), but it remains completely undocumented, leaving a significant gap.

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 function: '(Re)build the Graphify entity knowledge graph over the brain.' It uses a specific verb (rebuild) and resource (entity knowledge graph), and distinguishes it from sibling tools like `memory_graph` by naming Graphify and mentioning extraction via the local `claude` CLI.

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

Usage Guidelines3/5

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

The description implies when to use the tool (to build/rebuild the graph) and mentions prerequisites (graphifyy installed) and side effects (caching). However, it does not explicitly contrast with alternatives like `memory_graph` or state when not to use this tool, leaving usage guidance largely implied.

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

recallA

Search the Brain semantically. Use this to find relevant memories before starting work.

Args: query: Natural language query describing what you're looking for. project: Scope search to a specific project (None = search all). limit: Maximum number of results to return. neighbors: Attach each result's strongest graph neighbours (1 hop, typed) — graph-aware recall: what's CONNECTED surfaces even if not textually similar.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
projectNo
neighborsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Without annotations, the description carries the full burden of behavioral disclosure. It does explain the graph-aware recall behavior for the 'neighbors' parameter, which is valuable and non-obvious. However, it does not explicitly state that this is a read-only operation or mention any side effects, rate limits, or other behavioral nuances, leaving some gaps.

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

Conciseness5/5

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

The description is concise and front-loaded, with a first sentence stating the core purpose. The Args section is structured with each parameter on its own line and brief, useful explanations. There is no redundant or filler content; every sentence earns its place.

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

Completeness4/5

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

The description covers the tool's purpose, usage context, and all parameters. An output schema exists, so the lack of a return-value description is acceptable. The tool is simple, and the description provides sufficient context for an agent to select and invoke it, though it lacks explicit alternative tool guidance.

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

Parameters5/5

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

The schema provides no parameter descriptions, so the description fully compensates. Each parameter is clearly explained: query as 'Natural language query', project with scoping semantics (None = search all), limit as 'Maximum number of results', and neighbors with a detailed explanation of graph-aware recall. This goes beyond basic schema information, especially for the complex 'neighbors' behavior.

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 opens with 'Search the Brain semantically,' which clearly identifies the action (search) and the resource (the Brain). It also states 'Use this to find relevant memories before starting work,' providing clear context. However, it does not explicitly distinguish this tool from siblings like 'related_memories' or 'recall_associative', so it lacks explicit differentiation.

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 clearly tells the agent when to use this tool: 'Use this to find relevant memories before starting work.' This provides a specific context. It does not mention alternative tools or exclusions, but the stated use case is clear enough to guide selection.

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

recall_associativeA

Spreading-activation recall over the memory graph (HippoRAG-style).

Unlike recall (pure cosine top-k), this seeds the query's best matches and propagates activation along citation, semantic, and shared-entity edges, so strongly-connected memories surface even when not textually similar. Returns the associative ranking AND the plain-cosine baseline for comparison.

Args: query: Natural language query. project: Scope to a project (None = whole brain). limit: Number of results.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description carries the full burden, and it delivers. It discloses the internal algorithm (seeding, propagation along citation/semantic/shared-entity edges) and the return format (associative ranking plus the plain-cosine baseline for comparison). This goes beyond a simple 'recall' and lets the agent predict behavior and output.

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 compact: a one-sentence overview, a one-sentence contrast with recall, a one-sentence return description, and a bulleted Args list. No filler; every sentence adds critical information, and the most important details are front-loaded.

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 the tool's moderate complexity (graph propagation, multiple edge types) and that an output schema exists, the description covers what the tool does, how it differs from the main sibling, and what it returns. It doesn't need to replicate output schema details, and no critical gaps are apparent.

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

Parameters5/5

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

Schema description coverage is 0%, so the description's Args section is essential. It defines all three parameters: query as 'Natural language query', project with scope semantics ('None = whole brain'), and limit as 'Number of results'. This adds meaning beyond the schema's type-only definitions.

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

Purpose5/5

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

The description opens with a specific verb+resource: 'Spreading-activation recall over the memory graph (HippoRAG-style).' It immediately distinguishes itself from sibling `recall` by contrasting its mechanism (propagating activation along edges) with pure cosine top-k, making the tool's unique purpose clear.

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 states when to prefer this tool: 'Unlike recall (pure cosine top-k), this seeds... so strongly-connected memories surface even when not textually similar.' This gives the agent a clear decision rule between recall_associative and recall, and implies that recall is the alternative for straightforward similarity searches.

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

reflectA

Think across memories: surface cross-project analogies and non-obvious connections that recall cannot reach (reuses the Graphify graph — no extra LLM cost). Candidates are saved as proposed insights (unless store_them=False) for you to accept_insight / reject_insight.

Args: project: Scope to a project (None = whole brain). limit: Max candidates. store_them: Persist candidates as proposed insights.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
projectNo
store_themNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries full behavioral disclosure. It reveals that it reuses the Graphify graph with no extra LLM cost, and importantly, it saves candidates as proposed insights (unless store_them=False), which is a side effect. It does not fully detail other behaviors like permission needs or response structure, but covers the key aspects.

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 succinct and well-structured: a brief opening sentence explaining purpose and side effects, followed by a clean Args list. Every sentence provides necessary information without 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?

The description covers purpose, usage context, side effects, and all parameters. It mentions that candidates are saved as proposed insights, which gives workflow context. Since an output schema exists, the absence of return-value explanation is acceptable. Could mention prerequisites like graph state, but overall it is quite complete.

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

Parameters5/5

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

The default schema coverage is 0%, so the description fully compensates by providing clear meanings for each parameter: project scopes to a project (with None special meaning), limit sets max candidates, and store_them controls persistence. This adds substantial value beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb ('surface') and resource ('cross-project analogies and non-obvious connections across memories'). It explicitly distinguishes itself from recall ('that recall cannot reach'), showing a clear differentiation from siblings.

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 implies when to use the tool (when cross-project analogies or non-obvious connections are needed) and contrasts it with recall. It also outlines the workflow with accept_insight/reject_insight, but it does not explicitly list alternative tools or state when not to use it.

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

register_projectA

Register a project so the Brain can auto-detect it from the working directory.

Args: name: Short project identifier (e.g. 'feynotes', 'laplacebo'). description: What this project is about. paths: Filesystem paths associated with this project (for auto-detection).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
pathsNo
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as side effects, permission requirements, reversibility, or what happens if the project already exists. For a mutation tool, this lack of transparency is a significant gap.

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

Conciseness5/5

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

The description is concise and well-structured: a one-sentence purpose followed by a clear Args list. Every sentence adds value, with no fluff or repetition of schema metadata.

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

Completeness3/5

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

The description covers the core purpose and parameters, and an output schema is present, but it omits potential edge-case behavior (e.g., overwriting existing projects, constraints on paths). For a simple registration tool, this is adequate but not fully comprehensive.

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

Parameters5/5

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

The schema has no property descriptions (coverage 0%), but the description's Args section adds meaningful guidance: 'name' gets an example, 'paths' gets its purpose ('for auto-detection'), and 'description' is clarified. This fully compensates for the schema's lack of semantic detail.

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

Purpose5/5

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

The description states a specific verb ('Register') and resource ('a project') with a clear purpose: 'so the Brain can auto-detect it from the working directory.' This distinguishes it from read-only siblings like list_projects and memory retrieval tools.

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 context is clear: use this when you want to register a project for auto-detection. It does not explicitly mention when not to use it or alternatives, but the intent is unambiguous and no exclusions are needed for a simple registration tool.

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

reject_insightA

Reject an insight (kept on record, marked rejected).

Args: insight_id: The insight to reject.

ParametersJSON Schema
NameRequiredDescriptionDefault
insight_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the key behavior 'kept on record, marked rejected', which is important context. However, it does not mention potential restrictions, reversibility, or how rejection affects listing or retrieval.

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: a one-sentence purpose plus a compact Args section. There is no redundant or filler content.

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 tool's simplicity and the presence of an output schema, the description covers the main purpose and parameter adequately. It could benefit from a note about when rejection is appropriate or whether the insight remains visible, but for a small state-change tool it is nearly complete.

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

Parameters4/5

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

The input schema only provides the type (integer) and required status for insight_id. The description adds semantic meaning with 'The insight to reject', clarifying the parameter's role. With only one parameter, this is adequate and exceeds what the schema alone offers.

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 uses a specific verb 'Reject' with the resource 'insight' and adds a clarifying parenthetical 'kept on record, marked rejected' that distinguishes it from deletion or acceptance. This clearly differentiates from sibling 'accept_insight' and other memory tools.

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

Usage Guidelines3/5

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

The description implies usage when you want to reject an insight, and the parenthetical hints that the record is retained, but it does not explicitly state when to use this tool versus alternatives like 'accept_insight' or when not to use it. Context is implied rather than stated.

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

review_beliefsA

Scan the brain for memories that have likely gone stale and need review: superseded by a newer memory, past a temporal deadline, conditional/provisional, or already flagged. Read-only — it suggests, never deletes. Confirm with flag_stale.

Args: project: Scope to a project (None = whole brain).

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so excellently: it explicitly declares 'Read-only — it suggests, never deletes.' It also details the types of staleness it detects, giving the user a full understanding of what will happen.

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

Conciseness5/5

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

The description is concise but information-dense, starting with the main purpose, then the criteria, then the side-effect guarantee and the confirmation action, followed by the arg. Each sentence contributes meaning without redundancy.

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?

For a low-complexity tool with one optional parameter and an output schema, the description covers all necessary aspects: purpose, usage context, parameter semantics, and behavioral transparency. The output format is conveyed by the output schema, so no further description is needed.

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

Parameters5/5

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

The schema provides only the parameter name and type with default null. The description adds crucial semantics: 'Scope to a project (None = whole brain).' This fully explains the meaning and usage of the only parameter, compensating for the 0% schema 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 states the tool scans the brain for memories that are likely stale and need review, specifying exact criteria (superseded, past deadline, conditional, flagged). It clearly distinguishes itself from siblings like recall or list_memories by focusing on review/suggestion rather than retrieval or modification.

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

Usage Guidelines4/5

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

It provides clear context for when to use the tool: to find stale memories that need review. It also indicates the read-only nature and suggests using flag_stale to confirm. However, it does not explicitly mention when not to use it or recommend an alternative tool (e.g., review_procedures for procedures), so it lacks explicit exclusion criteria.

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

review_proceduresA

Find recurring-incident clusters and propose always-on rules for review. Read-only — never edits your operating instructions.

Args: project: Scope to a project (None = whole brain).

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/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 explicitly states 'Read-only — never edits your operating instructions,' which is a key safety trait. This goes beyond the schema and adds value. It does not mention permissions or rate limits, but for a read-only review operation, the stated non-mutating behavior is sufficient.

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, with two sentences covering purpose and safety, plus a single-line argument explanation. Every sentence earns its place, and the most important information is front-loaded. 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?

For a simple tool with one optional parameter and an output schema, the description covers purpose, safety, and parameter semantics well. The absence of usage guidelines (e.g., when to choose this over sibling tools) is a minor gap, but given the tool's simplicity and the output schema's presence, the overall context is adequate.

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

Parameters5/5

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

The schema has 0% description coverage, but the description fully compensates with a clear explanation: 'Args: project: Scope to a project (None = whole brain).' This explains the parameter's meaning, the None behavior, and default scope, making the parameter semantics completely clear.

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 starts with a specific action: 'Find recurring-incident clusters and propose always-on rules for review.' This clearly states the tool's function with a distinct verb and resource, and the phrase 'propose' differentiates it from directly applying rules. It does not explicitly name sibling alternatives, but the focus on procedures and recurring incidents makes it distinguishable from tools like review_beliefs.

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?

Usage context is implied: you use this when you need to detect recurring incidents and propose review rules. However, no explicit 'when to use vs. when not to use' or alternative tools are mentioned. The description provides clear context but no exclusions, so it earns a middle score.

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

set_beliefA

Update a memory's belief envelope. None args keep the current value.

Args: memory_id: The memory. confidence: 0..1 how sure we are. status: active | stale | retired. valid_until: ISO date after which the claim expires. review_reason: why the status/confidence changed. superseded_by: id of the memory that replaced this one.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo
memory_idYes
confidenceNo
valid_untilNo
review_reasonNo
superseded_byNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/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 important behavioral detail: 'None args keep the current value' clarifies that omitted fields are preserved, not cleared. This goes beyond schema defaults and adds practical semantics for a partial update.

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 front-loaded with the core purpose, followed by a compact and structured argument list. Every line earns its place, and the length is appropriate for six parameters. No redundant or filler language.

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

Completeness4/5

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

The tool is complex (six parameters, no annotations), but the description covers the main behavior and all parameter meanings. An output schema exists, so return values need not be explained. Minor gaps like error handling or validation rules are not addressed, but core usage is fully covered.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully compensates. Each of the six parameters gets a concise, meaningful explanation (e.g., status enum values, valid_until as an expiry date, superseded_by as a replacement ID). These add semantic value beyond the schema's types and defaults.

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 action ('Update a memory's belief envelope') with a specific verb and resource. The term 'belief envelope' distinguishes it from more generic tools like update_memory, and the parameter list confirms specialized functionality.

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 usage is implied through the parameter descriptions and the 'None args keep the current value' note, but it doesn't explicitly state when to use this tool versus alternatives like update_memory or review_beliefs. No exclusions or alternative tools are mentioned.

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

sleepA

The brain's "sleep": walk the graph and PROPOSE housekeeping (read-only).

Like consolidation during sleep: finds dense communities whose memories are near-duplicates (→ merge candidates), leaves never recalled and fading (→ decay candidates for flag_stale), and disconnected orphans. Nothing is changed — you (or your agent) act with merge_memories / flag_stale.

Args: project: Scope to a project (None = whole brain). min_similarity: Cosine threshold for merge candidates inside a community.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo
min_similarityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior4/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. It clearly states 'read-only' and 'Nothing is changed', and details the types of findings (merge candidates, decay candidates, orphans). This provides strong transparency, though it omits potential performance implications or whether the analysis might be resource-intensive.

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 well-structured and efficient. It uses a metaphor, then lists concrete outputs, gives action guidance, and documents parameters. Each sentence earns its place; no wasted words. The length is appropriate for the complexity.

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?

The description is complete for a read-only analysis tool with two optional parameters. It explains the purpose, behavior, outputs, and next steps. An output schema exists, so return value details are not required. The coverage of parameter semantics and usage guidelines makes it robust.

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

Parameters5/5

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

The schema provides only titles and defaults, with no property descriptions. The description compensates fully by explaining both parameters: 'project: Scope to a project (None = whole brain)' and 'min_similarity: Cosine threshold for merge candidates inside a community.' This adds meaningful semantics beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's function: 'walk the graph and PROPOSE housekeeping (read-only)'. It identifies the resource (the memory graph) and the action (proposing housekeeping candidates), and distinguishes itself from siblings by explicitly noting it is read-only and that mutations are handled by merge_memories/flag_stale.

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?

The description explicitly explains when to use this tool and what to do with its results: 'Nothing is changed — you (or your agent) act with merge_memories / flag_stale.' It names the alternative tools and clarifies the workflow, making the usage context unambiguous.

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

store_decisionA

Log a decision for future reference. Invaluable for understanding past choices.

Args: decision: What was decided. rationale: Why this choice was made. alternatives: What other options were considered and why they were rejected. context: Surrounding context that influenced the decision. project: Project this decision belongs to.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNo
projectNoglobal
decisionYes
rationaleNo
alternativesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Log' implies a write operation, but the description lacks details on persistence, side effects, permissions, or reversibility. It only mentions the benefit ('invaluable for understanding past choices') without behavioral specifics.

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 plus a parameter list. Every sentence is purposeful and front-loaded with the main action. No fluff or redundancy.

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

Completeness3/5

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

The description covers purpose and parameter semantics. However, it does not mention prerequisites (e.g., project existence), return values, or how it integrates with other tools. For a simple logging tool, this is adequate but not fully complete.

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 0%, so the description compensates with clear explanations for each parameter (decision, rationale, alternatives, context, project). It adds meaning beyond the schema.

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

Purpose5/5

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

The verb 'log' and resource 'decision' clearly state the action, and 'for future reference' adds purpose. It distinguishes from siblings like store_memory and list_decisions.

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

Usage Guidelines3/5

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

The description implies use for recording decisions and understanding past choices, but does not explicitly mention when to use it vs alternatives or when not to use it. It provides context but no exclusions.

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

store_memoryA

Store knowledge in the Brain for future sessions.

Args: content: The information to remember (markdown supported). title: Short descriptive title for this memory. project: Project name (use 'global' for cross-project knowledge). tags: Keywords for easier retrieval (e.g. ["python", "fastapi", "auth"]). category: One of: architecture, bugfix, config, pattern, context, reference, note.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
titleYes
contentYes
projectNoglobal
categoryNonote

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/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 of behavioral disclosure. It reveals that content supports markdown, project scoping defaults to global, and category has a fixed set of values. However, it does not address potential overwriting, duplicate handling, or permissions, leaving some behavioral ambiguity for a write operation.

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

Conciseness5/5

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

The description is concise and well-structured, with a single opening sentence and a clean Args list. Every line adds value, no redundancy or fluff.

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

Completeness4/5

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

The description covers all parameters and the main purpose, and an output schema exists to define the return value. However, it leaves some contextual gaps (e.g., behavior on duplicate titles, whether memories can be overwritten), which prevents a perfect score. Given the tool's simplicity, it is still largely complete.

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

Parameters5/5

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

The schema provides no descriptions for parameters, but the description compensates fully by explaining each parameter: content's markdown support, title's purpose, project's 'global' convention, tags with an example, and an explicit enumeration of category values. This exceeds schema information and makes the parameters self-explanatory.

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 function with a specific verb ('Store') and resource ('knowledge in the Brain for future sessions'), distinguishing it from sibling tools like recall, list_memories, update_memory, and delete_memory. The intent 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 establishes a clear use case (storing new knowledge for future sessions) but does not explicitly mention alternatives or exclusions. Context is clear, but there's no guidance on when to prefer this over store_decision or update_memory, so it earns a 4 rather than 5.

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

update_memoryA

Update an existing memory's content or tags.

Args: memory_id: The numeric ID of the memory to update. content: New content (replaces existing). Pass None to keep current content. tags: New tags (replaces existing). Pass None to keep current tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
contentNo
memory_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It adds useful behavioral detail: content and tags replace existing values, and passing None keeps current values. It does not disclose error handling or side effects, but the core update semantics are well-covered.

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 concise sentences plus a clean Args block. It front-loads the purpose and then efficiently explains each parameter without unnecessary text.

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 tool's simplicity and the presence of an output schema, the description covers the essential aspects: purpose and parameter semantics. It lacks explicit error behavior (e.g., what happens if memory_id doesn't exist), but this is a minor gap for a basic update tool.

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by explaining each parameter's role and the None-preserving behavior. This adds significant meaning beyond the raw schema, which only lists types and defaults.

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 'Update an existing memory's content or tags', specifying the verb (update), resource (memory), and what fields can be changed. This distinguishes it from sibling tools like delete_memory (delete), store_memory (create), and get_memory (retrieve).

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 implies usage on existing memories ('existing memory') and clarifies that content and tags are optional, making it clear when to use this tool. However, it does not explicitly mention alternatives or when-not-to-use scenarios.

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

whyA

Interrogate decision provenance: WHY are things the way they are?

Ask "why do we use X and not Y?" — returns the matching decision(s) with rationale, the rejected alternatives, the context, plus the memories that cite each decision (its evidence in the graph) and what supersedes what.

Args: question: The "why" question, natural language. project: Scope to a project (None = whole brain). limit: Max decisions to explain.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
projectNo
questionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

The description discloses the full behavioral scope: it returns matching decisions with rationale, rejected alternatives, context, evidence from memories, and supersession. It also notes the effect of the 'limit' parameter. However, with no annotations, it does not explicitly state whether the operation is read-only or lacks side effects, though the nature of the query strongly implies it. This is strong transparency but not exhaustive.

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 front-loaded with a purpose statement, followed by a concise example of usage and return content, then the parameter list. There is no fluff or repetition; every sentence contributes value. The formatting is clean and easy to scan.

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?

The tool is complex (decision provenance with multiple output components), but the description covers the input semantics, the output structure, and the scope controls. An output schema exists, but the description goes beyond that to explain the meaning of the results. No critical information is missing.

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

Parameters5/5

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

The description includes an Args block that explains each parameter in plain language: 'question' is a natural-language why-question, 'project' scopes to a project, and 'limit' caps the number of decisions. Since the schema provides no descriptions for these parameters, this is essential and fully compensates, exceeding the baseline.

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 as 'Interrogate decision provenance' and provides a concrete example ('why do we use X and not Y?'). It specifies the return payload (decisions, rationale, rejected alternatives, context, evidence, supersession), which distinguishes it from sibling tools like recall or list_decisions.

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 a clear scenario for when to use the tool: when asking a 'why' question about decisions. It does not explicitly mention alternatives or exclusions, but the example and problem domain make the intended usage obvious. No 'when not to use' guidance is provided, so it falls short of a 5.

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

Tool Schema Changelog

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

  1. 31 tool updatesv0.14.1
    • First observedaccept_insight
    • First observedas_of
    • First observedbrain_status
    • First observedconsolidate
    • First observeddelete_memory
    • First observedexpand_memory
    • First observedflag_stale
    • First observedget_context
    • First observedget_memory
    • First observedlist_decisions
    • First observedlist_insights
    • First observedlist_memories
    • First observedlist_projects
    • First observedmemory_graph
    • First observedmemory_history
    • First observedmerge_memories
    • First observedrebuild_entity_graph
    • First observedrecall
    • First observedrecall_associative
    • First observedreflect
    • First observedregister_project
    • First observedreject_insight
    • First observedrelated_memories
    • First observedreview_beliefs
    • First observedreview_procedures
    • First observedset_belief
    • First observedsleep
    • First observedstore_decision
    • First observedstore_memory
    • First observedupdate_memory
    • First observedwhy

TDQS

B3.3/5.0

Scored across 31 tools

Disambiguation2/5

Multiple tools overlap in purpose: recall, recall_associative, and related_memories all surface related memories with subtle differences. Similarly, sleep and consolidate both propose merge candidates, and review_procedures overlaps with housekeeping. The boundaries are not always clear despite descriptions.

Naming Consistency2/5

Many tools follow verb_noun (store_memory, get_memory, delete_memory), but there are inconsistent outliers like why, as_of, sleep, reflect, brain_status, memory_graph, and recall_associative. The mixed conventions make the set feel unpatterned and harder to predict.

Tool Count2/5

At 31 tools, the server is well over the typical well-scoped range (3-15). While the memory domain is broad, several tools could be consolidated (e.g., sleep and consolidate, recall and recall_associative), making the surface feel bloated rather than focused.

Completeness3/5

Memory CRUD is fully covered, and advanced features like belief tracking, insights, and graph operations are present. However, decisions lack update/delete operations, projects lack update/delete, and list_memories does not filter by tags. These gaps create dead ends for secondary entities.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Local-first external brain for Claude Code, Codex, and any MCP client. Stores decisions, entities, and session artifacts in one SQLite file and exposes MCP tools for recall, page, promote, review, graph-query, and source-status.
    11
    3 npm
    5
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Local-first, file-based memory layer for AI agents — one shared Markdown vault across Claude, Codex, Gemini, Cursor and any MCP client. Provides read/write memory tools with an audit trail, per-agent trust levels, and Git sync; no cloud and no lock-in.
    2
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    A local-first shared memory layer for MCP-aware agents like Claude, Codex, and Hermes, enabling persistent memory across chats and clients via Markdown files and SQLite FTS.
    6
    2
    MIT