AI Dimag
OfficialThis server provides a memory system for AI coding agents to persistently store, search, verify, and enforce codebase knowledge. Key capabilities include:
Memory Search & Retrieval
memory_search— Find memories by keyword, kind (DECISION, CONVENTION, GOTCHA, etc.), verification status, or file paths.memory_get_for_files— Retrieve relevant memories for specific files before editing.memory_status— Summary of memory store counts by status and kind.
Memory Writing & Proposals
memory_write— Persist a falsifiable claim with optional evidence (TEST_RESULT, COMMIT_REF, STATIC_CHECK, etc.).memory_propose— Queue a memory for human review, ideal for inferred knowledge.memory_refute— Mark a memory as REFUTED when no longer true, optionally linking a superseding memory.context_note— Immediately capture a user-stated fact with HIGH trust (HUMAN_ATTESTED).
Verification & Critique
memory_verify— Re-run evidence checks to update verification statuses and flag stale beliefs.memory_critique— Review planned/completed work against verified memories and guardrails to catch conflicts.
Session Scratchpad
scratchpad_write,scratchpad_read,scratchpad_clear— Manage short-term working notes that auto-expire and are never synced.
Harvesting & Mining
chat_harvest— Extract durable facts from the current chat's user messages, queue for review (with secret redaction).commits_mine— Scan git history for memory-worthy candidates and queue as proposals.
Proposals & Knowledge Inbox
proposals_pending— List memory proposals awaiting human review.knowledge_pending— List documents pending summarization into memory proposals.knowledge_ingest_submit— Submit extracted claims from a pending document as proposals.
Ticketing
ticket_get— Fetch current work ticket (title, description, type) auto-detected from branch.
Help
aidimag_help— Show available tools, prompts, and CLI commands.
Registers as a native memory provider for the Hermes agent, injecting session briefings into the system prompt, prefetching recall per turn, and turning session learnings into review-queue proposals.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AI Dimagsearch memory for our API versioning strategy"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AI Dimag — Verified Memory for AI Coding Agents
Your coding agent forgets your codebase. AIDimag doesn't.
Documentation • Why AIDimag? • Getting Started • Use Cases • Benchmarks • AI Dimag Cloud • Pricing
What is AI Dimag?
AI Dimag is a memory system for software engineering — not a general-purpose "AI memory" app. It gives any MCP-compatible agent (Claude, Cursor, Copilot, Windsurf…) a persistent memory of your codebase that survives across sessions — decisions, conventions, gotchas, failed approaches, guardrails, and reusable skills — stored as falsifiable claims with grounding evidence in .aidimag/ next to your code.
The subject of memory is your repository, not your preferences or chat history. Every capability — evidence, git-hook verification, guardrails, pre-commit checks, path-scoped recall, session scratchpad — exists to serve day-to-day development work.
The Difference: Claim-and-Verify, Not Store-and-Retrieve
Most memory systems store text and retrieve whatever is similar later — a stored fact is assumed true forever. That's dangerous in a codebase, where a confidently-retrieved stale fact is worse than no memory at all.
Every AI Dimag memory carries evidence (a shell check, an anchored commit, a test) that dim verify re-runs against the current repo — automatically, via git hooks, on every pull, checkout, and rebase. Beliefs that stop being true go STALE instead of silently misleading your AI.
Works with Every AI Tool
MCP tools (Claude, Cursor, etc.) get real-time memory via the MCP server
Non-MCP tools (Copilot, Windsurf, etc.) get static context files (
.cursorrules,CLAUDE.md,AGENTS.md, etc.)
Related MCP server: apex-memory
Install
npm install -g aidimagRequires Node 22+. Ships two equivalent binaries: dim (short) and aidimag.
Quick Start
cd your-repo
dim init # creates .aidimag/, installs additive git hooks
dim bootstrap # optional: LLM-survey the repo into a starter memory set
dim review # approve what enters memory (nothing is stored unreviewed)
dim remember "All DB access goes through src/db/store.ts" -k INVARIANT -p src \
-e "STATIC_CHECK:! grep -rl better-sqlite3 src --include=*.ts | grep -v store.ts"
dim recall db access
dim verify # re-run all evidence; stale beliefs get flagged
dim brief # session-start briefing: in-scope memory, guardrails, gaps
# For non-MCP tools (Copilot, Cursor without MCP, etc.):
dim generate-context --format all --auto # creates .cursorrules, CLAUDE.md, AGENTS.md, etc.One-command setup
dim setup --yes # init + git hooks + MCP configs for detected agents + context files
dim setup-ollama # install Ollama + pull a free local embedding model for semantic search
dim doctor # verify everything is wired correctlyConnect to Your AI Agent (MCP)
Add to your agent config (e.g. .mcp.json for Claude Code):
{
"mcpServers": {
"aidimag": {
"command": "npx",
"args": ["-y", "aidimag", "mcp"],
"env": { "AIDIMAG_REPO": "/path/to/your/repo" }
}
}
}MCP Tools get memory_search, memory_propose, context_note (live in-chat fact capture), chat_harvest (live, tool-agnostic session harvesting with server-side secret redaction), memory_critique (a second critic grounded in verified memory), session-start briefings, session-end extraction, and more.
Non-MCP Tools: dim generate-context -f all renders verified memory into .cursorrules, CLAUDE.md, AGENTS.md, .windsurfrules, and .github/copilot-instructions.md (--auto keeps them refreshed).
Hermes Agent: dim hermes install registers aidimag as a native Hermes memory provider — one command, no pip, no venv. A single stdlib-only Python bridge delegates to the MCP server: session briefings are injected into the system prompt, recall is prefetched per turn, and session learnings become review-queue proposals (never silent writes). Then: hermes config set memory.provider aidimag.
Key Features
Human-Gated Capture
Commits, PRs, AI-chat transcripts (Claude Code, Codex, Copilot, Cursor), and pasted docs are mined into proposals. Nothing enters memory until you approve it in dim review (auto-triaged best-first, approve all --min-score 0.7 for batches).
Verification Lifecycle
STATIC_CHECK / COMMIT_REF / TEST_RESULT / EXEC_TRACE / HUMAN_ATTESTED evidence. Failing evidence flips memories to STALE and auto-drafts a recovery proposal. Confidence decays without re-confirmation.
Evidence Trust Gate
Shell-command evidence that arrives via team sync is never executed until you inspect and approve it (dim verify --trust).
Hybrid Semantic Recall
FTS5 keyword + vector KNN (OpenAI, local Ollama, or AWS Bedrock; auto-detected except Bedrock, which is explicit opt-in; works keyword-only with none).
Guardrails & Skills
Behavioral rules (never / ask-first / always) and step-by-step procedures, enforced by dim check (pre-commit) and memory_critique.
Team Mode, Self-Hosted
dim serve + dim sync: local-first replicas, device-code login, brain-scoped API keys, hashed credentials, cross-machine verification consensus.
Knowledgebase Inbox
Drop design docs / ADRs / PDFs / DOCX into knowledge/ and they're summarized into reviewed, pinned memories.
Scratchpad & Provenance Audit
dim scratch (and the scratchpad_* MCP tools) hold short-term session notes — TTL-expiring, never synced, never durable memory. dim audit lists memories resting on the weakest ground (agent-authored, evidence-free, stale, or long-unverified) so you can fix them up like a dependency audit for your repo's knowledge.
Web Dashboard & Extensions
dim ui — run checks, session briefings, bootstrap, harvest, and context generation from the browser — plus VS Code and IntelliJ extensions.
Ticketing Integration
Commits tell you what changed; tickets hold the why. aiDimag connects to your ticketing system so that context flows into your memory — ticket titles, types, and statuses appear next to mined proposals during dim review, and agents can fetch tickets via the ticket_get MCP tool.
Supported providers
Jira, GitHub Issues, Linear, GitLab Issues, Azure DevOps, ClickUp, Shortcut, YouTrack, Asana, Trello, Notion, Pivotal Tracker, a custom HTTP middleware, or Remote (team sync server — zero local credentials).
Quick start
# Connect a provider (interactive)
dim ticket connect
# Check status
dim ticket status
# View a specific ticket
dim ticket show XXX-2100
# Share credentials with your team (admin)
dim ticket sharePer-repo credential storage
Ticket credentials are stored per-repo in .aidimag/config.json under tickets.token (with file mode 0o600), matching the same pattern as cloud sync tokens. Credentials never leak between projects. You can also set the AIDIMAG_TICKET_TOKEN environment variable, which takes precedence over the config file.
Team-shared tickets (Remote provider)
One admin shares their ticket credential via the sync server (dim ticket share). Team members select "Remote (team sync server)" as their provider — they resolve tickets through the server and hold zero ticket credentials locally. When a cloud server is linked, the dashboard auto-discovers the team's ticket provider and shows a "Connect now" button.
Branch conventions
Define a branch-naming convention and have aiDimag warn or block on violations:
dim ticket branch-rule # manage the convention
dim branch XXX-2100 # create a conforming branch (fetches title for slug)Enforcement | Effect |
| No checking |
| Heads-up at branch creation ( |
| Blocks pushing non-conforming branches ( |
Full guide: Connecting tickets
How It Compares
AI Dimag follows a claim-and-verify model; other memory systems follow store-and-retrieve. The short version:
Conversational memory layers | Vector-store memory plugins | Hand-maintained context files | AI Dimag | |
Built for | Chat assistants remembering users | General recall over embedded text | Static instructions for coding agents | Coding agents in a living repo |
Unit of memory | Extracted facts / chat summaries | Embedded text chunks | Prose | Falsifiable, typed claims with evidence |
How memory gets in | Automatic capture | Automatic embedding | Manual edits | Human-gated review queue |
When the code changes | Nothing — stored facts stay "true" | Nothing | File silently rots | Evidence re-runs via git hooks; broken claims flip STALE |
Trust model | Write-time label, never re-checked | Similarity ≈ trust | "It's in the file" | Verification status + decaying confidence; trust-ranked retrieval |
Enforcement | None — injection only | None | Hope the model reads it | Guardrails + pre-commit |
Failure mode | Confidently recalls outdated facts | Retrieves similar, true or not | Instructions drift from reality | Says "this went STALE" instead of guessing |
Full comparison: aidimag.com/comparison
vs. named tools
How aiDimag relates to the memory tools people usually ask about. These solve a different problem (remembering users and conversations); aiDimag remembers your repository and proves its memories are still true:
aiDimag | Mnemosyne | mem0 | Letta | Honcho | SuperMemory | Hindsight | ChromaDB | |
Subject of memory | Your codebase | Chat/agent sessions | User & agent facts | Agent's own context | User/peer reasoning | Personal + agent | Agent memory | — (vector DB) |
Local-first | ✅ SQLite per repo | ✅ SQLite | ⚠️ Hybrid | ❌ Docker+PG | ⚠️ PG+worker | ❌ SaaS | ✅ SQLite | ✅ Embedded |
MCP server | ✅ Built-in | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ |
Verifies memories against code | ✅ Evidence re-runs via git hooks | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Human-gated writes | ✅ Review queue | ❌ Auto-capture | ❌ Auto | ❌ | ❌ | ❌ | ❌ | — |
Enforcement | ✅ Guardrails + pre-commit + critique | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Open source | ✅ MIT | ✅ MIT | ✅ Apache 2.0 | ✅ Apache 2.0 | ⚠️ AGPL | ❌ Proprietary | ✅ MIT | ✅ Apache 2.0 |
Published benchmark | Own suite: 100% staleness detection, 0% FP | BEAM 65.2% / LongMemEval 98.9% R@All@5 (self-reported) | LoCoMo | LoCoMo 83.2% | LongMemEval 90.4% | MemoryBench 85.2% | BEAM 73.4% / LongMemEval 94.6% | — |
Chat-memory benchmarks (LoCoMo, LongMemEval, BEAM) score recall over conversation histories, so they don't apply to aiDimag — its memory subject is the repo. Instead aiDimag publishes its own reproducible suite (below), including the metric none of the chat benchmarks measure: does memory notice when the code changes?
Benchmarks
Reproducible performance and quality suites live in benchmark/
(npm run bench, npm run bench:quality). Headline results (Apple M4, Node 24,
10,000-memory brain — full tables at aidimag.com/benchmarks):
Metric | Result |
FTS keyword search | 1.45ms p50 |
Vector KNN (768-dim, sqlite-vec) | 4.15ms p50 |
Memory writes (transactional, incl. FTS + event log) | ~5,400/s |
CLI cold start ( | ~41ms p50 |
Staleness detection (broken claims → STALE, real git fixture) | 100% (4/4) |
False positives (intact claims wrongly flagged) | 0% (0/4) |
Retrieval, keyword queries (Recall@1 / MRR, FTS-only) | 1.00 / 1.00 |
Retrieval, paraphrase queries (FTS-only; hybrid closes this gap) | 0.25 / 0.27 |
Documentation
Getting Started
Overview
Guides
Full documentation: aidimag.com
Contributing
Contributions welcome! See CONTRIBUTING.md for dev setup, project principles, and the PR checklist. All participation is governed by our Code of Conduct.
License & Pricing
AI Dimag is open source under the MIT License — free for everyone, any team size, forever. Use it, fork it, embed it.
The entire local-first product is free: CLI, MCP server, verification, guardrails, skills, IDE extensions, local dashboard, and self-hosted team sync (dim serve).
Want team sync without running a server? AI Dimag Cloud is an optional managed sync subscription — that's how the project stays funded and open source. See Pricing.
Built by Anup Khanal
Website • Documentation • Cloud • npm • License
Available Tools
21 toolsaidimag_helpA
Show what aidimag offers: available tools, prompts (slash commands), resources, and the companion dim CLI commands. Call this when the user asks what aidimag can do, how to use it, or types 'aidimag help' — then relay the overview to them.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It explains the tool displays an overview and instructs the agent to relay it, which is adequate for a simple help tool. It doesn't hide any side effects or limitations, though it could mention whether it's purely informational.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the tool's purpose, then usage guidance. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter help tool with no output schema, the description fully covers what it does, what content it includes, and when to invoke it. The instruction to relay the overview closes the loop for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline is 4. Schema coverage is 100% trivially, and no parameter explanation is needed. The description correctly focuses on use case rather than parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb 'Show' and resource 'what aidimag offers,' enumerating tools, prompts, resources, and dim CLI commands. This clearly distinguishes it from sibling tools which handle memory, scratchpad, tickets, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call: when the user asks what aidimag can do, how to use it, or types 'aidimag help.' It also instructs to relay the overview, giving clear operational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chat_harvestA
Harvest the CURRENT chat session on the fly: pass the messages the USER typed this session (verbatim) and durable facts are extracted and queued for human review — the live, tool-agnostic equivalent of dim harvest. Works from ANY IDE/agent (Copilot, Cursor, Codex, Claude, Devin, …), including cloud tools with no local transcripts. Call at session end, or after a long exchange rich in project knowledge. Secrets are redacted server-side before any LLM sees the text. For single facts stated in passing, prefer context_note instead.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | No | Your agent/tool identifier, e.g. 'copilot', 'cursor', 'devin' | |
| session_id | No | A stable id for this chat session, if your host exposes one (used for dedupe/evidence) | |
| user_messages | Yes | The user's messages from this session, verbatim, in order. Include only what the HUMAN typed — no assistant replies, no tool output. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses key behaviors: facts are 'queued for human review' (not immediately stored), secrets are 'redacted server-side before any LLM sees the text,' and it works across multiple IDEs/agents. It stops short of describing response formats or potential errors, but covers the most critical traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, followed by context, timing, security, and alternatives. It is slightly redundant (e.g., 'tool-agnostic' and 'Works from ANY IDE/agent' both make the same point) and contains jargon ('dim harvest') that may be unfamiliar, but it remains efficient and avoids fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no output schema and only three parameters, the description covers the essential context: what it does, when to use it, how it handles sensitive data, and how it differs from alternatives. It does not describe the exact response shape, but the lack of output schema makes that less critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description reinforces the main parameter ('pass the messages the USER typed this session (verbatim)'), but this largely repeats the schema's existing parameter descriptions. It does not meaningfully add 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: harvest the current chat session by passing user messages verbatim to extract durable facts for human review. It explicitly differentiates itself from siblings by positioning as 'the live, tool-agnostic equivalent of dim harvest' and by recommending context_note for single facts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use: 'Call at session end, or after a long exchange rich in project knowledge.' It also names an alternative for a specific use case: 'For single facts stated in passing, prefer context_note instead.' This gives the agent clear decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commits_mineA
Mine git commit history for memory-worthy candidates (same as dim mine). Queues proposals for dim review — never writes active memory directly. Use after meaningful commits, or with full=true to rescan all history.
| Name | Required | Description | Default |
|---|---|---|---|
| llm | No | Deep mining: LLM reads each commit message and diff (needs Ollama or OPENAI_API_KEY). Falls back to keyword heuristics if unavailable. | |
| max | No | Max commits to scan (default 500 for keyword mining, 40 for llm) | |
| full | No | Rescan from the beginning of history (ignore cursor). Default: only commits since the last mine. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It reveals that the tool queues proposals for `dim review` and never writes directly, disclosing the output behavior and safety profile. It also implies incremental scanning by default via the 'full=true' option, which is important behavioral context. It doesn't detail potential failure modes, but schema covers prerequisites like LLM availability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, each conveying distinct information: purpose, behavioral implication, and usage guidance. It is front-loaded and free of redundant content, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is well-covered: purpose, usage, and key behavioral constraints are present. There is no output schema, but the description explains the queue-based output mechanism. The only gap is that it doesn't specify what happens to queued proposals or how to retrieve them, but the sibling tool `proposals_pending` likely covers that. Overall, adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter's meaning. The description reinforces the `full` parameter's purpose when it mentions 'full=true to rescan all history,' adding usage context. It doesn't add syntactic 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool mines git commit history for memory-worthy candidates, which is a specific action on a specific resource. It distinguishes itself from sibling tools by clarifying it queues proposals rather than writing directly. The reference to `dim mine` provides an additional clear context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use after meaningful commits, or with full=true to rescan all history,' giving clear when-to-use guidance. It also states it never writes active memory directly, implying that memory_write should be used for that purpose, thus providing an implicit alternative. This is strong usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
context_noteA
Capture a durable fact the USER just stated in chat. Call this IMMEDIATELY when the user shares codebase knowledge — don't wait for session end. ALWAYS trigger on: 'we use X because Y' (DECISION), 'never do X' (GUARDRAIL), 'we always X' (CONVENTION), 'we tried X, it failed' (FAILED_APPROACH), 'the architecture is...' (ARCHITECTURE). Skip task-specific requests like 'fix this bug'. User-stated facts are queued for review with high trust (HUMAN_ATTESTED evidence).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Best-fit memory kind (e.g. user says 'never do X' → GUARDRAIL, 'we tried X, failed' → FAILED_APPROACH, 'we always X' → CONVENTION) | |
| paths | No | Repo-relative paths the fact applies to (omit for repo-wide) | |
| quote | No | The user's own words, verbatim (preserves nuance for the reviewer) | |
| symbols | No | Symbols (functions/classes) it applies to | |
| agent_id | No | Your agent identifier, e.g. 'claude-code' | |
| statement | Yes | The fact, rephrased as a falsifiable claim about the codebase (e.g. 'Payments retries are handled in src/queue; handlers must be idempotent') | |
| applies_when | No | For kind=FAILED_APPROACH: conditions under which the failure applies (prevents blocking the approach after the underlying cause is fixed) | |
| guardrail_level | No | For kind=GUARDRAIL: never | always | ask-first |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes on full disclosure duty. It reveals that facts are 'queued for review with high trust' and labels the evidence as HUMAN_ATTESTED, giving the agent a clear picture of what happens post-call. It doesn't mention other side effects, but for a capture-like tool this level of transparency is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately dense and well-front-loaded with the core action. Every sentence serves a purpose—purpose, timing, triggers, exclusions, and outcome. It loses a point for minor redundancy ('Call this IMMEDIATELY' and 'don't wait for session end' are somewhat repetitive), but overall it remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple capture tool, the description covers all necessary aspects: what to capture, when to capture, when to skip, and what happens after. The schema's rich property descriptions fill in the rest. A minor gap is not explicitly stating what should happen if multiple facts appear at once, but that's not critical for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 100% schema coverage providing a solid baseline, the description adds substantial value by mapping natural language triggers to enum values ('we always X' → CONVENTION) and offering a concrete example for the `statement` field. This goes well beyond what the schema alone provides, making the trigger logic and statement formulation unambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb+resource: 'Capture a durable fact the USER just stated in chat.' It distinguishes itself from sibling memory tools by scoping to user-stated codebase knowledge. The inclusion of concrete trigger phrases ('we use X because Y', 'never do X') makes the tool's exact purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit when-to-use guidance with 'ALWAYS trigger on' plus examples, and an explicit exclusion ('Skip task-specific requests'). However, it does not name alternative tools to use in the exclusion case, only says to skip, so the agent must infer the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowledge_ingest_submitA
Submit the FALSIFIABLE claims you extracted from a pending knowledge doc (see the knowledge_ingest prompt). Queues them as proposals (source knowledge:), writes the durable summary, backs up the original, and clears the inbox copy. Claims become PINNED memory only after dim review (unless the repo opted out).
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | The pending doc's filename, exactly as shown by knowledge_pending | |
| claims | Yes | JSON: {"claims":[{"kind":"CONVENTION","claim":"...","paths":["src/x"],"symbols":[],"guardrail_level":null,"rationale":"..."}]} — 0–12 durable, scoped, falsifiable claims |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It extensively discloses side effects: queues proposals, writes a durable summary, backs up the original, clears the inbox copy, and defers memory pinning until 'dim review'. This exceeds expectations and prevents surprise.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, and every clause provides essential information. It is efficient and well-structured without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description covers all critical aspects: purpose, source, sequence, side effects, and post-conditions. It even references the external prompt for further guidance. Extremely complete for a tool with two parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds context about the origin of claims but does not meaningfully enhance the parameters beyond what the schema already explains ('exactly as shown by knowledge_pending', '0–12 durable, scoped, falsifiable claims').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Submit'), the object ('FALSIFIABLE claims'), and the source ('pending knowledge doc'), distinguishing it from siblings like knowledge_pending and memory_write. It also specifies the outcome ('Queues them as proposals'), leaving no doubt about the tool's role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It conveys when to use ('from a pending knowledge doc') and references a workflow step ('see the knowledge_ingest prompt'), but does not explicitly list alternative tools or when not to use this tool. The 'only after dim review' note implies a follow-up process, adding useful context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowledge_pendingA
List documents waiting in the knowledge inbox to be summarized into pinned-on-approve memory proposals. Use with the knowledge_ingest prompt to process them in-session.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 states this tool only lists documents and that processing is done separately via knowledge_ingest, which discloses the non-mutating nature. However, it doesn't elaborate on return format or pagination, but for a simple list operation 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exactly two sentences: the first states what the tool does, the second provides usage context. No wasted words, information is front-loaded, and every phrase contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Considering there are no parameters and no output schema, the description provides enough context for the agent to understand the tool's role and how to integrate it with knowledge_ingest. It could mention the nature of the returned list (e.g., titles, IDs), but given the simplicity, this gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters and schema coverage is 100%, so the description need not add parameter details. The baseline for 0 params is 4, and the description appropriately focuses on purpose rather than parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb ('List') and a clear resource ('documents waiting in the knowledge inbox'). It also states the ultimate purpose ('to be summarized into pinned-on-approve memory proposals'), which distinguishes it from sibling tools like knowledge_ingest_submit or proposals_pending.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage guidance is provided: 'Use with the knowledge_ingest prompt to process them in-session.' This tells the agent when and how to use this tool in combination with another, making the workflow clear without needing to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_check_changeA
Pre-edit safety check: given a diff or a short description of a change you're about to make, return any FAILED_APPROACH, GUARDRAIL, INVARIANT, or CONVENTION memories that match. Call this BEFORE editing code when the task touches an area with known historical failures or explicit rules. Returns a decision: proceed, ask_first, or stop.
| Name | Required | Description | Default |
|---|---|---|---|
| diff | No | Unified diff of the proposed change (e.g. git diff --no-index or a hand-written patch). If omitted, the check is based on paths + task only. | |
| task | No | Short plain-text description of what you're about to do (used for keyword matching when no diff is given) | |
| paths | No | Repo-relative paths the change touches | |
| agent_id | No | Your agent identifier, e.g. 'claude-code' |
TDQS
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 establishes this is a pre-edit check and states what it returns (a decision and matching memories), implying a read-only, non-destructive operation. It doesn't explicitly state side-effect-free, but 'check' and 'return a decision' strongly imply no mutation. Slightly better if it stated 'does not modify anything'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two purpose-built sentences: the first states what the tool does and what it returns (decision types), the second states the exact call condition. Front-loaded with 'Pre-edit safety check'. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
4 params fully covered in the schema registered at 100% coverage)Skip. The description adds the decision semantics (proceed/ask_first/stop) and the before-editing usage contextcars. A safety-check tool with no output schema benefits from the explicit return value list, which it provides. Slightly light on what 'matching' means (keyword/path matching), but the schema's param descriptions handle that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Every parameter (diff, task, paths, agent_id) is described in the schema with 100% coverage, so the baseline is 3. The description reinforces purpose (diff vs task/paths matching) but doesn't add semantics beyond the schema. Acceptable but not additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact verb ('check'), resource ('FAILED_APPROACH, GUARDRAIL, INVARIANT, or CONVENTION memories'), and the decision output (proceed, ask_first, stop). It also distinguishes the matching scope (diff or task/paths), so an agent knows exactly what this tool does and what it returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent WHEN to call: 'BEFORE editing code' and 'when the task touches an area with known historical failures or explicit rules.' It also explains the diff-or-description fallback semantics. This is prescriptive and the tool names its output decision clearly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_critiqueA
Review what you just did (or plan to do) against the project's VERIFIED memory and guardrails — a 'second critic' grounded in real, falsifiable beliefs rather than another model's opinion. Call BEFORE committing or proposing memories. Resolve guardrail violations and contradictions first.
| Name | Required | Description | Default |
|---|---|---|---|
| summary | Yes | What you did or plan to do, in a sentence or two | |
| files_changed | No | Repo-relative paths you touched (improves scoping) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of disclosure. It explains that the tool is grounded in verified memory and not another model's opinion, and implies it reports guardrail violations and contradictions. However, it does not explicitly state the return format, whether the tool is read-only, or any side effects. This is a gap, but the description does provide some behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, front-loaded with the main purpose. Every sentence adds value: the first states what it does, the second gives the critical timing, and the third reinforces the priority. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema), the description provides strong contextual guidance about when to call it and its grounding. It implies results will identify violations and contradictions, but it does not explicitly describe the return value or format. A richer description of the output would make it complete, but the current level is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both parameters. The description adds little beyond the schema for parameters; it echoes the summary purpose ('what you just did or plan to do') but does not provide new parameter-level insight. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Review what you just did (or plan to do) against the project's VERIFIED memory and guardrails.' It uses a specific verb ('Review') and resource ('VERIFIED memory and guardrails'), and differentiates itself from sibling tools by calling itself a 'second critic' grounded in 'real, falsifiable beliefs rather than another model's opinion'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on when to use the tool: 'Call BEFORE committing or proposing memories.' It also instructs to 'Resolve guardrail violations and contradictions first,' which clarifies the intended sequence. This distinguishes it from alternatives like memory_write or memory_propose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_get_for_filesA
Get all memories relevant to specific files before editing them — conventions, gotchas, and invariants that apply to those paths.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to return (1-50). Defaults to 20. | |
| paths | Yes | Repo-relative file paths you are about to read or edit |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for side-effect transparency. The verb 'get' implies read-only behavior, but the description does not explicitly state that it performs no modifications, nor does it mention any auth/rate/side-effect details. It adds useful context about the content (conventions, gotchas) but falls short of explicitly disclosing non-mutation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately states the core purpose and adds a clarifying list of content types (conventions, gotchas, invariants). There is no redundant wording or filler; every word serves to explain the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-oriented tool with full schema coverage for both parameters and no output schema concerns (it's a get), the description is sufficiently complete. It covers the what, when, and what kind of results (memories relevant to files). It does not mention pagination behavior, but that is not critical given the limit parameter and the absence of an output schema requiring explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters (paths and limit) fully described in the schema, including details like 'Repo-relative file paths you are about to read or edit' and the limit range/default. The tool description does not add additional meaning beyond what the schema already provides, so the baseline score of 3 is maintained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get all memories relevant to specific files' with a specific verb (get), a specific resource (memories for files), and a defined context (before editing). It distinguishes from sibling tools like memory_search (general search) and memory_write (writing) by explicitly tying to file paths and pre-edit usage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear 'when to use' by saying 'before editing them,' which is a practical trigger. It does not explicitly state when not to use it or mention alternative tools, but the contextual purpose is strong enough for an agent to decide. Slight deduction for lacking explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_pre_editA
Pre-edit guardrail check for a specific file and code snippet. Given a file path and the code you're about to write, check whether it violates any NEVER guardrails or triggers FAILED_APPROACH warnings. Returns a clear STOP/PROCEED decision. Call this before writing to files in protected areas.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The code snippet you're about to write (added lines only) | |
| agent_id | No | Your agent identifier, e.g. 'claude-code' | |
| file_path | Yes | Repo-relative file path being edited |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the whole disclosure burden. It does disclose the key output (a clear STOP/PROCEED decision) and the evaluation basis (NEVER guardrails, FAILED_APPROACH). It remains silent on whether the call is read-only, whether violations mutate state, or any side effects, though the tool reads as a non-destructive check.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact, front-loaded sentences. The opening states the purpose, the next sentences cover input, evaluation criteria, return value, and usage timing. Every sentence earns its place with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a check tool with 3 parameters, no output schema, and no annotations, the definition is nearly complete: it explains purpose, inputs, the returned decision, and when to call. The only residual gap is that NEVER/FAILED_APPROACH semantics are not defined, though these are likely domain concepts shared with the sibling suite.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both required parameters (file_path, code) plus agent_id are fully documented in the schema. The description echoes those inputs ('Given a file path and the code you're about to write') without adding syntax or format details, which matches the baseline 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with the specific verb+resource ('Pre-edit guardrail check') and elaborates what it checks (NEVER guardrails, FAILED_APPROACH warnings) and what it returns (STOP/PROCEED decision). The check is clearly a pre-write validation, distinct in intent from sibling tools like memory_write or memory_check_change, so an agent can tell them apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Call this before writing to files in protected areas' provides an explicit when-to-use condition. It does not, however, name alternatives or state when not to use it — e.g., that this is only needed for guarded paths and not for ordinary edits — so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_proposeA
Propose a memory for the human review queue. Use at SESSION END for learnings that should persist but warrant review before becoming active memory. Prefer this over memory_write for inferred/uncertain knowledge.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Memory kind, e.g. DECISION, CONVENTION, GOTCHA, GUARDRAIL | |
| claim | Yes | Falsifiable statement about the codebase | |
| paths | No | Paths this memory applies to (omit for repo-wide) | |
| symbols | No | Symbols (functions/classes) this applies to | |
| agent_id | No | Your agent identifier, e.g. 'claude-code' | |
| evidence | No | Grounding evidence, e.g. {type:'COMMIT_REF', payload:'abc123'} | |
| rationale | No | Why this is worth remembering (helps the reviewer) | |
| ticket_ref | No | Ticket id this work belongs to (e.g. XXX-2100). Omit to auto-detect from the current branch. | |
| applies_when | No | For kind=FAILED_APPROACH: conditions under which the failure applies (prevents blocking the approach after the underlying cause is fixed) | |
| guardrail_level | No | For kind=GUARDRAIL: never | always | ask-first |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses that the memory is proposed for review rather than directly written, and that it's for uncertain knowledge. However, it doesn't detail side effects (e.g., whether it persists immediately, returns a proposal ID, or blocks). This is a gap but the core behavior is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero fluff. Purpose is front-loaded, usage guidance follows, and the tool is distinguished from memory_write efficiently. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter tool with full schema descriptions, the description provides sufficient usage context and differentiates from siblings. It doesn't cover return values, but no output schema exists and the core action (proposing to review queue) is clear. Complete enough for an agent to decide when to call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no parameter-specific details; the schema already documents each parameter, including conditional ones like 'applies_when' and 'guardrail_level'. The description does not need to repeat this.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Propose a memory for the human review queue') and explicitly contrasts it with memory_write for inferred/uncertain knowledge. This distinguishes it from sibling tools without requiring schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit guidance: 'Use at SESSION END for learnings that should persist but warrant review' and 'Prefer this over memory_write for inferred/uncertain knowledge.' This provides both when-to-use and when-not-to-use conditions, routing the agent to the correct tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_refuteA
Mark a memory as REFUTED when you discover it no longer holds. Optionally provide the id of a new memory that supersedes it. Refuted memories are kept as negative knowledge.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Memory id to refute | |
| superseded_by | No | Id of a newer memory replacing it |
TDQS
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 consequence: 'Refuted memories are kept as negative knowledge,' indicating a non-destructive action and a persistent outcome. It also mentions the optional superseding connection. It stops short of describing return values or permissions, but the most important behavior is covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, with the main verb+resource in the first sentence. Each sentence provides distinct value: the action, the optional parameter, and the behavioral consequence. No redundancy or filler, making it highly efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with only two parameters and no output schema, the description supplies all essential context: what it does, when to use it, the optional input, and the outcome (negative knowledge). It's self-contained and leaves no critical gaps for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes both parameters with 100% coverage. The description adds context by explaining that the 'superseded_by' parameter is optional and its purpose ('Optionally provide the id of a new memory that supersedes it'), which reinforces the schema. It doesn't introduce new parameter details beyond that, matching the baseline for well-covered schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Mark a memory as REFUTED' and clarifies the action's trigger. It distinguishes this tool from siblings like memory_verify or memory_write by focusing on the unique refutation action, so there's no ambiguity about its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool: 'when you discover it no longer holds.' It also indicates the optional behavior of providing a superseding memory, which guides usage in that scenario. However, it doesn't name alternative tools or explicitly state when NOT to use it, so it's clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_searchA
Search the repo's verified memory for decisions, conventions, gotchas, failed approaches, and invariants. Use BEFORE exploring the codebase — past sessions may already know the answer.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Filter by memory kind | |
| limit | No | Max results to return (1-50). Defaults to 10. | |
| paths | No | Restrict to memories scoped to these paths | |
| query | Yes | Keywords to search for (e.g. 'auth token refresh') | |
| status | No | Filter by verification status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. 'Search' implies a read-only operation and the 'use before exploring' hint is useful, but the description does not disclose details like whether results are limited to verified memories by default, how status filters interact, or what the return shape is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the action and purpose, then add a clear usage directive. Every word earns its place; no filler or redundant restating of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple query tool with 100% schema coverage and no output schema, the description captures the essential purpose and usage context. It lacks a note about the result format or default verification scope, but is otherwise sufficient for an agent to decide when to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, so the schema fully documents all parameters. The description adds context by listing some memory kinds, but this mostly duplicates the enum values already present in the schema, so no significant new parameter meaning is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb ('Search') and a clear resource ('the repo's verified memory'), and enumerates the memory kinds it can retrieve. This distinguishes it from sibling tools like memory_write, memory_verify, and memory_get_for_files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit timing guidance: 'Use BEFORE exploring the codebase — past sessions may already know the answer.' It does not mention when not to use it or explicitly name alternative tools, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_statusA
Get a summary of the repo's memory store: counts by verification status and kind.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It conveys that the operation is read-only ('Get a summary') and specifies the type of output ('counts by verification status and kind'). However, it does not clarify potential meanings of 'verification status' or 'kind,' nor does it disclose any limitations or side effects. Since this is a zero-parameter read tool, the minimal disclosure is acceptable but not particularly rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action ('Get a summary') and efficiently conveys the result type. There is zero waste, and every word contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and no output schema, the description provides sufficient context about what it returns ('counts by verification status and kind'). It could be slightly more explicit about the exact response format, but given the tool's simplicity, the description is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4 per the rubric. The description does not need to explain parameters, and the schema coverage is trivially 100%. No additional parameter semantics are required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get a summary') and identifies the resource ('the repo's memory store') and scope ('counts by verification status and kind'). This clearly distinguishes it from sibling tools like memory_search or memory_get_for_files, which focus on retrieving individual memories rather than aggregate summaries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the tool is for obtaining an overview of the memory store's contents, but it does not explicitly mention when to use this over alternatives, nor does it state any exclusions. It provides clear context but lacks explicit comparison to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_verifyA
Re-run cheap evidence checks (STATIC_CHECK, COMMIT_REF) and update memory statuses. Use before relying on VERIFIED memories if the repo may have changed, or to verify specific memories by id.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Specific memory ids to verify (prefix ok); omit for all | |
| deep | No | Also run expensive evidence (TEST_RESULT, EXEC_TRACE). Slower; use when cheap checks aren't enough. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full transparency burden. It discloses that the tool runs cheap evidence checks and updates memory statuses, indicating a mutating action, but does not specify what statuses change, whether changes are reversible, or any permission requirements. The context about 'cheap' checks is useful but side effects remain under-described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two well-structured sentences: the first states the action with specific evidence check names, and the second gives usage guidance. It is front-loaded, concise, and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has only two optional parameters and no output schema, so the description covers the essential aspects: purpose, usage context, and check types. It lacks details about return values and deeper side effects, but given the tool's moderate complexity, the description is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides complete descriptions for both parameters (ids and deep), with 100% coverage. The description adds minimal contextual value beyond the schema, mentioning verification by id but not adding detail about deep or other semantics. The baseline of 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: re-run cheap evidence checks (STATIC_CHECK, COMMIT_REF) and update memory statuses. It names specific check types and the affected resource, distinguishing it from siblings like memory_search or memory_write by focusing on verification and status updates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly specifies when to use the tool: before relying on VERIFIED memories if the repo may have changed, or to verify specific memories by id. It provides clear usage context, though it doesn't mention when not to use it or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_writeA
Persist a new memory about this codebase. Write the claim as a FALSIFIABLE statement (something that could be checked against the code). Attach evidence whenever possible. For kind=GUARDRAIL, set guardrail_level (never|always|ask-first).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Memory kind, e.g. DECISION, CONVENTION, GOTCHA, GUARDRAIL | |
| claim | Yes | Falsifiable statement, e.g. 'All DB access goes through src/db/store.ts; nothing else imports better-sqlite3' | |
| paths | No | Paths this memory applies to (omit for repo-wide) | |
| symbols | No | Symbols (functions/classes) this applies to | |
| evidence | No | Grounding evidence, e.g. {type:'COMMIT_REF', payload:'abc123'} or {type:'STATIC_CHECK', payload:'! grep -rl better-sqlite3 src --include=*.ts | grep -v store.ts'} | |
| created_by | No | Agent identifier, e.g. 'claude-code' | |
| guardrail_level | No | Required for kind=GUARDRAIL: 'never' (refuse), 'always' (do without asking), 'ask-first' (confirm with user) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for disclosing behavioral traits. It adds value by emphasizing falsifiability and the guardrail_level requirement, but it does not describe side effects (e.g., whether it overwrites existing memories, validates evidence, or returns a confirmation). It is a mutation tool, and such omissions are notable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no wasted words. It front-loads the primary purpose, then provides the most critical usage constraint (falsifiability), then the conditional guardrail instruction. Every sentence contributes to correct usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 7 parameters (2 required) and no output schema, the description is reasonably complete for authoring a memory. However, it does not mention what the tool returns or any effects on existing memories (e.g., conflict resolution, deduplication, idempotency). For a write operation, some expectation-setting on return or failure modes would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so on its own the schema documents all parameters. The description repeats the falsifiability requirement from the claim schema and the guardrail_level requirement from its schema, adding little new meaning beyond a stylistic emphasis on evidence. It does not explain parameter relationships or edge cases beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Persist a new memory') and the resource ('about this codebase'). It goes beyond a tautology by specifying the required format for the claim (falsifiable) and guidance on evidence. It does not explicitly contrast with siblings like memory_propose or memory_search, but the purpose is distinct enough for an agent to recognize it as the write operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool ('Persist a new memory') and offers specific conditional guidance for GUARDRAIL kind. It does not mention when not to use the tool or name alternative tools, but the 'when' is unambiguous. The advice to attach evidence whenever possible gives usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
proposals_pendingA
List memory proposals awaiting human review.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max proposals to return (1-100). Defaults to 50. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. 'Listing' implies a non-mutating operation, which is clear. However, it doesn't clarify details like order of results, whether it includes historical proposals, or behavior when no proposals exist. It's adequate 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, clear sentence in an active voice. It contains no fluff and immediately conveys the action and the target resource. Perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a simple tool with only one optional parameter, the description is sufficient for basic usage. It doesn't mention any default order or if there's a way to filter by status beyond 'pending,' but that's minor for a listing tool. It's complete for its simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the only parameter 'limit' well-documented (range, default). The description doesn't need to add much. The parameter's meaning is immediately clear from the schema, so the description adds little extra beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists memory proposals pending human review, using the specific verb 'list' and resource 'memory proposals'. It could better distinguish from 'knowledge_pending' but the scope ('awaiting human review') adds useful context that differentiates it from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a read-only listing action suitable for review workflows. It doesn't explicitly state when to use this over alternatives like search or knowledge_pending, but the term 'awaiting human review' indirectly signals its purpose. No explicit exclusions to siblings are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scratchpad_clearA
Clear scratchpad working notes (one session key, or everything). Use when a task completes and its intermediate state is no longer needed.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | Only clear this session key; omit to clear all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits. It does not mention that clearing is irreversible, whether any confirmation is required, or what happens to the data. As a destructive operation, this lack of safety information is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences: the first states the action, the second gives the usage context. No filler words, clearly front-loaded, and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one optional parameter and no output schema, so the description is mostly adequate. However, for a destructive clear operation, it should disclose irreversibility or side effects; without this, the description leaves a gap in the agent's ability to anticipate consequences.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully describes the session_id parameter ('Only clear this session key; omit to clear all'). The description adds no new meaning beyond restating this, so it provides no additional value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action ('Clear scratchpad working notes') and scope ('one session key, or everything'), using a specific verb and resource that clearly distinguishes it from sibling tools like scratchpad_read and scratchpad_write.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context ('Use when a task completes and its intermediate state is no longer needed') that tells when to invoke the tool. However, it does not explicitly name alternative tools or state when not to use it, though the context strongly implies a cleanup role.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scratchpad_readA
Read short-term working notes from the current session's scratchpad (newest first). Use at session start or when resuming a task to recover in-flight state. Expired notes are purged automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max notes to return (1-100). Defaults to 50. | |
| session_id | No | Only notes for this session key; omit for all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description adds useful behavioral context: notes are from the current session, returned newest first, and expired/old notes are automatically purged ('Expired notes are automatically cleaned up'). This goes beyond the schema, though it doesn't mention read-only safety explicitly (but that's implied by 'read').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded purpose, every clause adds value: what it does, ordering, when to use, and note retention behavior. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation with only two optional parameters, this is nearly complete. It covers purpose, usage timing, and the auto-purge behavior. Lacks explicit return type description, but without an output schema and given the simplicity, it's adequate. Could benefit from noting it returns only unexpired notes (implied by purge).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions including defaults. The description adds no additional parameter context 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads short-term working notes from the current session's scratchpad, with a distinctive 'newest first' ordering. It uses a specific verb+resource construction and is distinguishable from sibling tools like scratchpad_write and scratchpad_clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it ('when resuming a task to recover in-flight state'), providing clear context. It doesn't explicitly say when NOT to use it (e.g., vs memory tools), but the 'short-term' qualifier implies a distinction from long-term memory.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scratchpad_writeA
Jot a SHORT-TERM working note for the current session: intermediate findings, plans, hypotheses, task state. Auto-expires (default 24h) and is never synced. NOT durable memory — use memory_write/memory_propose for knowledge that should persist across sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The note to jot down | |
| ttl_hours | No | Hours until the note expires (default 24) | |
| session_id | No | Session/topic key to group notes under (default 'default') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses key behavioral traits: 'Auto-expires (default 24h)' and 'is never synced', plus the non-durable nature. It does not specify whether writing replaces or appends existing notes for the same session_id, which is a minor gap, but overall it covers critical transient behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose, followed by key caveats and alternatives. No wasted words; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter write tool with no output schema and no annotations, the description covers purpose, usage guidance, lifetime, sync behavior, durability distinction, and session scope. It is sufficiently complete for an agent to decide when and how to use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of the parameters with descriptions, so the baseline is 3. The description redundantly mentions 'default 24h' which is already in the schema, and it does not add significant meaning beyond what the schema provides for 'content', 'ttl_hours', or 'session_id'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'jot' with a clear resource and scope: 'SHORT-TERM working note for the current session' with examples of content. It explicitly distinguishes from durable memory by naming 'memory_write/memory_propose', which differentiates from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit when-to-use context: for intermediate findings, plans, hypotheses, task state in the current session. It gives a clear exclusion: 'NOT durable memory — use memory_write/memory_propose for knowledge that should persist across sessions', naming alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ticket_getA
Fetch the ticket behind the current work (title, description, type, status) from the connected ticketing app. Use at session end: the ticket carries the WHY that commits lack. Omit the id to auto-detect it from the current branch name.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Ticket id, e.g. XXX-2100 or #123; omit to use the current branch's ticket |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the burden of behavioral disclosure. It implies a read-only fetch and explains auto-detection from the branch, but it does not explicitly state that it is side-effect-free or describe behavior when no ticket is found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: the first states the primary function, the second provides usage timing and rationale. No redundant words or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description covers what is fetched, the param behavior, and when to use it. It does not describe the return format, but the listed fields partly compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description fully covers the id parameter, including the omission auto-detection behavior. The description repeats this but adds no new information, so baseline 3 is appropriate given 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete verb 'Fetch' and a specific resource ('the ticket behind the current work') plus the fields returned (title, description, type, status). This clearly distinguishes it from sibling memory/scratchpad tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit usage context ('Use at session end') and explains the value ('the ticket carries the WHY that commits lack'), which is clear guidance. It does not mention when not to use it or alternatives, but no direct alternatives exist among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
5 tool updates
v2.0.0- Changed
context_note1 field changed- added
Input schema / properties / applies_whenAdded value: +{ + "description": "For kind=FAILED_APPROACH: conditions under which the failure applies (prevents blocking the approach after the underlying cause is fixed)", + "items": { + "type": "string" + }, + "type": "array" +}
- Added
memory_check_change - Added
memory_pre_edit - Changed
memory_propose1 field changed- added
Input schema / properties / applies_whenAdded value: +{ + "description": "For kind=FAILED_APPROACH: conditions under which the failure applies (prevents blocking the approach after the underlying cause is fixed)", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
memory_write1 field changed- changed
Input schema / properties / evidence / descriptionPrevious value: -"Grounding evidence, e.g. {type:'COMMIT_REF', payload:'abc123'} or {type:'STATIC_CHECK', payload:'grep -rL better-sqlite3 src --include=*.ts'}"New value: +"Grounding evidence, e.g. {type:'COMMIT_REF', payload:'abc123'} or {type:'STATIC_CHECK', payload:'! grep -rl better-sqlite3 src --include=*.ts | grep -v store.ts'}"
6 tool updates
v1.1.2- Changed
memory_get_for_files1 field changed- added
Input schema / properties / limit / descriptionAdded value: +"Max results to return (1-50). Defaults to 20."
- Changed
memory_propose4 fields changed- added
Input schema / properties / evidence / descriptionAdded value: +"Grounding evidence, e.g. {type:'COMMIT_REF', payload:'abc123'}" - added
Input schema / properties / kind / descriptionAdded value: +"Memory kind, e.g. DECISION, CONVENTION, GOTCHA, GUARDRAIL" - added
Input schema / properties / paths / descriptionAdded value: +"Paths this memory applies to (omit for repo-wide)" - added
Input schema / properties / symbols / descriptionAdded value: +"Symbols (functions/classes) this applies to"
- Changed
memory_search1 field changed- added
Input schema / properties / limit / descriptionAdded value: +"Max results to return (1-50). Defaults to 10."
- Changed
memory_write1 field changed- added
Input schema / properties / kind / descriptionAdded value: +"Memory kind, e.g. DECISION, CONVENTION, GOTCHA, GUARDRAIL"
- Changed
proposals_pending1 field changed- added
Input schema / properties / limit / descriptionAdded value: +"Max proposals to return (1-100). Defaults to 50."
- Changed
scratchpad_read1 field changed- added
Input schema / properties / limit / descriptionAdded value: +"Max notes to return (1-100). Defaults to 50."
19 tool updates
- First observed
aidimag_help - First observed
chat_harvest - First observed
commits_mine - First observed
context_note - First observed
knowledge_ingest_submit - First observed
knowledge_pending - First observed
memory_critique - First observed
memory_get_for_files - First observed
memory_propose - First observed
memory_refute - First observed
memory_search - First observed
memory_status - First observed
memory_verify - First observed
memory_write - First observed
proposals_pending - First observed
scratchpad_clear - First observed
scratchpad_read - First observed
scratchpad_write - First observed
ticket_get
TDQS
The memory-creation tools (memory_write, memory_propose, context_note, chat_harvest) have overlapping purposes with subtle distinctions in trust level and trigger timing, which could cause misselection. Memory-verification tools (memory_verify, memory_critique) also share a 'check' theme but differ in target (memories vs actions). Overall, most tools are clearly distinct but these clusters introduce ambiguity.
There is a dominant verb_noun pattern among memory_* and scratchpad_* tools, but outliers like ticket_get, commits_mine, proposals_pending, knowledge_pending, and chat_harvest mix noun-first or noun-adjective styles. The inconsistent ordering (resource-first vs action-first) makes the naming less predictable, though the grouping by domain mitigates confusion.
At 19 tools, the count is slightly above the typical well-scoped range (3-15) but remains reasonable given the server's broad purpose of memory management, scratchpad, knowledge ingestion, and external integrations. Each tool justifies its existence, and the count doesn't feel bloated or overwhelming.
The tool set covers the full memory lifecycle: creation (write, propose, context_note, chat_harvest), retrieval (search, get_for_files), verification/status updates (verify, refute, status), and review (proposals_pending, memory_critique). Missing is a direct 'memory_edit' to modify the text of a memory, but the verify/refute mechanism covers status changes, and the design intentionally separates agent-facing actions from human review.
Maintenance
Related MCP Connectors
- memnodeOAuthdev.memnode
Persistent, inspectable memory for AI agents with lineage, correction, and a hosted MCP endpoint.
Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.
An MCP memory server. One memory your agents share — across models, devices and apps.
Persistent AI memory shared across Claude, ChatGPT, coding agents, and compatible MCP clients.
Related MCP Servers
- AlicenseAqualityAmaintenanceShared, code-grounded memory for developers and their coding agents. Capture a learning once and the whole team plus every agent recalls it; memory is grounded in your code and stored as git-tracked JSON reviewed in PRs, with citations validated on write and stale memory withheld from recall. Works with any MCP client.1132GPL 3.0
- AlicenseNot gradedqualityCmaintenancePersistent memory for AI coding agents. Enables agents to save and recall decisions, patterns, bugs, and context across sessions via an MCP server with local SQLite storage.122MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that captures and recalls coding session memory (failures, decisions, diffs) for AI agents, enabling cross-agent continuity and preventing repeated mistakes.106MIT
- AlicenseNot gradedqualityAmaintenancePersistent memory MCP server that remembers decisions and context across coding sessions, automatically logging and surfacing relevant knowledge as you work.539MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AiDimag/aidimag'
If you have feedback or need assistance with the MCP directory API, please join our Discord server