Skip to main content
Glama
serkansmg

smg-claude-memory-mcp

by serkansmg

SMG Claude Memory MCP

Persistent, searchable project memory for Claude Code. Each project has its own brain — decisions, rules, architecture notes, sprint goals — all stored locally in a vector database and automatically loaded every time you start a new session.

What problem does this solve? Claude forgets everything between sessions. You end up re-explaining the same things over and over, rules get missed, past decisions get lost when your context window fills up, and switching machines means starting from scratch. This MCP gives Claude a real memory — one that survives restarts, context overflows, and team handoffs.


In Plain English

What does this project actually do?

It gives Claude permanent memory per project. Think of it as a separate brain for each of your projects.

When you're working on something, you make decisions ("we chose PostgreSQL"), set rules ("always run tests before commits"), and plan sprints. Normally, all of that is forgotten when a new session starts, or gets scattered across .md files that Claude has to re-read every time.

With this MCP:

  • When you make a decision → Claude stores it automatically

  • When you ask about something → Claude searches memory first, then answers

  • When you start a new session → All the important stuff loads automatically

  • When you set a rule ("always do X") → Claude won't forget it again

Three things users should understand

  1. Semantic search — Ask "what database did we pick?" and it finds the PostgreSQL decision, even if you never typed "PostgreSQL" in your query. It searches by meaning, not keywords.

  2. Project isolation — Every project has its own separate memory database. Memories from project-A never leak into project-B.

  3. Team collaboration — You can move a project's memory into the project folder, commit it to git, and your teammates get the same memory after git pull.

The technical one-liner

"An MCP server for Claude Code that stores per-project memory in local DuckDB with vector embeddings. It remembers decisions, rules, and sprint notes, retrieves them via semantic search, and auto-loads full context at session start — so Claude never forgets anything."

What you'll feel day-to-day

  • You won't need to re-explain your project's decisions every session

  • Rules you've set stick — Claude can't skip them (enforced by hooks)

  • Context window overflows don't lose important info (it's in the DB)

  • Switching machines? git pull + one command, and Claude picks up exactly where you left off

  • Onboarding a teammate's Claude? Same thing — they get your whole project memory instantly


Related MCP server: Claude Memory MCP

FAQ — Common Questions, Clear Answers

Q: When I run make_portable, does it move ALL projects' memory to git, or just the one I'm working on?

Just the one project. Other projects are never touched.

Each project has its own separate .duckdb file:

~/.memory-mcp/
├── registry.duckdb              ← List of projects (name + path)
└── projects/
    ├── my-app.duckdb            ← ONLY my-app's memory
    ├── smg-analytics.duckdb     ← ONLY smg-analytics's memory
    └── other-project.duckdb     ← ONLY other-project's memory

When you run:

/smg-memory portable /Users/you/projects/smg-analytics

What happens:

  1. Copies ~/.memory-mcp/projects/smg-analytics.duckdb/Users/you/projects/smg-analytics/.memory-mcp.duckdb

  2. Moves the original to ~/.memory-mcp/backups/ (kept as safety net)

  3. Updates the registry so this project now uses the new location

The other projects stay right where they are. Their memory is never exposed in this repo's git history.

When you git add .memory-mcp.duckdb and push, you're only sharing that specific project's memory. Teammates who pull it only get that project's memory — not a window into all your other work.

Q: Will my memories from one project contaminate another project?

No. Strict isolation. Each project's .duckdb is its own DuckDB database. Searches, rules, sessions — everything is scoped to one project at a time.

Q: What happens if my context window fills up mid-session?

You won't lose anything. Memories live in the DB, not in the context window. When you start a new session, memory_session_start auto-loads:

  • All mandatory rules (guaranteed, cached, never approximated)

  • All forbidden rules

  • Last session's summary

  • Active sprint goals

  • Recent decisions (last 7 days)

Anything older is one semantic search away.

Q: Do I need to manually store every memory?

No. When a session is active, Claude auto-stores:

  • Decisions you make ("we decided to use X", "going with Y")

  • Rules you set ("always do X", "never do Y")

  • Feedback ("don't do that again", "keep doing that")

  • Architecture choices

You can also explicitly use /smg-memory store <category> <title> <content> when you want control.

Q: Does anything leave my machine?

No. Everything is local:

  • DuckDB database on your disk

  • Embeddings generated locally by sentence-transformers (CPU, no GPU needed)

  • No API keys, no cloud services, no telemetry

The only network call is the one-time ~80MB download of the embedding model from Hugging Face.

Q: Can my teammate who doesn't have this MCP still read the memories?

Yes. Run /smg-memory export <project-path> and it creates a .memory/ directory with human-readable Markdown files. Anyone can read, edit, or review them directly. You can sync changes back with /smg-memory import.


How It Works — The Flow

Three interaction patterns. In all of them, you talk to Claude normally — the MCP works behind the scenes.

The Cast

Before the flows, a quick clarification — these are different things:

Component

What it is

What it does

Claude (LLM)

Large language model

Understands you, makes decisions, writes answers

Memory MCP

This server

Orchestrates storage and retrieval

Embedding model (all-MiniLM)

Small neural net (~80MB)

Turns text into 384 numbers (a vector). Does NOT understand anything

DuckDB

Local database

Stores memories + vectors, does similarity math

The embedding model is NOT an LLM. It doesn't "understand" — it just converts text to numbers so that similar meanings produce similar vectors. That's why it's small and fast.


Flow 1: You ask a question

"What was our caching strategy?"

sequenceDiagram
    actor You
    participant Claude
    participant MCP as Memory MCP
    participant Embed as Embedding Model
    participant DB as DuckDB

    You->>Claude: "What was our caching strategy?"
    Claude->>MCP: memory_search("caching strategy")
    MCP->>Embed: encode(query)
    Embed-->>MCP: [384-dim vector]
    MCP->>DB: vector similarity search (cosine)
    DB-->>MCP: top-N matching memories
    MCP-->>Claude: [Redis for cache, decisions, ...]
    Claude-->>You: "We chose Redis for session caching because..."

What happened: Claude triggered a vector search. The query became a vector. DuckDB found memories with similar vectors (same meaning). Claude composed the answer from those memories.


Flow 2: You make a decision

"Let's use Redis for caching."

sequenceDiagram
    actor You
    participant Claude
    participant Hook as UserPrompt Hook
    participant MCP as Memory MCP
    participant Embed as Embedding Model
    participant DB as DuckDB

    You->>Claude: "Let's use Redis for caching"
    Hook->>Claude: detects decision pattern
    Claude->>MCP: memory_store(decision, "Use Redis", content)
    MCP->>Embed: encode(title + content)
    Embed-->>MCP: [384-dim vector]
    MCP->>MCP: generate summary, extract entities, compute TTL
    MCP->>DB: INSERT memory + vector + metadata
    DB-->>MCP: stored
    MCP-->>Claude: {id, summary, entities, expires_at}
    Claude-->>You: "Noted — Redis caching decision saved."

What happened: The UserPromptSubmit hook noticed a decision pattern. Claude auto-stored it. MCP generated a summary, extracted entities (like "Redis"), computed a TTL (365 days for decisions), and wrote everything to DuckDB along with the vector.


Flow 3: You start a new conversation

"Hi, let's continue."

sequenceDiagram
    actor You
    participant Claude
    participant Hook as SessionStart Hook
    participant MCP as Memory MCP
    participant DB as DuckDB

    You->>Claude: "Hi, let's continue"
    Hook->>Claude: enforces memory_session_start
    Claude->>MCP: memory_session_start(project)
    MCP->>DB: auto-close orphaned sessions
    MCP->>DB: SELECT mandatory_rules, forbidden_rules
    MCP->>DB: SELECT last session summary
    MCP->>DB: SELECT active sprint goals
    MCP->>DB: SELECT recent decisions (last 7 days)
    DB-->>MCP: full context bundle
    MCP-->>Claude: {rules, last_summary, sprint, decisions}
    Claude-->>You: "Hi! Last session we chose Redis. Auth module is next."

What happened: The hook forced Claude to call memory_session_start. MCP pulled everything important in one batch — rules, last session summary, active sprint, recent decisions — and Claude started the conversation already knowing the project's state.


High-Level View

graph LR
    User[You] <--> Claude[Claude LLM]
    Claude <--> MCP[Memory MCP Server]
    MCP --> Embed[Embedding Model<br/>~80MB local]
    MCP --> DB[(DuckDB<br/>per-project)]
    DB --> HNSW[HNSW Vector Index]
    Hooks[Hooks] -.->|enforce session_start,<br/>detect decisions| Claude

    style User fill:#e1f5e1
    style Claude fill:#fff4e1
    style MCP fill:#e1e8ff
    style Embed fill:#ffe1f0
    style DB fill:#f0e1ff

Everything runs locally on your machine. No cloud, no API keys, no telemetry.


Multilingual Support

The Default: English-Only

Out of the box, this MCP uses all-MiniLM-L6-v2 — a small, fast, English-only embedding model:

  • Size: ~80MB on disk, ~90MB RAM

  • Speed: ~14k sentences/sec on CPU

  • Languages: English only

  • Quality: Excellent for English

What this means in practice:

✅ "which database did we choose?" → finds the PostgreSQL decision (English content)
❌ "hangi veritabanını seçtik?"    → may return 0 results (Turkish query, English content)

If your memories are in English, the default works great. If you or your team write in other languages, you need the multilingual model.

Switching to Multilingual

If you want to ask questions or store memories in non-English languages, switch to the multilingual model:

/smg-memory model multilingual

This will:

  1. Show you the impact (disk, RAM, memories to re-embed)

  2. Ask for confirmation

  3. Download the multilingual model (~470MB, one-time)

  4. Re-embed all your existing memories with the new model

  5. Persist the choice (survives restarts)

After switching, you can search and store in any of these 50+ languages:

Region

Languages

European

English, German, French, Spanish, Italian, Portuguese, Dutch, Polish, Swedish, Romanian, Czech, Danish, Finnish, Greek, Hungarian, Norwegian, Bulgarian, Catalan, Galician, Croatian, Slovak, Slovenian, Lithuanian, Latvian, Estonian, Ukrainian, Serbian, Macedonian, Albanian

Middle Eastern

Arabic, Hebrew, Persian (Farsi), Kurdish, Armenian, Urdu

Asian

Chinese, Japanese, Korean, Vietnamese, Thai, Indonesian, Malay, Burmese, Mongolian

South Asian

Hindi, Gujarati, Marathi

Turkic

Turkish, Azerbaijani (partial)

Cross-Lingual Superpower

The multilingual model is cross-lingual — you can store memories in one language and search in another:

Store (English):  "We chose PostgreSQL for JSON support and reliability"
Search (Turkish): "hangi veritabanını kullanıyoruz?" → finds the PostgreSQL decision ✅
Search (Japanese): "どのデータベースを使っていますか?" → finds it too ✅

Comparison

English-only (default)

Multilingual

Model

all-MiniLM-L6-v2

paraphrase-multilingual-MiniLM-L12-v2

Disk

~80MB

~470MB

RAM

~90MB

~500MB

Parameters

22M

118M

Speed

~14k sent/sec

~5k sent/sec

Languages

English only

50+ languages

Cross-lingual

No

Yes

Vector dimensions

384

384 (same)

Switching Back

Want to go back to English-only?

/smg-memory model english

Same two-step confirmation, re-embeds all memories back.

Check Current Model

/smg-memory model

Shows which model is active and presents both options with their trade-offs.


Why Not Just Use MEMORY.md?

Claude Code's built-in memory has real limitations:

Problem

MEMORY.md

This MCP

Semantic search

❌ Keyword only

✅ Vector-based, finds by meaning

Context window cost

❌ Eats your context

✅ Stored in DB, fetched on demand

Project isolation

❌ Mixes across projects

✅ One DB per project

Rules enforcement

❌ May get skipped

✅ Hook-enforced, always loaded

Team sharing

❌ Local only

✅ Git-portable

Multi-language

❌ Varies

✅ 50+ languages (optional model)

Audit trail

❌ None

✅ Full provenance tracking


Features

Feature

Description

Semantic Search

HNSW-accelerated cosine similarity — find memories by meaning

Per-Project Isolation

Each project gets its own DuckDB database

11 Memory Categories

decisions, sessions, sprints, architecture, rules, devops, and more

Rules Enforcement

Mandatory/forbidden rules, cached, never approximated

Session Management

Auto-loads full context (rules, sprint, recent decisions) at session start

Auto-Summary

15-20 word summary generated for every memory

Entity Extraction

Automatic detection of tech names, @mentions, #tags, acronyms

TTL/Expiration

Category-based auto-expiration (rules never expire)

Provenance Tracking

Full audit trail for every memory operation

Token Budgeting

Dual-phase search responses — lightweight index + full details

Portable DB

Move DB into project directory, share via git

Export/Import

Human-readable .md export for non-MCP users

Active Project

Set once, use everywhere — no need to repeat project slug

CWD Detection

Auto-detects project from current working directory

Switchable Models

English-only (fast, 80MB) or multilingual (50+ langs, 470MB)

Zero Cloud Deps

No API keys, no cloud services, fully local


Quick Install

git clone https://github.com/serkansmg/smg-claude-memory-mcp.git
cd smg-claude-memory-mcp
chmod +x install.sh
./install.sh

This will:

  1. Install uv if not present

  2. Install all Python dependencies in an isolated venv (no system pollution)

  3. Download the embedding model (~80MB, one-time)

  4. Configure Claude Code MCP automatically

Then restart Claude Code.

Manual Install

uv sync
uv run memory-mcp-setup

Or add to Claude Code manually (.mcp.json or ~/.claude.json):

{
  "mcpServers": {
    "memory": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/smg-claude-memory-mcp", "memory-mcp"]
    }
  }
}

Quick Start

# 1. Create a project (one-time)
/smg-memory init my-app "My Application"

# 2. Start a session (beginning of each conversation)
/smg-memory start

# 3. Store memories (or let Claude auto-detect from conversation)
/smg-memory store decision "Use PostgreSQL" "Chose PostgreSQL for JSON support"
/smg-memory store mandatory_rules "Always Test" "Run pytest before every commit"

# 4. Search
/smg-memory search "database choice"

# 5. End session
/smg-memory end "Implemented auth module, chose JWT tokens"

Usage

Project Management

# Create new project (auto-activates)
/smg-memory init my-app "My Application"

# Attach existing project directory
/smg-memory attach /path/to/my-app

# Set active project (no need to pass project= to every command)
/smg-memory use my-app

# List all projects
/smg-memory projects

Session Lifecycle

# Start session — loads rules, last session summary, sprint goals, recent decisions
/smg-memory start

# End session with summary
/smg-memory end "Completed user auth, decided on JWT, next: API rate limiting"

Memory Operations

# Store (project is optional — uses active project)
/smg-memory store decision "Redis for Cache" "Using Redis for session and API caching"
/smg-memory store architecture "Event-Driven" "Adopted event-driven architecture with RabbitMQ"
/smg-memory store mandatory_rules "PR Reviews" "All PRs require at least one review"

# Semantic search
/smg-memory search "caching strategy"
/smg-memory search "deployment pipeline"

# List by category
/smg-memory list decisions
/smg-memory list mandatory_rules

# Get rules
/smg-memory rules

# View change history
/smg-memory history <memory-id>

Team Collaboration

Option A: Share via Git (portable DB)

# Developer 1: Move DB to project directory
/smg-memory portable /path/to/project
# Add to .gitignore: *.duckdb.wal
git add .memory-mcp.duckdb
git commit -m "add project memory"
git push

# Developer 2: After git pull
/smg-memory sync /path/to/project
# Ready! All memories from Developer 1 are available.

Option B: Export for non-MCP users

# Export to human-readable .md files
/smg-memory export /path/to/project

# Creates:
# .memory/
#   MEMORY_INDEX.md          <- Master index
#   README.md                <- Format docs
#   decision/
#     use-postgresql.md      <- Individual memories
#   mandatory_rules/
#     always-test.md
#   architecture/
#     event-driven.md

# Non-MCP users can read and edit these files directly.

# Import changes back
/smg-memory import /path/to/project

Automatic Memory (No Commands Needed)

When a session is active, Claude automatically:

  • Stores decisions when you make architectural or technical choices

  • Stores rules when you say "always do X" or "never do Y"

  • Searches memory when you ask about past decisions

  • Checks rules before significant operations


Memory Categories

Category

Description

TTL

decision

Important decisions and rationale

365 days

session

Session summaries

30 days

sprint

Sprint goals, progress, retrospectives

90 days

project_plan

Project plans and milestones

365 days

architecture

Architecture decisions and patterns

365 days

devops

DevOps configs, deployment notes

180 days

mandatory_rules

Rules that MUST be followed

Never expires

forbidden_rules

Operations that are FORBIDDEN

Never expires

developer_docs

Developer documentation

180 days

feedback

User feedback on assistant behavior

90 days

reference

Pointers to external resources

365 days


MCP Tools Reference

Tool

Description

memory_use

Set active project (no more repeating slug)

memory_init_project

Create new project namespace

memory_attach_project

Attach existing project directory

memory_store

Store memory with auto-embedding, summary, entities, TTL

memory_search

Semantic search with relevance scoring + token budgeting

memory_recall

Get memory by ID or exact title

memory_update

Partial update (re-embeds if content changes)

memory_delete

Soft or hard delete with provenance

memory_list

Filtered listing with pagination

memory_provenance

Full audit trail for a memory

memory_get_rules

Get all rules (cached, direct SQL)

memory_session_start

Start session, load full context

memory_session_end

End session, store summary

memory_make_portable

Move DB to project dir for git sharing

memory_sync

Register portable DB after git pull

memory_export

Export to .md files for non-MCP users

memory_import

Import from .md files

memory_list_projects

List all projects

memory_project_info

Get project details

memory_model_info

Current embedding model + available presets

memory_set_model

Switch between english and multilingual models

memory_reembed

Re-embed all memories with current model

memory_version

Server version + configuration


Architecture

~/.memory-mcp/
  registry.duckdb              # Project registry (list of all projects)
  projects/
    my-app.duckdb              # Per-project vector DB (ONLY my-app's memory)
    api-backend.duckdb         # Per-project vector DB (ONLY api-backend's memory)
  backups/                     # Automatic backups before destructive operations

# Or portable (DB lives in the project dir, shared via git):
my-app/
  .memory-mcp.duckdb           # This project's memory (in git)
  .memory/                     # Optional: human-readable .md export

Internal architecture (for contributors):

┌───────────────────────────────────────────────┐
│  server.py — FastMCP tool bindings (thin)     │
├───────────────────────────────────────────────┤
│  services/ — business logic                   │
│    MemoryService, SearchService, SessionService,
│    RulesService, ProjectService, PortableService,
│    ExportImportService, ModelService          │
├───────────────────────────────────────────────┤
│  repositories/ — SQL, centralized             │
│    MemoryRepository, ProjectRepository,       │
│    SessionRepository, ProvenanceRepository    │
├───────────────────────────────────────────────┤
│  db/ — connection, schema                     │
└───────────────────────────────────────────────┘

Stack: FastMCP + DuckDB (VSS/HNSW) + sentence-transformers + Pydantic v2


Requirements

  • Python 3.11+

  • macOS or Linux (Apple Silicon fully supported)

  • ~80MB disk for the English embedding model (~470MB for multilingual)

  • ~90MB RAM for the English model loaded (~500MB for multilingual)


Development

uv sync --all-extras
uv run pytest -v

Current test coverage: 98 tests — 34 repository unit tests, 35 service unit tests, 29 integration tests.


License

MIT

Available Tools

24 tools
memory_attach_projectC

Attach an existing project directory. Auto-activates on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNo
descriptionNo
display_nameNo
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

No annotations provided, so description bears full burden. It mentions 'Auto-activates on success' but does not disclose side effects (e.g., what happens to previously attached projects), permissions, or error conditions. Behavioral transparency is poor.

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

Conciseness4/5

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

The description is concise with two short sentences. However, it sacrifices necessary detail for brevity. Structure is clean but incomplete.

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

Completeness2/5

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

Despite having an output schema, the description doesn't explain what the tool returns or what constitutes a successful attachment. No context about the project_path format, whether it's relative/absolute, or what 'attach' means in terms of state changes.

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

Parameters1/5

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

Input schema has 0% description coverage, and the description adds no parameter details. The 4 parameters (slug, description, display_name, project_path) are not explained at all, leaving the agent to guess their meaning.

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

Purpose4/5

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

The description clearly states the action ('Attach an existing project directory') with a specific verb and resource. It implies the project already exists, distinguishing it from memory_init_project, but does not explicitly differentiate from siblings like memory_load_from_folder or memory_link_folder.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives. No context about prerequisites or scenarios where this tool is appropriate. The description lacks any usage context.

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

memory_check_updateA

Check if a newer version of the Memory MCP server is available.

Queries GitHub Releases first, falls back to git commit comparison. Does NOT modify anything - it only reports. Returns step-by-step update instructions when a new version is available.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavior: it queries GitHub Releases first, falls back to git commit comparison, and asserts it does not modify anything. This gives the agent confidence in its read-only nature and the fallback logic.

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

Conciseness5/5

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

The description is concise with four short sentences. The main purpose is front-loaded, and every sentence adds value: purpose, method, side-effect clarification, and output description. No wasted words.

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

Completeness5/5

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

For a simple check tool with an output schema and zero parameters, the description provides complete context: purpose, method (two fallback sources), side-effect clarification (no modification), and output (update instructions). Nothing is missing.

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

Parameters4/5

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

The tool has zero parameters and schema coverage is 100%. The description adds no parameter information (as none are needed) but explains the internal process and output. Baseline for zero params is 4, and the description meets that.

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

Purpose5/5

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

The description explicitly states the tool's purpose: 'Check if a newer version of the Memory MCP server is available.' This is a specific verb+resource pair, and it clearly distinguishes from siblings like 'memory_version' (which likely reports current version) and 'memory_update' (which likely performs the update).

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

Usage Guidelines4/5

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

The description explains when to use the tool ('Check if a newer version is available') and what it returns ('step-by-step update instructions'). It explicitly states that it does not modify anything, which implies it is safe for read-only checks. However, it does not explicitly mention when not to use it or list alternatives, but the context is clear.

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

memory_deleteB

Soft-delete (archive) or hard-delete a memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
hardNo
reasonNo
projectNo
memory_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description must carry the full burden. It discloses the two deletion modes but omits details about reversibility, side effects, permissions, or return values. The output schema exists but is not referenced.

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

Conciseness4/5

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

The description is a single sentence with no waste. However, it could be slightly longer to cover key aspects without losing conciseness.

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

Completeness2/5

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

Given the tool has 4 parameters, no annotation, and no schema-level descriptions, the description is too sparse. It fails to explain the difference between soft and hard delete, and does not mention output or error conditions.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain any of the four parameters (hard, reason, project, memory_id). The agent gains no insight into what these parameters control or their valid values.

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

Purpose5/5

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

The description clearly states the tool's action (delete) and the two modes (soft-delete/archive and hard-delete), effectively distinguishing it from sibling tools like memory_update or memory_store.

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

Usage Guidelines2/5

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

No guidance is provided on when to use soft vs hard delete, or when to choose this tool over alternatives. The description lacks context about prerequisites or typical use cases.

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

memory_exportC

Export all active memories to human-readable .md files.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo
export_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states the basic action. It does not disclose whether files are overwritten, if a directory is created, how memories are organized (e.g., one file per memory), or any side effects. Critical behavioral details are missing.

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

Conciseness4/5

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

The description is a single concise sentence, which is efficient for a simple purpose. However, it lacks structure (e.g., bullet points) that could improve readability, but it does not contain unnecessary words.

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

Completeness2/5

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

Given the presence of many sibling tools and the simplicity of the schema, the description is insufficient. It omits parameter details, output structure (though output schema exists, the description could still clarify), and usage context. An agent would struggle to determine if this is the right tool for a given task.

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

Parameters1/5

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

The schema has 0% description coverage for parameters, and the description does not explain the 'project' parameter or the format of 'export_path'. An agent cannot infer that 'project' likely filters memories by project or that the path should point to a directory. Parameter meanings are entirely opaque.

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

Purpose4/5

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

The description clearly states that the tool exports all active memories to human-readable .md files, specifying the verb (Export), resource (active memories), and output format. This distinguishes it from other memory tools like import or load, but it could be more explicit about where the files are created (implied by export_path).

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool vs. alternatives such as memory_make_portable or memory_load_from_folder. The description does not mention prerequisites, limitations, or scenarios where this export is appropriate.

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

memory_get_rulesB

Get all mandatory and forbidden rules (direct SQL, cached).

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It mentions 'direct SQL, cached' which implies performance characteristics and possible bypass of higher-level APIs, but lacks detail on safety or side effects for a read operation.

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

Conciseness4/5

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

The description is a single concise sentence that front-loads the key action. No redundant words, but could include more detail without harming conciseness.

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

Completeness2/5

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

Given the one parameter and available output schema, the description is too sparse. It does not explain what 'mandatory and forbidden' rules mean, the effect of the optional 'project' parameter, or the structure of the output.

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

Parameters1/5

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

The input schema has one parameter 'project' with no description, and the tool description does not explain its purpose or effect. Schema description coverage is 0%, and the description fails to compensate.

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

Purpose5/5

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

The description clearly states the verb 'Get', the resource 'rules', and specifies 'mandatory and forbidden' with implementation details 'direct SQL, cached'. It distinguishes from sibling tools that add/update/delete rules.

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

Usage Guidelines3/5

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

The description does not explicitly compare with alternatives like 'memory_list' or provide when-not-to-use guidance. Usage is implied as the primary read for rule retrieval.

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

memory_importC

Import memories from exported .md files.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo
import_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It fails to disclose whether the import merges, overwrites, or appends memories, file format specifics, or error behavior.

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

Conciseness3/5

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

The description is very concise (one short sentence) but achieves no wasted words. However, it is too brief for the complexity of the task; could add more detail without being verbose.

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

Completeness2/5

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

Given the tool has an output schema and many sibling import tools, the description lacks details on import behavior, what the output represents, and how it differs from related tools.

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

Parameters2/5

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

Schema coverage is 0%, so description must compensate. It does not explain the 'import_path' parameter's expected format or the optional 'project' parameter's role beyond the bare minimum.

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

Purpose5/5

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

Description clearly states the verb ('import'), resource ('memories'), and source ('exported .md files'), distinguishing it from sibling tools like 'memory_export', 'memory_import_claude_md', and 'memory_import_rules'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'memory_import_claude_md' or 'memory_import_rules'. Lacks context about prerequisites or exclusions.

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

memory_init_projectC

Initialize a new project namespace (creates DuckDB + registers it).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
set_activeNo
descriptionNo
display_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden. It discloses creation and registration but does not detail side effects, required permissions, or behavior on duplicate slugs. Partial transparency.

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

Conciseness3/5

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

The description is a single sentence, which is concise but lacks structure like front-loading key details. It is minimally viable but could benefit from more efficient organization.

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

Completeness2/5

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

Given the tool's complexity (4 parameters, no schema descriptions, no annotations, but has output schema), the description fails to address key aspects like duplicate handling, use of set_active, or what 'registers it' entails. Incomplete for effective agent use.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning to parameters like slug, display_name, set_active, or description beyond their names. Baseline for 0% coverage should be a high score only if description compensates, which it does not.

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

Purpose5/5

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

The description clearly states the verb 'Initialize' and the resource 'project namespace', with explicit mention of creating DuckDB and registering it. This distinguishes it from query tools like memory_list_projects.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., memory_attach_project for existing projects). The description implies usage for new projects but lacks explicit context or exclusions.

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

memory_listC

List memories with filtering, sorting, and pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
limitNo
offsetNo
statusNoactive
projectNo
sort_byNoupdated_at
categoryNo
sort_orderNodesc

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description should carry the burden of behavioral disclosure. It only states the basic functionality and does not mention side effects (expected none), rate limits, output details, or prerequisites like authentication or project scoping.

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

Conciseness3/5

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

The description is a single sentence, which is efficient but may be too brief given the tool's complexity. It front-loads the main action but lacks structure and additional context.

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

Completeness2/5

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

Given 8 parameters, many sibling tools, and no annotations, the description is insufficient. It does not cover default behaviors, pagination limits, or how results are sorted by default. The existence of an output schema is not mentioned, though it partially compensates.

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

Parameters2/5

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

The schema has 8 parameters with 0% description coverage. The description only vaguely groups parameters into filtering, sorting, and pagination but does not explain individual parameters or their semantics, leaving the agent to infer from names and defaults.

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

Purpose4/5

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

The description clearly states the tool lists memories and mentions filtering, sorting, and pagination, which helps differentiate it from other tools like memory_search or memory_recall. However, it does not explicitly distinguish it from all sibling tools.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as memory_search, memory_recall, or memory_list_projects. The description only states what it does, not when or when not to use it.

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

memory_list_projectsA

List all registered projects.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, and the description does not explicitly state that the operation is read-only or side-effect-free. While it implies a simple list, more transparency would be beneficial.

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

Conciseness5/5

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

The description is one concise sentence with no extraneous words. It front-loads the purpose effectively.

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

Completeness3/5

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

The output schema handles return values, so the description is adequate for a simple list. However, it could mention scope (e.g., 'all projects in the current session') or edge cases.

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

Parameters4/5

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

There are no parameters, so the baseline is 4. The description does not need to add parameter semantics.

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

Purpose5/5

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

The description 'List all registered projects' uses a specific verb ('list') and resource ('projects'), clearly distinguishing it from siblings like 'memory_list' which lists memories.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as 'memory_project_info' or 'memory_attach_project'. The description provides no context for usage.

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

memory_make_portableC

Move the project's DB into the project directory for git sharing.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. The description only says 'move' without explaining whether it copies or deletes the original, what 'project DB' refers to, or any side effects. This is insufficient for a mutating tool.

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

Conciseness2/5

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

The description is a single short sentence, but it lacks necessary detail. While front-loaded, it is too terse to be useful. Every sentence should earn its place, but this one omits critical information.

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

Completeness1/5

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

Given no annotations, 0% schema coverage, and no explanation of return values (though output schema exists), the description is completely inadequate. It does not describe behavior, prerequisites, or consequences, leaving the agent unable to use the tool correctly.

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

Parameters1/5

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

Schema description coverage is 0%, but the description does not explain the parameters 'project' and 'project_path'. The optional 'project' parameter is not described at all, and 'project_path' is not clarified. The description adds no value beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the action: moving the project's DB into the project directory for git sharing. It specifies the verb 'move', the resource 'project DB', and the purpose, distinguishing it from other memory tools like memory_sync or memory_export.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like memory_sync or memory_export. The description does not provide context for appropriate usage or prerequisites.

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

memory_model_infoC

Current embedding model + available presets.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only states the output content (model and presets) but does not mention that it is a read-only operation, any authentication needs, or potential side effects. The description is too minimal.

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

Conciseness3/5

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

The description is extremely short (one sentence), which is concise but at the cost of completeness. It is front-loaded but could benefit from a clearer verb and additional context.

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

Completeness3/5

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

Given the simplicity of the tool (no parameters) and existence of an output schema, the description is minimally adequate. It hints at the return content but does not clarify that it is informational only or how it differs from similar tools.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. The description adds minimal context but does not contradict the schema. No parameter documentation is needed, and the description provides a hint of what the output covers.

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

Purpose3/5

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

The description 'Current embedding model + available presets.' is a noun phrase that vaguely indicates what the tool returns, but lacks a specific verb like 'get' or 'retrieve'. It distinguishes from siblings like 'memory_version' only by name, not by explicit differentiation.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as 'memory_set_model' or 'memory_version'. The description does not mention context, prerequisites, or exclusions.

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

memory_project_infoC

Get detailed info for a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full responsibility for disclosing behavioral traits. It only states 'Get detailed info,' implying a read operation, but does not mention side effects, authentication, rate limits, or how the optional null parameter behaves (e.g., defaults to current project). The bare description fails to provide transparency beyond the basic action.

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

Conciseness3/5

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

The description is a single clear sentence, which is concise but at the expense of necessary detail. It is front-loaded with the core action, but it omits critical information about the parameter and usage context. Conciseness should not sacrifice completeness; here it does.

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

Completeness2/5

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

The tool is simple with one parameter, but the description is incomplete. While an output schema exists, the parameter and default behavior are unexplained. For a tool with 0% schema coverage, the description should provide more context about the project parameter and when to use it. The current description does not enable safe and effective invocation.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain the 'project' parameter at all. It lacks format, valid values, default behavior, or semantics. The output schema exists but the description adds no meaning beyond the schema structure. This is insufficient for the agent to use the parameter correctly.

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

Purpose4/5

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

The description clearly states the action ('Get') and resource ('detailed info for a project'), making the purpose clear. It distinguishes itself from siblings like memory_list_projects (which lists projects) and memory_store (which stores data). However, it does not clarify what 'detailed info' includes or that the optional parameter defaults to the current project, which slightly reduces specificity.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. Given the large number of sibling tools (e.g., memory_list_projects, memory_store, memory_recall), the lack of usage context or exclusions leaves the agent without decision support.

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

memory_provenanceC

Get the full audit trail for a memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo
memory_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only states 'Get the full audit trail,' which implies a read-only operation but gives no details on performance, limits, or what 'full' entails. No behavioral traits beyond the basic action are disclosed.

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

Conciseness3/5

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

The description is a single sentence, making it concise, but it omits crucial information about parameters and usage. It is front-loaded with the purpose but under-specified for effective tool invocation.

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

Completeness2/5

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

Given an output schema exists, return values are not required, but the description still lacks detail about input parameters and behavioral context. The minimal description is insufficient for a tool with two parameters and no schema descriptions.

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

Parameters1/5

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

Schema coverage is 0%, meaning no parameter descriptions exist in the schema. The tool description does not explain what 'memory_id' or 'project' represent or how to use them, adding no semantic value beyond the schema's structural definition.

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

Purpose4/5

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

The description clearly states 'Get the full audit trail for a memory' with a specific verb and resource, distinguishing it from siblings focused on storing, updating, or deleting memories. However, 'full audit trail' is somewhat vague and does not explicitly differentiate it from version tracking tools like memory_version.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. It is implied that it is for retrieving audit trails, but there are no exclusion criteria, prerequisites, or mentions of related tools despite many siblings.

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

memory_recallC

Recall a specific memory by ID or exact title.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
projectNo
memory_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description should disclose side effects, authentication, or return behavior. It only states 'Recall', implying read-only, but fails to mention case sensitivity, uniqueness, or how missing parameters behave.

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

Conciseness3/5

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

The description is a single sentence, which is concise but lacks structure. It states the core function but provides no additional context or organization beyond that.

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

Completeness2/5

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

Given the many sibling tools and three optional parameters with no descriptions, the description is too brief. It does not address expected output (despite an output schema), parameter relationships, or the tool's specific role in the broader set.

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

Parameters2/5

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

Schema description coverage is 0% so the description must explain parameters. It mentions memory_id and title but omits the project parameter entirely. No explanation that parameters may be combined or are mutually exclusive, leaving ambiguity.

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

Purpose5/5

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

The description clearly states the tool retrieves a specific memory by ID or exact title, differentiating it from siblings like memory_search (likely fuzzy) and memory_list. The verb 'recall' and resource 'memory' are precise.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as memory_search or memory_list. The description implies exact matching but does not explicitly advise against using for fuzzy or list operations.

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

memory_reembedC

Re-embed all active memories with the current model.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action but omits important details such as whether the re-embedding is destructive, requires certain permissions, or has performance implications (e.g., affecting all active memories).

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

Conciseness4/5

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

The description is a single sentence with no wasted words. However, it may be too brief for the complexity of the tool, lacking necessary details that could be added without harming conciseness.

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

Completeness2/5

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

Given the tool has one undocumented parameter and no usage guidelines or behavioral details, the description is incomplete. While an output schema exists, the description does not provide enough context for an agent to select and invoke this tool correctly among many siblings.

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

Parameters1/5

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

The description does not mention the only parameter 'project' (optional, string or null). Schema description coverage is 0%, so the description adds no value beyond what the schema provides, leaving the agent without guidance on how to use the parameter.

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

Purpose5/5

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

The description clearly states the action (re-embed) and the resource (all active memories) with a specific context (with the current model). It effectively differentiates from sibling tools like memory_store or memory_recall by using a unique verb 're-embed'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or scenarios where this tool is preferred over siblings like memory_set_model or memory_store.

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

memory_session_endC

End a session and store its summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo
summaryYes
session_idYes
memories_createdNo
memories_accessedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states it ends a session and stores a summary. It does not disclose side effects, permanence, required permissions, or what happens to the session data.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. However, it may be too brief given the tool's complexity.

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

Completeness2/5

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

The description lacks essential context for a tool with 5 parameters, no annotations, and an output schema (not explained). It does not specify what 'ending a session' entails, prerequisites, or the role of 'summary'. Incomplete for effective use.

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

Parameters1/5

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

Schema description coverage is 0% and the description adds no meaning to any of the 5 parameters (session_id, summary, project, memories_created, memories_accessed). The agent gains no insight into parameter roles or formats beyond the schema.

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

Purpose5/5

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

The description clearly states the verb 'End' and the resource 'a session', with the additional action 'store its summary'. It distinctly contrasts with sibling tools like 'memory_session_start'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus others, no prerequisites or when-not-to-use context, leaving the agent without decision support.

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

memory_session_startB

Start a session. Loads rules, last summary, sprint goals, recent decisions.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

No annotations exist, so the description must disclose behavioral traits. It states that a session is started and that specific data is loaded, which is adequate but does not mention potential side effects, prerequisites, or behavior if a session is already active.

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

Conciseness4/5

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

The description is a single sentence, concise and front-loaded, but could benefit from a slightly more structured format (e.g., listing loaded items separately). No wasted words.

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

Completeness2/5

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

Despite having an output schema and only one parameter, the description lacks critical context such as return value behavior, what happens when 'project' is provided vs null, or how session state is managed. It feels incomplete.

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

Parameters1/5

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

The input schema has one parameter ('project') with no description coverage (0%). The description does not mention or explain this parameter, leaving its purpose and effect completely unclear.

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

Purpose5/5

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

The description uses a specific verb ('Start') and resource ('session') and lists key loading actions (rules, last summary, sprint goals, recent decisions), which clearly distinguishes it from sibling tools like memory_session_end or memory_store.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., when a session already exists, or before calling other memory tools). The description only states what it does, not when it is appropriate.

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

memory_set_modelC

Switch embedding model between 'english' and 'multilingual' presets.

ParametersJSON Schema
NameRequiredDescriptionDefault
presetYes
confirmNo
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions switching presets but does not disclose any behavioral traits such as whether the operation is destructive, requires confirmation, or affects existing data. The presence of a 'confirm' parameter is not explained.

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

Conciseness5/5

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

The description is a single, efficient sentence that contains no redundant information. It is optimally concise.

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

Completeness2/5

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

Given the tool's complexity (3 parameters, output schema, state-changing action), the description is too minimal. It omits necessary context about impact, usage scenarios, and parameter details, making it incomplete for safe and effective use.

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

Parameters2/5

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

With 0% schema description coverage, the description should explain all parameters. It only explains the 'preset' parameter by listing its values. The 'confirm' and 'project' parameters are completely undocumented in both the description and schema.

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

Purpose4/5

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

The description clearly states the verb 'Switch' and resource 'embedding model', and names the two presets ('english' and 'multilingual'). It leaves no ambiguity about the tool's primary action. However, it does not differentiate from sibling tools like memory_model_info or memory_reembed.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives (e.g., when to switch models, prerequisites, or consequences). The description only states the action without context.

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

memory_storeB

Store a new memory with auto-embedding, summary, entity extraction, and TTL.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
titleYes
sourceNoassistant
contentYes
projectNo
categoryYes
metadataNo
priorityNo
related_idsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It reveals that the tool performs auto-embedding, summary extraction, entity extraction, and applies a TTL. However, it omits details like required permissions, rate limits, side effects on existing data, or whether the process is synchronous.

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

Conciseness5/5

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

A single 11-word sentence that efficiently conveys the tool's core purpose and automatic features. No redundant information; every phrase earns its place.

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

Completeness2/5

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

Despite having an output schema, the description does not explain the return value. With 9 parameters, many optional, and no annotation or schema descriptions, the single sentence leaves significant gaps in understanding the tool's behavior and how to use it effectively among 30+ siblings.

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

Parameters2/5

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

Schema description coverage is 0%, and the description adds no parameter-level details. It mentions 'content' but does not clarify the meaning or constraints of 'tags', 'metadata', 'priority', or 'related_ids'. The schema lists defaults but the description does not leverage them.

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

Purpose4/5

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

The description clearly states the action ('Store') and resource ('new memory'), and lists key features (auto-embedding, summary, entity extraction, TTL) that distinguish it from update, delete, or query tools. However, it does not explicitly contrast with siblings like memory_update or memory_use.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The description does not mention prerequisites, typical use cases, or when not to use it. The default source 'assistant' is not explained.

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

memory_syncC

Sync a portable DB after git pull. Auto-activates on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNo
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

Mentions auto-activates on success, but lacks details on safety, auth requirements, or side effects. No annotations to supplement.

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

Conciseness3/5

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

One sentence, no waste, but oversimplified; could add parameter context without being verbose.

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

Completeness2/5

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

Output schema exists but unmentioned; with many siblings, more context on what 'sync' entails and return value is needed.

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

Parameters2/5

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

Schema coverage is 0%, and description does not explain 'slug' or 'project_path' beyond names, leaving meaning ambiguous.

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

Purpose4/5

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

Describes a specific action: syncing a portable DB after git pull, which distinguishes it from siblings like memory_make_portable or memory_check_update.

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

Usage Guidelines2/5

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

Only states after git pull, but provides no guidance on when not to use or alternatives among siblings.

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

memory_updateC

Update an existing memory. Re-embeds if title/content changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
titleNo
statusNo
contentNo
projectNo
metadataNo
priorityNo
memory_idYes
related_idsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

The only behavioral disclosure is the re-embedding trigger on title/content change. With no annotations, the description should cover idempotency, required permissions, error scenarios, and return behavior, but it does not.

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

Conciseness4/5

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

Two brief sentences, front-loaded with the core action. However, conciseness sacrifices necessary detail for a tool with many parameters.

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

Completeness1/5

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

Given 9 parameters, no schema descriptions, no annotations, and an output schema, the description is severely incomplete. It fails to explain parameter usage, return values, or typical use cases.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate, but it provides no meaning for any of the 9 parameters. The parameter names are self-explanatory to some degree, but the description adds no extra value.

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

Purpose4/5

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

The description clearly states the verb 'update' and resource 'memory', and hints at a side effect (re-embedding). It distinguishes from sibling creation/deletion tools, though it does not explicitly mention that it requires an existing memory.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like memory_store or memory_delete. Among many sibling tools, no context is provided for decision-making.

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

memory_useC

Set the active project. Subsequent tools use it by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It mentions that subsequent tools use the active project by default, but it does not disclose potential side effects, reversibility, or permission requirements.

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

Conciseness5/5

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

The description is extremely concise—two short sentences with no wasted words. Each sentence serves a clear purpose: the first defines the action, the second explains the consequence.

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

Completeness2/5

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

Given the presence of many sibling tools and an output schema, the description leaves significant gaps. It does not explain what 'active project' means, how it interacts with other tools, or what the output contains.

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

Parameters1/5

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

The description does not mention the 'project' parameter at all. With 0% schema description coverage, the description fails to add any meaning beyond the bare schema, leaving the agent uninformed about what values to provide.

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

Purpose5/5

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

The description clearly states 'Set the active project,' which is a specific verb and resource. It distinguishes itself from sibling tools like memory_init_project and memory_rename_project by focusing on setting the active project for default use.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as memory_attach_project or memory_init_project. It does not specify prerequisites or scenarios where this tool is appropriate.

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

memory_versionA

Get the current version of the Memory MCP server and configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

The description states the tool performs a read operation ('Get'), which is non-destructive. However, with no annotations provided, the description does not disclose potential latency, authentication requirements, or whether the version is cached. For a simple version check, this is adequate but minimally transparent.

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

Conciseness5/5

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

The description is a single, clear sentence with no unnecessary words. It is front-loaded with the key information ('Get the current version') and is appropriately sized for a simple tool. Every word contributes meaning.

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

Completeness5/5

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

Given the tool's low complexity (no parameters, trivial function) and the existence of an output schema (which covers return values), the description is complete. It specifies what information is returned (version of server and configuration) and no additional context is needed.

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

Parameters4/5

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

The tool has no parameters, so the description does not need to add parameter details. The input schema is fully defined and empty, achieving 100% coverage. The description adds no extra parameter semantics, but none are needed, justifying the baseline score of 4.

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

Purpose5/5

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

The description clearly states the tool retrieves the current version of the Memory MCP server and configuration. The verb 'Get' is specific, and the resource 'version of the Memory MCP server and configuration' is unambiguous. This distinguishes it from all sibling tools, which focus on data operations, project management, or configuration changes.

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

Usage Guidelines4/5

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

The description implicitly indicates that this tool is for checking version information. No sibling tool provides version data, so there are no alternatives to exclude. However, explicit guidance on when to use it (e.g., before performing updates or troubleshooting) is absent but not critical given the tool's simplicity.

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

Tool Schema Changelog

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

  1. 24 tool updatesv0.5.0
    • First observedmemory_attach_project
    • First observedmemory_check_update
    • First observedmemory_delete
    • First observedmemory_export
    • First observedmemory_get_rules
    • First observedmemory_import
    • First observedmemory_init_project
    • First observedmemory_list
    • First observedmemory_list_projects
    • First observedmemory_make_portable
    • First observedmemory_model_info
    • First observedmemory_project_info
    • First observedmemory_provenance
    • First observedmemory_recall
    • First observedmemory_reembed
    • First observedmemory_search
    • First observedmemory_session_end
    • First observedmemory_session_start
    • First observedmemory_set_model
    • First observedmemory_store
    • First observedmemory_sync
    • First observedmemory_update
    • First observedmemory_use
    • First observedmemory_version

TDQS

B3/5.0

Scored across 24 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with descriptions that resolve potential overlap. Tools for storing, searching, recalling, updating, and deleting memories are well-differentiated. Retrieval tools (search, recall, list) each target different access patterns.

Naming Consistency4/5

All tools start with 'memory_' forming a consistent prefix. However, the second component mixes verb_noun (memory_store, memory_search), noun phrases (memory_project_info), and bare verbs (memory_use), which is somewhat inconsistent. The pattern is more noun-heavy than typical verb_noun conventions.

Tool Count3/5

With 24 tools, the server offers extensive functionality, but this exceeds the typical well-scoped range of 3-15. While the domain (memory management with projects, sessions, models, git sync) justifies many tools, the count feels heavy. A reduction or grouping could improve coherence.

Completeness4/5

The tool set covers most expected operations for a memory server: CRUD for memories, project management, session handling, model configuration, export/import, and audit trails. Missing features include project deletion and rule editing, which are minor gaps. The surface is largely complete for the stated purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers