Skip to main content
Glama

remem-mcp

npm version GitHub stars License: MIT Benchmark

Your coding agent stops repeating the same mistakes.

Local-first memory that survives context compaction. Learns from every error, injects fixes before the next attempt, and syncs to your git repo so your whole team shares it.

No API key. No cloud. No database server. Just a SQLite file.


Install

npx remem-mcp setup

Auto-detects Claude Code, Cursor, Devin, Codex. Registers MCP server + hooks. Restart your agent.

That's it. Use your agent normally — memory works automatically.

npx remem-mcp status    # verify: hooks ✓, DB ✓, CodeGraph ✓

Related MCP server: knitbrain

What happens automatically

When

What

Session start

Past errors, decisions, and persona injected into agent context

Each prompt

Matching memory injected (you'll see [remem-mcp] at the top)

Tool calls

Verbose output offloaded to refs, Mermaid canvas injected (92% token cut)

Session end

Worker auto-extracts facts, consolidates summaries, updates persona

You don't run any commands. The agent calls recall() before answering and capture() after work — the skill tells it to.


How it works

AI Agent (Claude Code / Devin / Cursor / Codex)
    │
    ├── MCP tools ──▶ recall, capture, codegraph_*, wiki_*, feedback
    │
    └── Hooks ──▶ SessionStart, UserPromptSubmit, PreToolUse,
                  PostToolUse, Stop, PostCompact
                        │
                        ▼
              SQLite (memory.db)

  L0 captures → L1 atoms → L2 scenarios → L3 persona
  (raw)        (facts)      (summaries)    (preferences)

  CodeGraph: symbols + calls + imports (tree-sitter, 9 languages)
  Memory links: Hebbian co-retrieval (frequently co-retrieved = stronger)

No LLM API key needed — rule-based extraction + keyword grouping.


CodeGraph

Structural code indexing via tree-sitter. The agent uses codegraph_search instead of grep to find symbols.

npx remem-mcp index --path src              # index a directory
npx remem-mcp search-code --query "parseTar"  # find symbols
npx remem-mcp callers <id>                  # who calls this?
npx remem-mcp impact <id>                   # blast radius

9 languages: TS/JS/Python/Go/Rust/Java/C/C++/C#. 6-strategy call resolution (import-map → same-module → unique-name → suffix → fuzzy). Stdlib calls filtered out.

Repo

Files

Symbols

Calls

Time

remem-mcp

79

301

6,456

3s

AZR Go

455

3,417

41,603

111s

Orca TS

3,000

7,632

78,981

705s


Why it's different

remem-mcp

Mem0

Claude MEMORY.md

Mneme

Survives compaction

Yes

Yes — cloud

No — 200-line cap

Yes

Learns from errors

Yes — auto

No

No

No

Search

Hybrid BM25 + vector + entities

Vector only

No

Vector + graph

Memory links

Hebbian co-retrieval

No

No

Graph

Decay/forget

Yes

No

No

No

CodeGraph

Yes — 6-strategy call resolution

No

No

No

Token offload

Yes — Mermaid canvas

No

No

No

Setup

1 command

API key + cloud

Built-in

Build from source

Cost

Free

$19–249/mo

Free

Free


Per-agent install

claude mcp add remem-mcp --scope user -- npx -y remem-mcp
npx remem-mcp install-hooks

Install in Cursor

Or add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "remem-mcp": { "command": "npx", "args": ["-y", "remem-mcp"] }
  }
}
devin mcp add remem-mcp --scope user -- npx -y remem-mcp
npx remem-mcp install-hooks

Add to ~/.codex/config.toml:

[mcp_servers.remem-mcp]
command = "npx"
args = ["-y", "remem-mcp"]

Then run npx remem-mcp install-hooks.


Useful commands

npx remem-mcp status           # health + hooks + DB + CodeGraph
npx remem-mcp viewer           # web UI at localhost:7331
npx remem-mcp errors           # error dashboard
npx remem-mcp recent [N]       # recent captures
npx remem-mcp help all         # full list of 40+ subcommands

Configuration

All settings have defaults. Config file is optional: ~/.config/remem-mcp/config.json.

Setting

Env var

Default

DB path

REMEM_DB_PATH

~/.local/share/remem-mcp/memory.db

Cross-project memory

REMEM_GLOBAL_SESSION_KEY

(unset)

Unified flow (F1+F2+F3)

REMEM_FLOW

(unset, set to full)

Suppress hook feedback

REMEM_QUIET

(unset, set to 1)

Global memory policy — set REMEM_GLOBAL_SESSION_KEY to read cross-project memory automatically. Captures stay project-local unless the user explicitly asks to save globally; then use session_key: "global". Do not auto-classify ordinary captures into global.

Team sharingnpx remem-mcp sync-export writes .remem-mcp/memory-export.jsonl. Commit it to git. Team members get the same memory on git pull.

Per-repo capture exclusions — Drop a .remem.toml in any project root:

[capture]
ignore_paths = ["node_modules", "dist", ".git", "*.min.js"]

Benchmark

Benchmark

remem-mcp

Mem0

Without memory

AMB (L1/L2/L3)

100/100/100

LoCoMo (long conversation QA)

95

92.5

PersonaMem (personalization)

100

48

LongMemEval (ICLR 2025)

96

94.4

bash scripts/bench-all.sh --quick   # AMB only (~2 min)

Architecture

See ARCHITECTURE.md for full system diagrams, schema, and performance details.

Credits

Core based on TencentDB Agent Memory (MIT, Tencent 2026). CodeGraph call resolution adapted from Codebase-Memory (arXiv:2603.27277). Recall boost adapted from ai-memory by Akita On Rails. Contextual retrieval from Anthropic (2024).

License

MIT. See LICENSE.

Available Tools

47 tools
adrA

Record an Architecture Decision Record (ADR). Use this tool when you make a technical decision that future agents should know about. The ADR is stored as a structured capture and can be recalled by any agent working on the same project.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoOptional tags for filtering. Example: ['arch', 'storage'].
titleYesA short title for the decision. Example: 'Use SQLite for local storage'.
contextYesThe problem or situation that requires a decision. Why is this decision needed?
task_idNoThe task ID. Use this to isolate memory by a specific task. Link captures to a task for finer isolation.
team_idNoThe team ID. Use this to isolate memory by team. When set, all queries filter by this value.
user_idNoThe user ID. Use this to isolate memory by user within a team. When set with team_id, queries filter by both.
agent_idNoThe agent ID. Use this to isolate memory by agent role within a team. Defaults to the detected agent.
decisionYesThe decision that was made. What was chosen?
session_keyNoThe session key. The default is hash(cwd).
alternativesNoOther options that were considered but rejected. Include why each was rejected.
consequencesNoThe consequences of this decision. What are the trade-offs, risks, and benefits?

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 burden. It discloses that the ADR is stored as a structured capture and can be recalled by any agent on the same project. However, it does not clarify whether the tool creates a new record each time, whether it overwrites existing records, or any side effects like memory isolation when team_id/task_id are used. The description offers some context but not complete behavioral 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 three sentences, each earning its place: the first names the action, the second provides a usage condition, and the third explains storage and sharing. It is front-loaded and free of redundant wording, making it easy for an agent 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 a moderate complexity with 11 parameters and 3 required, but the description includes the key context: what the tool does, when to use it, and how the resulting data is used (recallable). It does not explicitly link to related tools like recall or capture, but the phrase 'can be recalled' hints at the ecosystem. The absence of an output schema means no return-value explanation is needed, and the description covers the essential usage scenario.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 11 parameters. The description does not add additional parameter-level meaning beyond what the schema provides. According to the guidelines, a baseline of 3 is appropriate when the schema covers all parameters.

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 records an Architecture Decision Record (ADR) with a specific verb ('Record') and resource ('Architecture Decision Record'). It also explains the purpose: 'when you make a technical decision that future agents should know about,' which distinguishes it from generic capture 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 description explicitly tells the agent when to use the tool: 'Use this tool when you make a technical decision that future agents should know about.' It does not mention alternatives or exclusions, but the condition is clear and actionable. The mention that ADRs are 'recalled by any agent' also sets expectations for use.

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

canvas_getA

Get the Mermaid task canvas for the current session. The canvas is a symbolic graph of tool calls and state transitions — it replaces verbose tool logs in your context with a compact Mermaid diagram. Use this to see the task structure without re-reading full tool outputs. Requires REMEM_OFFLOAD_ENABLED=true and pipeline=mermaid.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format. 'mermaid' returns the Mermaid graph text. 'json' returns structured nodes/edges.mermaid
session_keyNoThe session key. Defaults to hash(cwd). Use this to get the canvas from a different session.

TDQS

A4.2/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 behavioral burden. It discloses a required environment condition (REMEM_OFFLOAD_ENABLED=true and pipeline=mermaid) and explains the output is a compact symbolic graph rather than full logs. It does not discuss error cases or side effects, but for a read-style get tool this is a reasonable disclosure.

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 front-loaded: the core action appears first, followed by what the canvas is, when to use it, and a required precondition. Every sentence earns its place and 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?

For a simple read-only tool with two optional parameters and no output schema, the description explains the purpose, output nature, usage context, and environment prerequisite. It does not explicitly state read-only behavior, auth, or error handling, but these are minor given the 'get' semantics and strong schema coverage.

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

Parameters3/5

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

Schema description coverage is 100%, and both parameters already have clear descriptions and an enum for format. The tool description adds conceptual context about the canvas but does not add meaningful parameter-level detail beyond the schema. This matches the baseline for high 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 opens with a specific verb+resource: 'Get the Mermaid task canvas for the current session.' It then explains what the canvas is and how it differs from verbose tool logs, making the tool's identity and value clear. This distinguishes it well from the many sibling knowledge, recall, and skill getters.

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 explicitly says 'Use this to see the task structure without re-reading full tool outputs,' which gives clear invocation context. It also lists environment prerequisites. It does not name specific alternative tools or state when not to use it, but the usage context is strong enough for selection.

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

captureA

Store a decision, a learning, or a task outcome to memory. Call this tool after you complete a non-trivial task, make a decision, or fix a bug with a known root cause. You can capture a single text string, or a list of role-based conversation messages. Captures are project-local by default. Write to global memory ONLY when the user explicitly asks to remember something across projects/globally; then pass session_key="global".

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoOptional tags.
typeNoThe type of the memory. Defaults to 'conversation' if omitted.conversation
atomsNoOptional L1 atom facts distilled from this capture. Each atom is a short, self-contained fact useful on its own (e.g., 'vitest config missing causes npm test exit 1'). When provided, recall() returns these atoms instead of the raw content — 90% fewer tokens. Write 1-3 atoms for decisions, learnings, and errors. Skip for conversations.
formatNoThe response format. Use 'json' for structured data (e.g. benchmarks). Defaults to 'text'.text
contentNoThe text to remember. The tool redacts secrets before it stores the text. Use this for a single message. Use 'messages' instead for a multi-turn conversation.
task_idNoThe task ID. Use this to isolate memory by a specific task. Link captures to a task for finer isolation.
team_idNoThe team ID. Use this to isolate memory by team. When set, all queries filter by this value.
user_idNoThe user ID. Use this to isolate memory by user within a team. When set with team_id, queries filter by both.
agent_idNoThe agent ID. Use this to isolate memory by agent role within a team. Defaults to the detected agent.
messagesNoA list of role-based conversation messages to capture. When set, 'content' is ignored. The tool flattens the messages into a single text for search, and stores the original messages for retrieval.
metadataNoOptional metadata.
verifiedNoSet this to true to mark the capture as verified. Verified captures rank higher in recall.
supersedesNoThe ID of a capture that this one replaces. The old capture is marked as stale and ranks lower.
auto_globalNoCompatibility option for explicit global routing. Prefer session_key='global' and use this only when the user explicitly asks for cross-project classification. Requires REMEM_GLOBAL_SESSION_KEY.
session_keyNoThe session key. The default is hash(cwd). Use 'global' to store cross-project knowledge (rules, conventions, learnings), but ONLY when the user explicitly asks to save it globally.
override_reasonNoRequired when override_rejection is true. Explain why the rejection no longer applies. Logged to audit.
override_rejectionNoSet this to true to force capture even if the content was previously rejected. Use this only when the rejection reason no longer applies.

TDQS

A4.3/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 behavioral burden and does so well. It discloses that captures are project-local by default, that secrets are redacted before storage, that messages are flattened for search while originals are retained, and that atoms affect recall behavior. This is substantial beyond the schema.

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 front-loaded: it opens with the core purpose, then usage timing, content options, scoping default, and the critical global-memory caveat. Every sentence contributes either behavioral, scoping, or usage information without 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?

For a 17-parameter tool with no output schema and no annotations, the description covers the essential aspects: when to call, what to store, project-local behavior, the global exception, redaction, and the messages/atoms interaction. Remaining gaps are minor—it does not mention output behavior or the isolation parameters (task_id, team_id, user_id, agent_id)—but the schema covers those.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful parameter-level context beyond the schema: the semantics of session_key='global', the content-versus-messages relationship, and the behavior of atoms. This elevates the score, though many parameters like tags, metadata, and verified are left to the schema.

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

Purpose4/5

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

The description names a specific action ('Store a decision, a learning, or a task outcome to memory') and gives concrete examples of when to call it. It is clear and distinguishes capture from retrieval-oriented siblings like recall and search, but it does not explicitly differentiate from record_outcome or knowledge_create, so it misses the top score.

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

Usage Guidelines4/5

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

The description gives explicit usage timing: call after completing a non-trivial task, making a decision, or fixing a bug with a known root cause. It also gives a strong exclusion—global memory should only be used when the user explicitly asks—and tells the agent exactly how to enable it via session_key='global'. It does not name alternative tools, so it stops 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.

codegraph_calleesA

Find all callees of a symbol — what does this function call? Returns the called functions with file paths and line numbers. Requires the symbol ID from codegraph_search.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
symbol_idYesThe symbol ID (from codegraph_search).

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description is the sole source of behavioral information. It discloses the return content ('called functions with file paths and line numbers') and the necessary input. However, it does not mention whether results are direct or transitive callees, how limit affects results, or any potential performance implications. This leaves some ambiguity for a code-analysis tool.

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, immediately states the purpose, and front-loads the key information. The second sentence adds essential return-type detail and a prerequisite. Every word earns its place; no 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?

For a simple read-only tool with two parameters and no output schema, the description covers the essential aspects: what it does, what it returns, and what input is required. It does not mention edge cases like pagination or direct vs. transitive callees, but these are not critical for a basic query tool and can be inferred from the schema and tool name.

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

Parameters3/5

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

The schema provides a description for symbol_id, and the tool description reinforces this by stating the symbol ID comes from codegraph_search. The limit parameter is not described in the schema or the description, but its name and default/max values make it reasonably self-explanatory. The description adds minimal value beyond the schema for parameter understanding.

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 ('Find all callees of a symbol') and explains the query in plain language ('what does this function call?'). It distinguishes the tool from its sibling codegraph_callers by explicitly focusing on callees, not callers.

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 usage context: use this when you need to know what functions a given symbol calls. It explicitly states a prerequisite ('Requires the symbol ID from codegraph_search'), which helps the agent know the correct invocation sequence. It does not contrast with alternatives like codegraph_callers, but the purpose is unambiguous 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.

codegraph_callersA

Find all callers of a symbol — who calls this function? Returns the calling functions with file paths and line numbers. Requires the symbol ID from codegraph_search.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
symbol_idYesThe symbol ID (from codegraph_search).

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description must carry the full burden of behavioral disclosure. It claims to 'Find all callers' but the schema includes a 'limit' parameter with a default of 50 and a maximum of 200, meaning it does not truly return all callers unless explicitly set. This omission is misleading, and the description does not mention any other behavioral traits like read-only status or pagination.

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 brief and front-loaded, starting with an imperative verb and immediately conveying the core purpose. The three sentences each serve a clear role: defining the action, restating in plain language, and providing the necessary prerequisite. No unnecessary words are present.

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

Completeness2/5

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

Given the absence of an output schema, the description should fully explain the tool's behavior. It fails to mention the 'limit' parameter's effect, and the claim of 'all callers' conflicts with the capped result size. This leaves an agent unsure about whether the result set is complete or truncated, which is a significant gap for a tool with minimal other documentation.

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

Parameters3/5

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

The symbol_id parameter is well-described both in the schema and the description, which adds the important note that it comes from codegraph_search. However, the 'limit' parameter is not mentioned in the description, and the schema only provides type/default/maximum without explaining its purpose. With 50% schema coverage, the description partially compensates but leaves the optional parameter ambiguous.

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 ('Find') and identifies the resource ('callers of a symbol'), clarifying the function with 'who calls this function?' and specifying the return format (function names with file paths and line numbers). It effectively distinguishes itself from sibling tools like codegraph_callees, which would find the opposite relationship.

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 states a prerequisite ('Requires the symbol ID from codegraph_search'), implying a workflow where users must first search for the symbol. It does not explicitly mention alternatives or when not to use this tool, but the context of sibling tools and the clear use case provide sufficient guidance.

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

codegraph_detect_changesA

Detect uncommitted git changes and map them to affected symbols with blast radius. Runs git diff --name-only to find changed files, finds symbols in those files, then traces callers to determine impact. Returns affected symbols + risk classification.

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idNoThe team ID for isolation.
max_depthNoMax depth for caller traversal (blast radius).
repo_pathYesThe repository root path (absolute).

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description must convey the tool's behavior. It explicitly describes the internal steps (runs git diff, finds symbols, traces callers) and the return value (affected symbols + risk classification). It does not mention side effects or permissions, but the steps imply a read-only analysis.

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 that clearly outline the tool's purpose, method, and output. No redundant or vague language is present.

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 explains what the tool does, how it works, and what it returns. It does not mention prerequisites (e.g., an existing codegraph index) or potential limitations, but for a tool that returns analysis results, this is sufficient for an agent to decide when to use it.

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

Parameters3/5

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

The schema already includes descriptions for all three parameters, covering their purpose (isolation, traversal depth, repository path). The description adds no additional meaning beyond what is in the schema, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function: detecting uncommitted git changes and mapping them to affected symbols with blast radius. It is distinct from sibling tools like codegraph_impact or codegraph_callers by focusing on uncommitted changes.

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 (uncommitted changes) by mentioning 'git diff --name-only' and tracing callers. However, it does not explicitly contrast with alternatives or state when to prefer this tool over codegraph_impact or other impact-analysis tools.

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

codegraph_impactA

Perform impact analysis: if I change this symbol, what else might be affected? Traverses the call graph upward (callers of callers) to find all potentially impacted code. Requires the symbol ID from codegraph_search.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_depthNoMaximum traversal depth in the call graph.
symbol_idYesThe symbol ID (from codegraph_search).

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 the traversal methodology (upward via callers of callers) and the dependency on codegraph_search. It does not explicitly mention read-only safety or output format, but the analysis nature implies a non-mutating 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?

Two sentences, front-loaded with the core question and then the method. No filler or 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, method, and input provenance. Since there is no output schema, it could be more explicit about the return structure, but the phrase 'find all potentially impacted code' gives a sufficient expectation for selection and invocation.

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 covers both parameters at 100%, so baseline is 3. The description adds value by specifying that symbol_id must originate from codegraph_search and by clarifying the upward traversal direction, which aids understanding of max_depth's effect. This goes slightly 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 purpose: perform impact analysis for a symbol change. It distinguishes itself from siblings like codegraph_callers by explicitly specifying upward traversal ('callers of callers') and requiring a symbol ID from codegraph_search.

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

Usage Guidelines4/5

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

It provides a concrete use case ('if I change this symbol, what else might be affected?') and a prerequisite (requires symbol ID from codegraph_search). The traversal direction implies when to prefer this over direct-caller tools, but it does not explicitly name alternatives or exclusions.

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

codegraph_indexA

Index a file or directory into the code graph. Extracts symbols (functions, classes, methods), call relationships, and imports. Supports TypeScript, JavaScript, Python, Go, Rust, Java, C, C++, C#. Note: codegraph_search auto-indexes on first use, so you only need this for explicit re-indexing or custom paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesThe file or directory path to index. For directories, all supported files are indexed recursively.
team_idNoThe team ID for isolation.
max_filesNoMaximum number of files to index (for directory mode).
repo_pathNoThe root path of the repository. Used to compute relative file paths. Defaults to the path argument.

TDQS

A4.4/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 does more than declare a side effect: it identifies the content extracted, supported languages, recursive directory handling implied by the schema, and the auto-index relationship. It does not, however, clarify whether re-indexing replaces existing data or what completion signals are returned.

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: the first gives the action and resource, the second adds the auto-index note and language coverage. It is front-loaded and contains no redundant filler; the language list and auto-index clarification are relevant, targeted 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?

The description, together with the schema, covers inputs, supported languages, recursive indexing, and the primary usage situation. There is no output schema, and the description does not explicitly state what the tool returns or how the agent will know indexing completed, which is a modest gap. Overall, though, it gives enough context for selection and invocation.

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

Parameters3/5

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

Because there is 100% schema description coverage for all parameters, the schema already provides complete meanings. The description does not add meaningful new parameter semantics beyond reinforcing that paths/directions use recursive index behavior. The baseline 3 applies, as no important param context is missing.

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 ('Index') with a concrete resource ('a file or directory into the code graph') and explains what is extracted: symbols, call relationships, and imports. It also differentiates the tool from sibling search tools by noting that codegraph_search auto-indexes, so this tool is for explicit re-indexing or custom paths.

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?

It explicitly states when this tool is needed: 'only need this for explicit re-indexing or custom paths,' and when it is not needed: because 'codegraph_search auto-indexes on first use.' This gives agents a clear 'when to use vs. alternative' guideline.

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

codegraph_listA

List all symbols in a file or directory. Returns symbols sorted by line number. Use this to get an overview of what a file contains.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoFilter by symbol kind (Function, Class, Method, etc.).
limitNo
team_idNoThe team ID for isolation.
file_pathYesThe file path (relative to repo root) to list symbols for.

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 transparency burden. It discloses that results are sorted by line number, but doesn't clarify directory traversal behavior, pagination via limit, or explicitly state read-only guarantees beyond the word 'List'.

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

Conciseness5/5

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

Two concise sentences, front-loaded with the action, no filler. Every sentence 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?

Provides purpose, sorting, and usage hint, but lacks details about the output format (what fields per symbol), limit semantics, and potential errors. Since there is no output schema, this is a notable gap.

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

Parameters3/5

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

Schema covers 75% of params; description adds context that file_path can be a directory and that 'all symbols' are returned by default, reinforcing kind's optionality. It doesn't elaborate on limit or team_id beyond schema, so added value is moderate.

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 identifies the action (list), the resource (all symbols), and the scope (file or directory). It distinguishes from sibling tools by framing it as an overview tool, and the sorting detail clarifies the return order.

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

Usage Guidelines4/5

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

It explicitly states to use this tool to get an overview of what a file contains, providing clear use context. It does not mention alternatives or when not to use it, so it misses an explicit exclusion or comparison.

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

codegraph_statsA

Return indexed CodeGraph statistics: total symbols, calls, resolved calls, imports, and file counts. Optionally scoped to a repo_path. Use this to check indexing coverage before searching.

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idNoThe team ID for isolation.
repo_pathNoOptional: scope stats to this repository root path.

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It clearly communicates a read-only aggregate-returning operation, but it does not mention potential side effects, required authorization, or any edge cases about missing indexes or empty repos.

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

Conciseness5/5

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

Two concise sentences, front-loaded with what the tool returns and followed by its primary use case. Every word contributes to understanding the tool.

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 low-complexity stats tool with two optional parameters and no output schema, the description names the complete set of returned metrics and the intended usage. It lacks only minor behavioral details that would benefit from annotations.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents both parameters. The description adds value by clarifying that repo_path scopes the stats, but it does not significantly extend parameter meaning.

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 ('Return') with a clear resource ('indexed CodeGraph statistics') and enumerates the exact metrics returned. It also distinguishes itself from sibling search/indexing tools by framing it as a coverage check.

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 explicitly states when to use the tool: 'Use this to check indexing coverage before searching.' This gives clear context for invocation, though it does not name specific alternative tools or explicit when-not conditions.

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

confirmA

Confirm that a memory is accurate. Increments the Bayesian confirmation count, raising its confidence score in future searches. Use when a recalled memory proved helpful and correct.

ParametersJSON Schema
NameRequiredDescriptionDefault
capture_idYesThe ID of the capture to confirm.

TDQS

A4/5.0
Behavior4/5

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

The description discloses the side effect of incrementing a Bayesian confirmation count and explains the impact on future searches. It also clarifies the memory state this implies ('accurate'). However, it doesn't specify whether updating or correcting an inaccurate memory would be done via a different tool, which could be relevant context for the 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?

Three sentences, zero wasted words. Each sentence earns its place: what it does, what happens as a result, and when to use it. The description is immediately understandable and front-loaded with the primary action.

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 simulator with a single parameter and no output schema, the description is concise and effectively conveys the tool's purpose, behavior, and usage, saving the agent from needing to inspect the schema. It could be slightly improved by mentioning the limitations (e.g., no auth or rate limits) but these seem unnecessary for the tool's simple function.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter 'capture_id', and the description adds the concept that confirming is for 'memories'. However, the description does not clarify what qualifies as a memory or how to reference it, relying on the schema's 'ID of the capture'. It adds a bit of context by linking the 'capture' concept but the link is implicit.

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 ('Confirm'), resource ('memory'), and mechanism ('Increments the Bayesian confirmation count'). It distinguishes itself from sibling tools by focusing on the confirmation action, which is distinct from tools like 'recall', 'forget', or 'resolve'. The phrase 'raising its confidence score in future searches' adds functional clarity.

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 provides clear guidance on when to use the tool ('when a recalled memory proved helpful and correct'), but does not explicitly mention when not to use it or name alternatives. Sibling tools like 'correct', 'supersede', or 'forget' are logical alternatives when the memory is inaccurate, but this distinction is not explicitly stated. The usage context is implied rather than contrasted with alternatives.

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

consolidateA

Find and merge duplicate or near-duplicate memories. Use this when you suspect redundant captures (e.g. same decision captured twice). Returns groups of similar captures. Set confirm=true to merge them. Use batch_size to limit how many captures are processed in one call (cost control).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoSet to true to merge duplicates. Without confirm, returns candidates only.
thresholdNoSimilarity threshold (0-1). Higher = stricter matching. Default 0.75.
batch_sizeNoMaximum captures to process in this batch. 0 = all (default). Use for incremental consolidation on large databases.
session_keyNoThe session key to consolidate. Default is hash(cwd). Use 'all' for all projects.

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description must convey behavior. It discloses the key distinction: without confirm, it returns groups of similar captures; with confirm=true, it merges them. It also notes batch_size controls processing volume and cost. This is adequate for a tool with a dry-run/merge pattern, though it doesn't discuss side effects or permissions.

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

Conciseness5/5

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

The description is three concise sentences, front-loaded with purpose and usage. Every sentence contributes: purpose, when to use, and key parameter behavior. 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?

With 4 parameters and no output schema or annotations, the description covers the core workflow: find candidates, merge with confirm, and use batch_size for incremental processing. It states the return type ('groups of similar captures') but does not detail return structure or threshold behavior, which are adequately explained in the schema. Overall, complete enough for typical use.

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

Parameters3/5

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

Schema covers 100% of parameters with detailed descriptions. The description adds minimal value beyond schema: it reinforces confirm's role ('Set confirm=true to merge them') and provides an extra rationale for batch_size ('cost control'), but offers nothing new for threshold or session_key. The added context is marginal.

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: 'Find and merge duplicate or near-duplicate memories', with a specific resource (memories). It also differentiates from siblings by providing usage context ('Use this when you suspect redundant captures e.g. same decision captured twice') and describes the two-phase operation (returns candidates vs. merging).

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

Usage Guidelines4/5

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

Explicitly states when to use: 'Use this when you suspect redundant captures'. It also provides conditional guidance for confirm (set to merge) and batch_size (limit for cost control), but does not explicitly mention alternatives or when not to use it. Still, the context is clear and actionable.

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

correctA

Mark a memory as inaccurate or outdated. Increments the Bayesian correction count, lowering its confidence score in future searches. Use when a recalled memory was wrong, misleading, or superseded by newer information.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoOptional explanation of why this memory is wrong.
capture_idYesThe ID of the capture to correct.

TDQS

A4.2/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 disclosure. It states the side effect: increments correction count and lowers confidence score, which is a key behavioral trait. However, it doesn't mention reversibility, permissions, or any additional consequences beyond the confidence adjustment.

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 main purpose, and includes the usage guideline in a compact second sentence. Every word earns its place, with no fluff or 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 adequately explains the tool's function and effect, given the simple schema and no output schema. It covers the 'when-to-use' and the impact on future searches. A minor gap is not differentiating when to use correct vs. forget or supersede, but overall it is sufficiently complete for a basic correction tool.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (reason and capture_id) already have descriptions. The tool description adds minimal new meaning, only clarifying that the reason is an explanation of why the memory is wrong, which is largely redundant with the schema. This aligns with the baseline of 3 for high coverage.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Mark a memory as inaccurate or outdated.' It also explains the mechanism (increments Bayesian correction count, lowers confidence) which distinguishes it from siblings like forget or supersede. The verb and resource are specific, and the effect on future searches adds unique value.

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?

Provides explicit guidance on when to use it: 'Use when a recalled memory was wrong, misleading, or superseded by newer information.' This gives clear context, but it does not mention when NOT to use it or alternatives like forget or supersede, which are present in sibling tools.

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

correction_kpisA

Get correction learning metrics: total corrections, average precision, heed rate, noise candidates (precision < 0.3), and high-signal candidates (precision >= 0.8). Use this to evaluate memory quality and identify unhelpful corrections to prune.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/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 burden. It implies a read-only operation by using 'Get', but does not explicitly state that it modifies nothing, nor does it mention performance characteristics or permissions. This leaves some behavioral aspects undisclosed.

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 that effectively lists the metrics and the intended use case. No unnecessary words or repetition, making it highly efficient.

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?

Although there is no output schema, the description lists the specific metrics returned (e.g., total corrections, noise candidates) and provides a clear use case. It does not specify the exact data format, but the essential information is present.

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 the baseline is 4 as per rubric. The description does not need to explain parameters, and no parameter-related information is missing.

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 get correction learning metrics, enumerating specific metrics like total corrections and average precision. It uses a clear verb ('Get') and resource ('correction learning metrics'), distinguishing it from other 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 description provides explicit guidance on when to use the tool: 'Use this to evaluate memory quality and identify unhelpful corrections to prune.' It does not mention alternatives, but the context is clear enough for appropriate usage.

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

explain_recallA

Explain WHY a memory was recalled for a given query. Shows the BM25 score, vector score, RRF fused score, rank, and matching keywords for each result. Use this to debug unexpected recall results or to understand the retrieval pipeline. If you provide a capture_id, the tool explains why that specific capture was or was not retrieved.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoThe search mode to explain.hybrid
limitNoThe maximum number of results to explain.
queryYesThe same query you used with recall or search.
task_idNoThe task ID. Use this to isolate memory by a specific task. Link captures to a task for finer isolation.
team_idNoThe team ID. Use this to isolate memory by team. When set, all queries filter by this value.
user_idNoThe user ID. Use this to isolate memory by user within a team. When set with team_id, queries filter by both.
agent_idNoThe agent ID. Use this to isolate memory by agent role within a team. Defaults to the detected agent.
capture_idNoOptional. The ID of a specific capture to explain. If set, the tool shows why this capture was or was not in the results.
session_keyNoThe session key. The default is hash(cwd).

TDQS

A4.6/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 burden. It discloses the tool's output (scores, rank, keywords) and the special behavior when capture_id is provided. However, it doesn't explicitly state whether the tool is read-only or mention any side effects, though the wording 'Shows' implies a non-mutating 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 two sentences, tightly packed with relevant information. It front-loads the purpose and includes only essential details, with 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 tool has 9 parameters and no output schema, but the description compensates by listing the output components (BM25 score, vector score, RRF fused score, rank, keywords). It also explains the capture_id behavior thoroughly. Minor gaps include no mention of error cases or parameter interactions, but the schema covers parameter basics.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining the capture_id behavior ('explains why that specific capture was or was not retrieved'), which is not fully detailed in the schema. This extra context justifies a score above 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 uses a specific verb ('Explain') and resource ('memory recall'), making the tool's purpose clear. It also distinguishes itself from sibling tools like recall or search by focusing on the explanation of retrieval results and listing specific outputs such as BM25 score and RRF fused score.

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 states when to use the tool: 'to debug unexpected recall results or to understand the retrieval pipeline.' This provides clear guidance on the intended use case and implicitly differentiates it from recall, which performs the retrieval itself.

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

feedbackA

Record a quality signal for a recalled memory. Call this AFTER using a recall result: use 'helpful' if the memory answered your question, 'not_helpful' if it was irrelevant, 'stale' if the information is outdated, or 'wrong' if it is incorrect. This creates a feedback flywheel — useful memories rise, unhelpful ones fade. Do not call this for memories you have not actually used.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoOptional explanation for the feedback signal.
signalYeshelpful = memory was useful (salience +0.1, max 2.0). not_helpful = memory was irrelevant (salience -0.1, min 0.1). stale = information is outdated (salience floored at 0.3). wrong = information is incorrect (salience floored at 0.1).
capture_idYesThe capture ID from a recall/search result.

TDQS

A4/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 behavioral disclosure burden. It explains the feedback flywheel effect: "useful memories rise, unhelpful ones fade." The salience mechanics are already present in the parameter schema, so the description adds useful context without needing to repeat them. It could go further by stating irreversibility or persistence, but the current disclosure is solid.

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

Conciseness5/5

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

The description is three sentences with no waste. It front-loads the core purpose, then gives the signal mapping, then explains the flywheel effect and a critical caution. 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 100% schema coverage and the simple parameter set, the description is complete enough for an agent to invoke the tool correctly. It specifies when to call, what signals to use, and an important warning. Return value and error handling are not described, but they are not essential for this feedback action.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already fully documented. The description restates some signal meanings but does not add meaning beyond the schema. Baseline 3 is appropriate because the schema does the heavy lifting and the description does not conflict with it.

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 verb and object: "Record a quality signal for a recalled memory." It also enumerates the specific signal values, making the tool's purpose unambiguous. It does not explicitly distinguish this from sibling feedback-related tools such as record_outcome or correct, so it misses the top score for sibling 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 gives explicit timing guidance: "Call this AFTER using a recall result" and an explicit exclusion: "Do not call this for memories you have not actually used." It does not mention alternative tools or when another tool would be preferable, which prevents a 5.

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

forgetB

Delete specific memory entries. Use this tool only when the user requests a deletion. Do not auto-forget.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoThe ID of the capture to delete.
filterNo
formatNoThe response format. Use 'json' for structured data (e.g. benchmarks). Defaults to 'text'.text
reasonNoThe reason for rejection. Required when reject is true. The agent stores this with the tombstone.
rejectNoSet this to true to reject the capture instead of deleting it. The capture is marked as rejected with a reason, and the same content cannot be captured again. Use this when the memory is wrong, not just outdated.
confirmNoSet this to true to execute the deletion.

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits, but it fails to mention the confirm flag that gates execution or the reject mode that turns deletion into a non-destructive tombstone. The description simply says 'delete' without noting these important safeguards or behavioral nuances, leaving a significant transparency gap for a destructive 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 only two sentences, with the first front-loading the purpose and the second adding a critical usage boundary. There is no redundancy, fluff, or 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.

Completeness2/5

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

The tool has a complex schema with nested filters, a confirmation flag, and a reject mode, yet the description provides almost no context about these behaviors. It does not explain the confirmation workflow, the difference between reject and delete, or how filtering operates. For a potentially destructive tool with no annotations and no output schema, this is significantly under-specified.

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

Parameters3/5

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

The schema has 83% description coverage, so most parameters are already self-documenting. The description adds little beyond the schema: 'specific' hints at id/filter selection but does not clarify how to choose between id and filter, or how confirm and reject interact. This is a standard baseline score for high schema coverage.

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

Purpose4/5

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

The description states a specific verb and resource: 'Delete specific memory entries.' It is unambiguous and distinguishes the action from siblings like update or consolidate through the strong verb 'delete' and qualifier 'specific.' However, it does not explicitly mention alternative sibling tools, so it does not fully achieve the top score.

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

Usage Guidelines4/5

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

The description gives explicit when and when-not guidance: 'Use this tool only when the user requests a deletion' and 'Do not auto-forget.' This clearly sets the boundary for appropriate use. It does not name alternatives like update or reject, which the schema supports, so it stops short of full guidance.

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

handoffA

Write a structured handoff packet for the next agent session. Call this tool at the end of a session, or before you switch to a different agent. The next agent calls recall to load this packet and continue without re-reading files. This saves 60-85% of tokens compared to re-discovering context.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYesA one-line description of the task.
filesNoA list of files that matter for this task. Use the format: path:lines - reason.
statusYesThe current status of the task.
task_idNoThe task ID. Use this to isolate memory by a specific task. Link captures to a task for finer isolation.
team_idNoThe team ID. Use this to isolate memory by team. When set, all queries filter by this value.
user_idNoThe user ID. Use this to isolate memory by user within a team. When set with team_id, queries filter by both.
agent_idNoThe agent ID. Use this to isolate memory by agent role within a team. Defaults to the detected agent.
progressYesA summary of what has been done so far. Include the root cause if this is a bug fix.
decisionsNoA list of decisions made during this session. Include what was chosen and why.
next_stepsNoA list of next steps for the next agent. Order by priority.
session_keyNoThe session key. The default is hash(cwd).

TDQS

A4.2/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 discloses that the tool writes a packet and that recall loads it, and notes token savings. However, it does not mention whether calling it repeatedly overwrites an existing packet, any persistence details, or prerequisites. This is moderate transparency but leaves some behavioral aspects implicit.

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

Conciseness5/5

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

The description is three sentences, each earning its place: purpose, timing, and consequence. It is short, front-loaded, and contains no wasteful or repetitive 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?

For a tool with a rich schema and no output schema or annotations, the description is largely complete: it explains the tool's role and its relationship to recall. It could optionally mention the memory isolation fields or overwrite behavior, but given the high schema coverage, this is a minor gap.

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

Parameters3/5

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

The description itself contains no parameter information, but the input schema covers all 11 parameters with descriptions and enum definitions. Since schema coverage is 100%, the baseline score of 3 applies; the description adds no extra parameter semantics beyond what the schema already provides.

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 'Write a structured handoff packet for the next agent session' with a specific verb and resource. It distinguishes itself from sibling tools by explicitly connecting to 'recall' as the load counterpart, making its role unique.

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?

It explicitly says 'Call this tool at the end of a session, or before you switch to a different agent' and explains that the next agent 'calls recall to load this packet', providing a clear usage scenario and naming the alternative tool. This leaves no doubt about when to use it.

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

healthA

Diagnose memory server health: DB integrity, index status, capture count, schema version, embedding model.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/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 clearly lists what the health check covers, which exceeds a vague 'Use for health checks.' However, it does not explicitly state that the operation is read-only or describe any side effects, which would be valuable for a diagnostic tool.

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 entire description is a single, information-dense sentence with no wasted words. It front-loads the verb 'Diagnose' and immediately lists the key checks, making it easy to scan and understand.

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

Completeness4/5

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

For a health-check tool with no parameters and no output schema, the description covers the essential aspects: the checks performed. It lacks information about the return format or exit status, but given the tool's simplicity, this is a minor omission. The description is complete enough for most use cases.

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 the schema is trivially complete. The description does not need to explain parameters. The baseline of 4 is appropriate here, and the description adds no unnecessary information.

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 'Diagnose' with a clear object 'memory server health' and lists concrete aspects (DB integrity, index status, capture count, schema version, embedding model). This leaves no doubt about the tool's function and differentiates it from the sibling tools, which focus on other domains.

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 context is implied: the user would call this when they need to check the health of the memory server. However, there is no explicit mention of when to use this vs. alternatives, nor when not to use it. Given the tool's self-explanatory nature, this is adequate but not exemplary.

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

knowledge_createA

Register a knowledge asset (wiki or code-graph) for the team. The asset metadata is stored locally. The actual content is processed by an external knowledge service.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe asset name.
typeYesThe asset type.
branchNoThe repository branch (for code-graph).
summaryNoA short description.
team_idYesThe team ID.
repo_urlNoThe repository URL (for code-graph).
service_urlNoThe URL of the knowledge service (for example: http://localhost:8424/v3).

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does reveal a key non-obvious behavior: 'The asset metadata is stored locally. The actual content is processed by an external knowledge service.' However, it does not mention side effects, permissions, idempotency, or error behavior, leaving significant gaps for a create 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 two sentences, front-loaded with the core purpose, and every phrase adds value. It avoids redundancy and is appropriately concise for a registration tool.

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 7-parameter schema with full documentation and no output schema, the description conveys the essential distinction between local metadata and external content processing. However, it lacks critical context such as success/return behavior, whether the operation is idempotent, and how it relates to sibling tools like update or wiki_ingest, making it only minimally complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds minimal parameter meaning beyond the schema—it mentions the two asset types (already in the enum) and hints at the external service (relating to service_url), but does not clarify optional parameters like branch or repo_url.

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: 'Register a knowledge asset (wiki or code-graph) for the team.' It uses a specific verb ('register') with a defined resource ('knowledge asset') and narrows scope with the two types. This distinguishes it from sibling tools like knowledge_get, knowledge_list, and knowledge_delete.

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 gives useful context by explaining that metadata is stored locally while actual content is processed externally, implying this tool is for registration, not content ingestion. However, it does not explicitly state when to use this tool over alternatives like wiki_ingest or codegraph_index, nor does it mention exclusions or prerequisites.

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

knowledge_deleteB

Delete one or more knowledge assets by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
knowledge_idsYesThe knowledge asset IDs to delete.

TDQS

B3.4/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. It only states 'Delete...' without disclosing whether the deletion is permanent, reversible, or has side effects. For a destructive operation, this is a significant lack of 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, well-structured sentence with no redundant words. It front-loads the verb and resource, making it easy to parse quickly.

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

Completeness2/5

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

This is a destructive tool with no annotations and no output schema. The description fails to mention success/failure behavior, whether IDs must exist, or what happens on partial failures. An agent would lack critical expectations for invoking this tool.

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

Parameters3/5

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

The schema fully documents the only parameter (knowledge_ids) with type and description. The tool description adds no new semantic detail beyond 'by ID', which is already in the parameter name. Baseline 3 for 100% 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 clearly states the action ('Delete'), target ('knowledge assets'), and scope ('by ID', 'one or more'). It distinguishes this from sibling tools like knowledge_create, knowledge_get, and knowledge_list.

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 is implied by the verb 'Delete' and the resource, but there is no explicit guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. No mention of 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.

knowledge_getA

Get a single knowledge asset by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
knowledge_idYesThe knowledge asset ID.

TDQS

A3.6/5.0
Behavior2/5

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

Without annotations, the description carries full responsibility. It only states the basic get action and does not disclose what happens for missing IDs, authentication requirements, return format, or any side effects. This leaves significant 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 a single, direct sentence with no filler or redundancy. Every word contributes to conveying 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?

For a simple read operation with one fully documented parameter, the description gives enough to invoke the tool correctly. It could mention return behavior or error cases, but the tool's simplicity lowers the burden.

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

Parameters3/5

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

The input schema fully documents the sole parameter (knowledge_id), and the description adds nothing beyond repeating 'by ID'. Since schema coverage is 100%, the baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Get'), identifies the resource ('knowledge asset'), and specifies the scope ('single... by ID'). This clearly distinguishes it from knowledge_list and other sibling getters.

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 retrieving a single asset by ID, but gives no explicit guidance on when to use it versus alternatives like knowledge_list or skill_get. No exclusions or alternative tool mentions are provided.

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

knowledge_listB

List knowledge assets for a team. Optionally filter by type.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by type.
team_idYesThe team ID.

TDQS

B3.1/5.0
Behavior2/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, but it only states a generic list operation. It does not disclose return format, pagination, ordering, required permissions, or whether the list is limited to summaries versus full objects.

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 short sentences with no wasted words or repetition. It front-loads the main action and uses the second sentence to clarify the optional filter, making it highly concise and readable.

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 with two parameters, the description is minimally sufficient, but it lacks return value details and sibling differentiation. Without an output schema, it would benefit from noting the shape of the returned list and how this tool relates to codegraph_list or wiki_get.

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

Parameters3/5

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

The schema has 100% description coverage for both parameters, so the baseline is 3. The description adds only the word 'optionally' for the type filter, which is already implied by the schema's non-required status, and provides no additional semantic detail beyond the schema.

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

Purpose4/5

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

The description clearly states a specific action—'List knowledge assets for a team'—with an optional filter by type. It is easy to understand, but it does not explicitly differentiate itself from sibling listing tools like codegraph_list or skill_list, so it misses the top score.

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 gives no guidance on when to use this tool versus alternatives such as knowledge_get, skill_list, or codegraph_list. It only states what the tool does without any contextual recommendations, prerequisites, or exclusions.

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

persona_updateA

Update the L3 persona profile for this user/team. Call this when you notice a user preference or pattern (e.g., 'prefers concise output', 'works in Vietnamese', 'uses AZR project'). Persona is injected at SessionStart — every session gets it automatically in ~50 tokens. No LLM needed — you write the trait/value yourself.

ParametersJSON Schema
NameRequiredDescriptionDefault
traitYesThe trait name (e.g., 'language', 'output_style', 'project', 'timezone').
valueYesThe trait value (e.g., 'Vietnamese', 'concise', 'AZR', 'Asia/Ho_Chi_Minh').
task_idNoThe task ID. Use this to isolate memory by a specific task. Link captures to a task for finer isolation.
team_idNoThe team ID. Use this to isolate memory by team. When set, all queries filter by this value.
user_idNoThe user ID. Use this to isolate memory by user within a team. When set with team_id, queries filter by both.
agent_idNoThe agent ID. Use this to isolate memory by agent role within a team. Defaults to the detected agent.

TDQS

A4/5.0
Behavior4/5

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

There are no annotations, so the description carries the transparency burden. It adds valuable non-obvious behavior: the persona is injected at SessionStart, it costs roughly 50 tokens per session, and no LLM call is needed—the agent writes the trait/value directly. It does not mention overwrite semantics, permissions, or confirmation output, but it provides stronger behavioral context than a typical update tool.

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

Conciseness5/5

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

Two tight sentences front-load the action and trigger, then add only high-value operational details: automatic SessionStart injection, token impact, and no-LLM requirement. Nothing in the description is filler or redundant.

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 write-only utility with six schema-covered parameters, the description covers the when, the why, and the important side effect (automatic session injection). A brief note on confirmation or return behavior would make it fully complete, but the core invocation context is well covered.

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

Parameters3/5

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

The input schema already has 100% coverage with clear parameter descriptions, so the schema is doing the heavy lifting. The description's examples ('Vietnamese', 'concise', 'AZR') reinforce the trait/value semantics but add little new meaning. This is the standard '3' baseline for high schema coverage.

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 action and target: 'Update the L3 persona profile for this user/team.' Concrete examples ('prefers concise output', 'works in Vietnamese', 'uses AZR project') further clarify what the tool is for. It does not explicitly differentiate from sibling memory tools like capture or update, but the L3 persona resource is distinctive enough.

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 an explicit trigger: 'Call this when you notice a user preference or pattern.' The examples make the trigger concrete and actionable. It does not state when NOT to use the tool or name alternatives, so it stops short of full routing guidance.

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

recallA

Retrieve relevant past memory. Call this tool before you answer the user. Use it when the user references past work or when the task needs project context. Automatically searches both project memory and global cross-project memory (rules, learnings) when REMEM_GLOBAL_SESSION_KEY is configured.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoThe search mode.hybrid
typeNoFilter results by memory type. Use 'decision' to skip checkpoints/tasks, 'error' for past failures, etc.
limitNoThe maximum number of results.
queryYesA natural language query. The tool uses this text for the BM25 search and the vector search.
formatNoThe response format. Use 'json' for structured data (e.g. benchmarks). Defaults to 'text'.text
offsetNoThe pagination offset. Use this to get the next page of results.
task_idNoThe task ID. Use this to isolate memory by a specific task. Link captures to a task for finer isolation.
team_idNoThe team ID. Use this to isolate memory by team. When set, all queries filter by this value.
user_idNoThe user ID. Use this to isolate memory by user within a team. When set with team_id, queries filter by both.
agent_idNoThe agent ID. Use this to isolate memory by agent role within a team. Defaults to the detected agent.
max_tokensNoThe maximum number of tokens in the response. If the result exceeds this value, the tool truncates the text.
session_keyNoThe session key. The default is hash(cwd). Use this to recall memory from a different project.

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 discloses an important behavior: 'Automatically searches both project memory and global cross-project memory (rules, learnings) when REMEM_GLOBAL_SESSION_KEY is configured.' This goes beyond a simple retrieval statement and informs the agent of multi-source search. It does not detail side effects, but for a read-only retrieval tool, this is adequate.

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 exactly three sentences, each providing distinct value: purpose, usage timing, and scope of search. It is front-loaded with the core action and efficiently conveys necessary context without redundancy. No wasted words.

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

Completeness4/5

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

Given the tool has 12 parameters and no output schema, the description could have provided more about return behavior, but it does clarify the global memory feature and when to invoke it. The schema covers parameter details well, so the description complements rather than duplicates. It is reasonably complete for a retrieval tool, though it could hint at response format or pagination, which are covered by the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add any parameter semantics beyond what the schema already provides. It does not mention parameters like query, mode, or type, but the schema fully documents them. No extra value is added.

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

Purpose5/5

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

The description clearly states the verb and resource: 'Retrieve relevant past memory'. This is specific and distinguishes it from sibling tools like 'search' or 'related' by focusing on past memory retrieval. It also adds usage context ('Call this tool before you answer the user') that further clarifies 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 Guidelines4/5

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

The description explicitly states when to use the tool: 'Use it when the user references past work or when the task needs project context.' It also provides context about automatic searching across project and global memory. However, it does not mention when not to use it or suggest alternatives, 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.

record_outcomeA

Record whether a correction was heeded (agent followed the advice) or recurred (same error happened again). This tracks correction effectiveness over time. Call after applying a correction to a recalled memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
outcomeYes'heeded' = agent followed the correction. 'recurred' = same error repeated.
capture_idYesThe ID of the correction capture.

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 must carry the full transparency burden. It explains the semantic meaning of the two outcome values and that it records after a correction, but it does not disclose potential side effects, requirements (e.g., whether the correction capture must already exist), error behavior, or whether this is a persistent write. This is a moderate gap for a mutation tool, but the core behavior is reasonably described.

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

Conciseness5/5

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

The description is three short sentences, each earning its place. The first sentence states the core action, the second explains the broader purpose, and the third gives a clear usage instruction. It is front-loaded and free of 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 tool with only two parameters and no output schema, the description is quite complete: it explains what the tool does, what the outcomes mean, why to use it, and when to call it. It does not describe return values or error cases, but given the tool's simplicity and the full schema coverage, this is not a significant omission.

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

Parameters3/5

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

The input schema covers 100% of parameter descriptions, so the baseline is 3. The description adds no additional parameter-specific information beyond what the schema already provides (e.g., 'heeded' and 'recurred' are defined in both the schema and the description). Therefore, no extra value is contributed here.

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 starts with a specific verb+resource: 'Record whether a correction was heeded or recurred', making the tool's purpose unambiguous. It also explains the two outcomes ('agent followed the advice' vs 'same error happened again') and notes it 'tracks correction effectiveness over time', which clearly distinguishes it from sibling tools that apply corrections (e.g., correct, supersede) rather than record their outcomes.

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 explicit timing guidance: 'Call after applying a correction to a recalled memory.' It also implies the context of correction effectiveness tracking. While it does not name alternative tools or state when not to use it, the when-to-use instruction is clear and sufficient for this simple feedback-recording tool.

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

ref_readA

Read the raw tool output for a specific canvas node by node_id. Use this to drill down from the Mermaid canvas to the full output when you need details. Requires REMEM_OFFLOAD_ENABLED=true and pipeline=mermaid.

ParametersJSON Schema
NameRequiredDescriptionDefault
node_idYesThe node_id from the Mermaid canvas (e.g., '01M0FFZKQT540SVZPAZ4EZVE4G').

TDQS

A4.2/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 burden of behavioral disclosure. It discloses the critical precondition 'Requires REMEM_OFFLOAD_ENABLED=true and pipeline=mermaid', which goes beyond the schema. It could also mention failure behavior or output format, but the described read-only behavior is reasonably 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 two sentences with no filler. It front-loads the primary action, immediately states the use case, and finishes with the essential precondition. Every sentence contributes distinct value.

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 single-parameter read tool with no output schema and no annotations, the description covers action, use case, and preconditions. The return value is implied ('raw tool output', 'full output'), which is sufficient for this simplicity level. It could be improved with an explicit statement of what the response contains, but it is not a significant gap.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already provides a concrete example for node_id. The description reinforces the parameter's role but does not add meaningful detail beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly identifies the verb ('Read'), the resource ('raw tool output for a specific canvas node'), and the identifier ('node_id'). It also explains the relationship to the Mermaid canvas and the specifics of drilling down, distinguishing it from canvas-level operations.

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 explicitly states when to use the tool: 'drill down from the Mermaid canvas to the full output when you need details.' It does not explicitly enumerate alternatives or exclusion cases, but for a tool with this specificity, the usage context is clear and actionable.

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

resolveA

Resolve a conflict between two captures. Mark one as the winner and the other as stale. Call this tool when capture reports a conflict between two memories.

ParametersJSON Schema
NameRequiredDescriptionDefault
loserYesThe ID of the capture that is wrong or outdated. This capture is marked as stale.
reasonNoThe reason for the resolution. The agent stores this in the audit log.
winnerYesThe ID of the capture that is correct. This capture stays active.

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations, the description must carry the full burden of behavioral disclosure. It states the core effect (mark one winner, one stale), but does not mention irreversibility, permissions, audit logging, or other side effects. The reason parameter's audit log behavior is only in the schema, not the description. This is a significant gap for a mutation tool.

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

Conciseness4/5

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

The description is three sentences, front-loaded with the purpose, and lacks unnecessary filler. The second sentence about marking winner/stale clarifies the mechanism without being verbose. It earns a high score for conciseness and structure.

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 mutation tool with no output schema and 100% param coverage, the description plus schema provide a fairly complete picture: what it does, when to use it, and what happens to winner/loser. The lack of output schema doesn't matter. Minor ambiguity about 'capture reports a conflict' but it's understandable in context.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are well-documented. The description does not add any parameter-specific meaning beyond the schema, but it doesn't need to. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Resolve a conflict between two captures.' It identifies the specific action (resolve), the resource (captures), and distinguishes itself from siblings like update or consolidate by focusing on conflict resolution between two captures.

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 explicitly states when to call the tool: 'Call this tool when capture reports a conflict between two memories.' This provides clear context, but it does not mention alternatives or exclusion cases. Thus it meets the criteria for 'clear context, no exclusions'.

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

scenario_createA

Consolidate multiple L1 atoms into an L2 scenario summary. Call this when you have 5+ atoms about the same topic — it creates a high-signal summary that recall injects in ~100 tokens instead of 5+ individual atoms. No LLM needed — you write the summary yourself based on the atoms you've seen.

ParametersJSON Schema
NameRequiredDescriptionDefault
summaryYesA 1-3 sentence summary that captures the key insight from these atoms. Write it as a self-contained fact useful on its own.
task_idNoThe task ID. Use this to isolate memory by a specific task. Link captures to a task for finer isolation.
team_idNoThe team ID. Use this to isolate memory by team. When set, all queries filter by this value.
user_idNoThe user ID. Use this to isolate memory by user within a team. When set with team_id, queries filter by both.
agent_idNoThe agent ID. Use this to isolate memory by agent role within a team. Defaults to the detected agent.
atom_idsYesThe L1 atom IDs to consolidate (1-20).
persona_tagsNoOptional tags for categorization (e.g., ['database', 'migration']).

TDQS

A4.6/5.0
Behavior3/5

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

The description mentions that a summary is created and that recall will inject it later, implying a write operation. However, it does not disclose any side effects (e.g., overwriting, storage details) or whether the tool is read-only or mutating beyond 'creates'. Since no annotations are provided, the description carries the burden, but it remains incomplete regarding exact behavioral guarantees.

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, concise and well-organized. It covers the action, condition, benefit, and a critical behavioral note (user writes summary), with no redundant or ambiguous wording.

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 schema covers all inputs and the description explains when and how to use the tool, the overall context is complete. The lack of an output schema is acceptable as it's a creation tool, and the description does not need to explain return values. The mention of 'recall injects' provides integration context.

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 detailed descriptions for all parameters (100% coverage), including the purpose of atom_ids and summary, and the optional persona_tags. The description reinforces the usage context without contradicting the schema, ensuring parameter meanings are clear.

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 (consolidate), resource (L1 atoms into L2 scenario summary), and the condition (5+ atoms about the same topic). It also distinguishes the tool by mentioning the benefit over individual atoms and the lack of LLM dependency, making the purpose unmistakable.

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

Usage Guidelines5/5

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

Explicitly provides a usage condition ('Call this when you have 5+ atoms') and clarifies that the user writes the summary themselves rather than expecting LLM generation. This directly guides when and how to invoke the tool.

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

session_checkpointA

Create a checkpoint of the current session state. Returns a checkpoint ID that can be used to resume later. Stores recent captures as a named snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCheckpoint name for easy reference.
summaryNoWhat was happening at this checkpoint.

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 burden of disclosing behavior. It states the tool creates a checkpoint, returns an ID, and stores recent captures as a snapshot, which is useful. However, it does not mention side effects, overwrite behavior, persistence details, or whether existing checkpoints with the same name are affected.

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 primary action, and contains no filler. Every clause adds relevant information about purpose, return value, or storage behavior.

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 two-parameter tool with no output schema, the description covers the core purpose, the return value, and the persistence behavior. It could be more complete by explaining what happens on name collision or how the checkpoint is resumed, but the essential context is present.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds minimal semantic value beyond the schema, only reinforcing that the checkpoint is a named snapshot. It does not elaborate on how the summary parameter is used or how the name relates to the returned ID.

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 creates a checkpoint of the current session state, returns a checkpoint ID, and stores recent captures as a named snapshot. This specific verb+resource framing distinguishes it from sibling tools like capture or session_start.

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

Usage Guidelines3/5

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

The description implies usage by mentioning the checkpoint ID can be used to resume later, but it does not explicitly state when to use this tool versus alternatives like capture, consolidate, or session_end. No exclusions or alternative recommendations are provided.

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

session_endA

Close a session and optionally capture a summary. Call this at the end of a conversation to record what was accomplished.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTags for the summary capture.
summaryNoSession summary to capture as a memory.

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 burden of explaining behavior. It discloses that the session is closed and that a summary can be captured as a memory, which covers the main side effects. However, it does not clarify whether closing is irreversible, what happens to the session record, or how the summary memory is stored or retrieved.

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

Conciseness5/5

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

Two short sentences front-load the primary purpose and usage timing. Every word earns its place; no redundancy or filler exists.

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 zero required parameters, no output schema, and 100% schema parameter coverage, the description adequately explains the core behavior and invocation time. It could mention that the session should not be used afterward, but this is not a significant gap given the sibling context and tool simplicity.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents 'tags' and 'summary' with meaningful descriptions. The tool description does not add further parameter-level detail, such as expected tag formats or relationships between the two parameters, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Close a session') and identifies the resource and optional action ('capture a summary'). This clearly distinguishes it from siblings like session_start and session_checkpoint.

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 explicitly states when to call it: 'at the end of a conversation to record what was accomplished.' It does not explicitly discuss alternatives or when not to use it, but the timing guidance is clear and sufficient for a simple closure tool.

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

session_startA

Open a session and return recent context. Call this at the start of a multi-turn conversation to get a summary of recent captures and correction alignment metrics. Returns both project-specific and global cross-project memory when configured.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_keyNoSession identifier. Default is hash(cwd).
context_queryNoOptional query to fetch relevant context for this session.

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 must disclose behavioral traits. It mentions what it returns (recent context, summary, metrics, memory) and the conditional nature of global memory. However, it does not clarify whether opening a session has side effects (e.g., creating a server-side resource, mutating state) or if it is a read-only operation. This leaves some ambiguity about safety and repeatability, though nothing contradicts known behavior.

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

Conciseness5/5

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

The description is two concise sentences that are front-loaded with the primary purpose and usage context. Every sentence contributes: the first states the action and result, the second provides usage guidance and return specifics. No filler or redundant information, making it highly scannable.

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 (2 optional params, no output schema, no annotations), the description covers the essential aspects: what it does, when to use it, and what it returns. It notes the conditional global memory. It does not detail error scenarios or side effects, but for a session start tool, this level of detail is largely adequate. A more explicit note on whether it is safe to call multiple times would push it to 5.

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

Parameters3/5

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

Schema coverage is 100%, with both session_key and context_query well-described in the schema. The tool description adds no additional semantic detail about these parameters, but the baseline for high schema coverage is 3. The description's mention of 'recent context' and 'summary' indirectly relates to context_query but does not elaborate on its usage 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: 'Open a session and return recent context.' It specifies the verb 'open' and the resource 'session', and further details the return value ('summary of recent captures and correction alignment metrics'). This distinguishes it from sibling tools like session_checkpoint and session_end, which likely serve different phases of a conversation.

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 explicitly says 'Call this at the start of a multi-turn conversation', providing clear context for when to use it. It also mentions the return of project-specific and global memory 'when configured', which hints at conditional behavior. However, it does not explicitly contrast with alternatives (e.g., session_checkpoint) or state when not to use it, but the 'start' directive is sufficient for most scenarios.

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

skill_archiveA

Archive a skill — forces it to always be injected into recall, even when the query doesn't strongly match. Use this for critical SOPs that must always be available.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe skill ID to archive.

TDQS

A3.8/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 behavioral consequence (always injected into recall) and the condition under which this matters (weak query match). However, it does not address reversibility, permissions, or side effects on recall behavior beyond the stated injection.

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

Conciseness5/5

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

The description is two sentences with no filler. The action is front-loaded, the behavioral nuance is explained efficiently, and the intended use case is stated in a single clause.

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 single-parameter tool with no output schema and no nested objects, the description is largely complete: it explains the action, the effect, and the appropriate usage scenario. A note about reversibility or success/error behavior would improve it, but the current coverage is adequate.

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

Parameters3/5

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

The schema already provides 100% coverage of the only parameter, 'id', with a clear description. The tool description adds no extra parameter semantics beyond the same concept, so a baseline score of 3 is appropriate.

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?

States a specific action and resource ('Archive a skill') and immediately clarifies the operational effect: it forces the skill to always be injected into recall even on weak query matches. This distinguishes it conceptually from the sibling skill_* tools, though it does not explicitly name an alternative.

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 target use case: 'critical SOPs that must always be available.' This tells the agent when to use the tool, but it does not provide exclusions or explicitly compare against alternatives such as normal recall or search, so it stops 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.

skill_createA

Create a reusable skill (SOP) from a successful task or conversation. Skills are injected into recall when matching trigger conditions are met. Use this after completing a non-trivial task to capture the workflow for reuse.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesShort name for the skill (e.g., 'deploy-to-vercel').
stepsNoOrdered execution steps.
contentYesFull SOP content in markdown. Include steps, commands, and validation.
task_idNoThe task ID. Use this to isolate memory by a specific task. Link captures to a task for finer isolation.
team_idNoThe team ID. Use this to isolate memory by team. When set, all queries filter by this value.
user_idNoThe user ID. Use this to isolate memory by user within a team. When set with team_id, queries filter by both.
agent_idNoThe agent ID. Use this to isolate memory by agent role within a team. Defaults to the detected agent.
descriptionNoOne-line description of what the skill does.
validation_rulesNoHow to verify the skill succeeded (e.g., ['curl returns 200', 'no errors in logs']).
source_capture_idsNoCapture IDs that this skill was extracted from (for traceability).
trigger_conditionsNoKeywords or patterns that trigger this skill (e.g., ['deploy', 'vercel', 'production']).

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 adds one meaningful behavioral trait: 'Skills are injected into recall when matching trigger conditions are met.' However, it does not disclose side effects such as overwriting an existing skill, permissions, or what the create response looks like, leaving some opacity for a persistent 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?

Three short sentences, each earning its place: the first defines the action, the second explains the recall behavior, and the third gives the usage trigger. It is front-loaded with the core purpose and contains no 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 an 11-parameter create tool with no annotations and no output schema, the description provides enough context for an agent to select the tool and understand its role in the skill/recall ecosystem. It does not describe the return value or conflict behavior, but the schema fully documents parameters, so the gap is not critical.

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

Parameters3/5

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

The input schema covers all 11 parameters with descriptions (100% coverage), so the baseline is 3. The description adds no per-parameter semantics beyond an implicit nod to trigger conditions, but because the schema is thorough, no compensation is needed.

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?

States a specific verb and resource: 'Create a reusable skill (SOP)' and adds source context 'from a successful task or conversation.' The parenthetical SOP clarifies the object type and distinguishes it from knowledge-related siblings, while the create action clearly separates it from skill_get, skill_list, skill_search, and skill_archive.

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?

Provides an explicit trigger condition: 'Use this after completing a non-trivial task to capture the workflow for reuse.' This gives the agent a clear when-to-use signal, though it does not name alternatives or explicitly state when not to use it, so it stops short of full exclusion guidance.

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

skill_getA

Get a single skill by ID, including its full content and version.

ParametersJSON Schema
NameRequiredDescriptionDefault
skill_idYesThe skill ID.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the burden of disclosing behavior. It explicitly states that the response includes full content and version, providing useful behavioral context for a read operation. While it omits error handling and auth details, the 'get' verb inherently signals a read, and the description adds meaningful return behavior.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or redundancy. Every word earns its place, making it highly concise and well-structured.

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 simple getter, the description is complete: it names the resource, the parameter is fully defined in the schema, and it explains the return payload (full content and version), which is important since there is no output schema. No critical gaps remain.

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

Parameters3/5

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

The schema provides 100% coverage for skill_id with a clear description, so the baseline is 3. The description's phrase 'by ID' merely restates the schema and adds no new 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 uses a specific verb ('get') and resource ('a single skill by ID'), clearly distinguishing it from sibling tools like skill_list and skill_search by emphasizing single-item retrieval by ID. The addition of 'including its full content and version' further clarifies the scope.

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 when you have a specific skill ID and need full content/version, but it does not explicitly mention when to use alternative tools like skill_search or skill_list, nor does it state exclusions. Guidance is present only by implication.

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

skill_listA

List skills bound to a team. Optionally filter by agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idYesThe team ID.
agent_idNoFilter by agent ID. When set, returns agent-specific and team-global skills.

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries full burden for behavioral disclosure. It implies a read-only list operation, which is inherently safe, but it doesn't disclose additional traits such as pagination, ordering, or permission requirements. The agent_id schema description adds some context (returns agent-specific and team-global skills), but the main description remains sparse.

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 sentence of ten words, highly concise and front-loaded with the core purpose. Every word earns its place, and there is no excess or 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?

For a simple list tool with two well-documented parameters and no output schema, the description is adequate for selection and invocation. It could mention the return format, but for a list operation the expected output (array of skills) is obvious. Overall, it provides enough context for an agent to use it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are fully documented in the schema. The description's mention of 'optionally filter by agent' adds no new meaning beyond the schema. Since the schema already explains the parameters, a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function: listing skills bound to a team. It uses a specific verb ('list') and resource ('skills'), and distinguishes itself from sibling tools like skill_get and skill_search by specifying the team-scoping and optional agent filter.

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

Usage Guidelines4/5

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

The description provides clear context: use this tool to list skills associated with a team, optionally filtered by agent. It doesn't explicitly mention alternatives or exclusions, but the scope is clear enough for an agent to decide when to use it.

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

statsA

Query memory statistics: total captures, breakdown by type, top tags, session count, date range, and database size. Use this to understand memory health and coverage. No arguments needed — returns a summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_keyNoFilter stats to a specific session. Default is hash(cwd). Use 'all' for all projects.

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral transparency burden. It communicates that this is a read-only summary operation ('Query', 'returns a summary') and lists the information it provides, but it does not explicitly state side-effect-free behavior, output format, or implications of the optional session_key filter beyond the schema.

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 core verb and resource, and each sentence adds value: one defines the output contents and the other frames the use case. There is no redundancy or unnecessary detail.

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, full schema coverage, and no output schema, the description provides enough information to understand purpose, usage, and returned summary contents. It could be more complete by elaborating on the summary format or explicitly noting that an argument can scope the results, but it is not materially incomplete.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds the phrase 'No arguments needed,' which matches the optional parameter design but may slightly understate the session_key filtering capability. It does not meaningfully enrich the schema's own parameter description.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Query memory statistics' and enumerates specific outputs including total captures, breakdown by type, top tags, session count, date range, and database size. This is specific enough to distinguish from sibling tools like health or recall, which suggest broader or different functionality.

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

Usage Guidelines4/5

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

The description provides clear context: 'Use this to understand memory health and coverage' and notes that 'No arguments needed — returns a summary.' It does not explicitly name alternatives or exclusion criteria, but the use case is well framed for an optional-parameter statistics tool.

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

supersedeA

Mark an old memory as superseded by a newer one. The old memory's superseded_by field is set, and it will be filtered out of search results (unless explicitly requested). Use when a fact has changed (e.g. 'database is MySQL' → 'database is PostgreSQL').

ParametersJSON Schema
NameRequiredDescriptionDefault
new_idYesThe ID of the new/replacement capture.
old_idYesThe ID of the old/outdated capture.

TDQS

A4.2/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 behavioral burden. It discloses the key side effect: the old memory's superseded_by field is set and it 'will be filtered out of search results (unless explicitly requested).' This tells the agent that the old memory is retained but hidden, which is meaningful behavioral context beyond the schema.

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 action, includes a brief parenthetical about search filtering, and ends with a clarifying example. Every sentence contributes useful information 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 two-parameter tool with no annotations and no output schema, the description covers purpose, side effects, behavior in search results, and when to use it. It could add edge-case details like validation of IDs or reversibility, but these are not essential for the tool's core operation.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description reinforces which ID is old versus new through its wording and example, but it does not add substantial per-parameter detail beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the specific action: 'Mark an old memory as superseded by a newer one,' naming the exact resource (memory) and the mechanism (setting superseded_by). It also provides a concrete example ('database is MySQL' → 'database is PostgreSQL') and distinguishes this from sibling tools like forget or update by emphasizing the old/new relationship.

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 an explicit usage trigger: 'Use when a fact has changed,' with an illustrative example. It does not explicitly name alternatives or state when not to use this tool, so it stops short of a full 5, but the context is clear and actionable.

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

updateA

Update an existing memory entry. Use this when a capture needs corrections (wrong info, missing tags, needs rewording). Preserves the original ID and created_at.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the capture to update.
tagsNoThe new tags. Replaces existing tags entirely.
typeNoThe new type. If omitted, the original type is kept.
contentNoThe new content. If omitted, the original content is kept.
verifiedNoSet to true to mark as verified.

TDQS

A4/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 discloses a key behavioral trait: 'Preserves the original ID and created_at,' which is valuable information beyond the schema. However, it does not mention other behavioral aspects like irreversibility, permissions, or side effects on related data, which would be helpful for a mutation tool.

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

Conciseness5/5

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

The description is concise and well-structured: two sentences that immediately state the action, provide usage guidance, and add a clarifying behavioral note. Every word earns its place, and the front-loaded structure makes the primary purpose clear at a glance.

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 moderate complexity (5 parameters, no output schema, no annotations), the description covers the essential context: what it does, when to use it, and a key preservation behavior. It could mention return values or error cases, but for a simple update operation on a memory entry, the description is sufficiently complete.

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

Parameters3/5

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

The input schema covers 100% of parameters with descriptions, so the baseline is 3. The description adds little beyond the schema: it mentions 'missing tags' and 'rewording,' which loosely map to the tags and content parameters, but the schema already explains them. No additional parameter-level nuance is provided.

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

Purpose5/5

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

The description clearly states the verb and resource: 'Update an existing memory entry.' It also specifies the purpose with concrete examples ('wrong info, missing tags, needs rewording'), distinguishing it from creation tools like capture. The added note about preserving ID and created_at reinforces its scope.

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 explicitly tells when to use the tool: 'Use this when a capture needs corrections.' This provides clear context, though it does not explicitly name alternative tools or state when not to use it. It implies that for new captures, you would use capture rather than update.

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

wiki_getA

Get a wiki page by ID, including its links and backlinks. Use this to read a specific page and see what it links to and what links to it.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesThe page ID (from wiki_search).

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses that this is a read operation ('read a specific page') and what is returned ('links and backlinks'), but doesn't address error cases, authentication, or response structure. This 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?

Two concise sentences that front-load the core purpose and add a usage note. Every word 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?

For a single-parameter, no-output-schema read tool, the description covers purpose, usage, and key return aspects. It could be more detailed about failure behavior, but overall it's sufficiently complete for straightforward invocation.

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

Parameters3/5

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

Schema coverage is 100% and the page_id description already explains its provenance ('from wiki_search'). The description's 'by ID' reinforces but doesn't add much beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

The description clearly states a specific action ('Get a wiki page by ID') and adds scope ('including its links and backlinks'), distinguishing it from sibling tools like wiki_search and wiki_outdated.

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 second sentence provides explicit usage context ('Use this to read a specific page and see what it links to and what links to it'), but it doesn't mention when to avoid this tool or explicitly name alternatives, though the schema's reference to wiki_search implies a prerequisite.

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

wiki_ingestA

Ingest markdown documentation files into the wiki. Parses frontmatter, headings, [[wikilinks]], and text links to build a structured page graph. Supports .md and .markdown files.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesThe file or directory path to ingest. For directories, all .md files are indexed recursively.
team_idNoThe team ID for isolation.
max_filesNoMaximum number of files to ingest (for directory mode).
repo_pathNoThe root path for computing relative file paths. Defaults to the path argument.

TDQS

A3.9/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 the parsing behavior and supported file types, but lacks critical side-effect information such as whether ingestion overwrites/merges existing pages, requires specific permissions, or is destructive. This is a significant gap 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 two concise, front-loaded sentences. It immediately states the primary action and then adds valuable detail about parsing and supported file types, with no unnecessary words.

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

Completeness3/5

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

The description covers the core functionality and parsing details but omits what the tool returns or how it affects existing data. With no output schema and no annotations, the description should explain the outcome and potential side effects for an ingest tool, which it does not.

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 already covers all parameters with 100% description coverage, so the description's additions are modest. However, it explicitly states that only .md and .markdown files are supported, which is not present in the schema and clarifies a constraint on the path 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 ingests markdown files into the wiki and details the parsing process (frontmatter, headings, wikilinks, links). This specific verb+resource combination effectively distinguishes it from sibling read tools like wiki_search and wiki_get.

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 the tool is for adding markdown documentation but does not explicitly specify when to use it over alternatives like update or capture. There is no explicit when-not-to-use guidance or mention of exclusions.

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

wiki_outdatedA

Find wiki pages whose source file has changed since the last ingest. Returns pages that need re-ingesting because the source markdown was modified or deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idNoThe team ID for isolation.
repo_pathYesThe root path to check for source files.

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 transparency burden. It discloses that the tool returns pages needing re-ingestion and that it reacts to source file modification/deletion, implying a read-only operation. However, it does not describe the return format, team_id isolation behavior, or any side effects.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded with the action and scope. Every word earns its place, with no redundancy.

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

Completeness3/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 no output schema. The description explains the purpose and trigger but leaves the return structure vague ('pages' could mean paths, IDs, etc.). It does not mention prerequisites like having run wiki_ingest, but this is likely implicit.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds no parameter-specific details beyond the schema's own descriptions of repo_path and team_id, which are already clear.

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 ('find'), resource ('wiki pages'), and scope ('whose source file has changed since the last ingest'). It clearly distinguishes from sibling tools like wiki_ingest (which performs the ingest) and wiki_search (which searches content).

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 implies the use case: identifying wiki pages that need re-ingesting after source changes. It provides clear context but does not explicitly mention alternatives or when not to use the tool.

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

TDQS

B3.4/5.0
Disambiguation4/5

Most tools have clearly distinct purposes, even when names overlap conceptually (e.g., 'recall' vs 'search' vs 'related' each serve different retrieval needs). A few pairs like 'update' and 'correct' could be confused, but their descriptions clarify distinct actions. Overall, confusion is unlikely despite the large set.

Naming Consistency2/5

Tool naming is highly inconsistent, mixing single-word verbs ('resolve', 'capture', 'stats') with prefixed terms ('wiki_search', 'knowledge_get', 'codegraph_index') and acronyms ('adr'). While some groups follow a pattern (e.g., 'knowledge_*', 'codegraph_*'), the overall scheme is unpredictable. This makes it difficult to guess tool names.

Tool Count1/5

With 38 tools, this server far exceeds the typical 3-15 range and crosses the 'too many' threshold (25+). Many tools are highly specialized (e.g., 'record_outcome', 'correction_kpis', 'session_checkpoint') and could be consolidated. The sheer number overwhelms an agent and complicates tool discovery.

Completeness4/5

The tool set covers a broad range of memory lifecycle operations (create, read, update, delete, search, correction) and extends to wiki, codegraph, knowledge, and skills. However, there is no explicit 'list memories' tool, and some domains (e.g., wiki, skills) lack update/delete capabilities. Overall, coverage is comprehensive but not perfectly complete.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    A local-first MCP server that gives AI coding agents persistent memory and controlled commands. Features a git-backed markdown knowledge vault with FTS5 search, surgical section edits, token-aware context budgeting, and a sandboxed command engine with human approval gates. Works with Claude Code, Cursor, Copilot, Gemini, and more.
    53
    10
    1
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    Local-first MCP server that gives any AI coding agent per-project memory, workflow intelligence, and always-on, lossless token & context optimization.
    37
    18
    3
    MIT

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tinhien11/remem-mcp'

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