Skip to main content
Glama
AbdulqaderAhmed

memory-manager-mcp

memory-manage-mcp

Your project remembers, no matter which AI agent you use.

memory-manage-mcp is a local-first, database-free persistent memory server for AI coding agents, exposed over the Model Context Protocol (MCP).

Start a task in VS Code with GitHub Copilot, continue it in Cursor, finish it with Claude Code or Gemini CLI — the next agent automatically recognizes that it is working on the same project and continues from where the previous agent stopped.

  • šŸ—‚ļø Local-first — everything is stored as plain files under ~/.agent-memory/. No cloud, no API keys, no external database, no network calls.

  • šŸ¤ Agent & IDE independent — any MCP client works: VS Code, Cursor, Claude Desktop, Claude Code, Gemini CLI, Windsurf, …

  • šŸ” Project-aware — projects are identified by git remote URL (or .agent-memory.json, or path), so the same repo cloned to different machines/paths shares one memory.

  • 🧠 Curated memory, not chat logs — decisions, requirements, architecture, tasks, problems, solutions and progress are stored as distilled, ranked entries.

  • šŸ¤œšŸ¤› Structured handoffs — before an agent stops, it writes what was done, what remains, known problems and the recommended next action.

  • šŸ›”ļø Crash-safe & concurrency-safe — atomic writes (temp → fsync → rename), append-only logs, file locks.

  • 🩺 CLI + doctor — inspect projects, search memory, and diagnose your setup.


Requirements

  • Node.js >= 18

  • (Optional) git on your PATH — used read-only for project detection and unfinished-work signals.

Related MCP server: Jarvis Markdown MCP

Install

# from the repository
git clone <this-repo> memory-manager-mcp
cd memory-manager-mcp
pnpm install
pnpm run build

# or install globally
pnpm add -g memory-manage-mcp   # once published

Verify the installation:

node dist/cli/index.js doctor
# Memory MCP is ready.

One command detects every supported AI client installed on your machine and registers the memory server in each client's MCP config:

memory-manage-mcp setup            # or: node dist/cli/index.js setup

Supported clients (one dedicated registry per client):

Client

Config file(s) written

VS Code (Copilot)

%APPDATA%/Code/User/mcp.json — plus Code - Insiders and VSCodium variants (servers key, type: "stdio")

Cursor

~/.cursor/mcp.json

Claude Desktop

%APPDATA%/Claude/claude_desktop_config.json — plus Windows Store/MSIX installs (%LOCALAPPDATA%/Packages/Claude_*/LocalCache/...)

Claude Code

~/.claude.json

Antigravity

~/.gemini/config/mcp_config.json and ~/.gemini/antigravity-ide/mcp.json

Gemini CLI

~/.gemini/settings.json

Windsurf

~/.codeium/windsurf/mcp_config.json

Codex CLI

~/.codex/config.toml (TOML [mcp_servers.manager-mcp] table)

  • Only clients that are actually installed are touched; others are skipped.

  • Existing config files are preserved (a .bak backup is created first) and written atomically — other MCP servers you configured stay intact.

  • The server is registered under the name manager-mcp — that is the prefix you will see on its tools in your IDE (e.g. manager-mcp_save_memory). Entries left under the old memory key by earlier versions are migrated automatically on the next setup.

  • Self-registering: the MCP server also registers itself silently the first time it starts, so even a bare node dist/index.js launch ends up configured everywhere. Disable with AGENT_MEMORY_NO_AUTO_SETUP=1.

Useful flags:

memory-manage-mcp setup --dry-run          # show what would change, write nothing
memory-manage-mcp setup --client cursor    # configure a single client
memory-manage-mcp setup --force            # configure even if not detected as installed
memory-manage-mcp setup --json             # machine-readable report
memory-manage-mcp uninstall                # remove the memory entry from all client configs
memory-manage-mcp uninstall --client vscode

After setup, restart your IDE/client and the 15 memory tools are available. Prefer manual configuration? See the next section.

How do I know it is working?

  1. memory-manage-mcp doctor — the Client registration check lists every client where the server is registered as manager-mcp:

    āœ“ Client registration   registered as "manager-mcp" in: vscode, cursor
  2. In your IDE — after restarting, the MCP tool list should show the 15 tools prefixed with manager-mcp_ (e.g. manager-mcp_initialize_project_context, manager-mcp_save_memory).

  3. Ask your agent — tell it to call initialize_project_context; a successful briefing response means the server is live and the project is registered.

Connect your AI client manually

The server speaks MCP over stdio. Point any MCP client at node <path-to>/dist/index.js (or memory-manage-mcp if installed globally).

VS Code (GitHub Copilot)

Add to .vscode/mcp.json (workspace) or your user MCP settings:

{
  "servers": {
    "manager-mcp": {
      "type": "stdio",
      "command": "node",
      "args": ["C:/path/to/memory-manager-mcp/dist/index.js"]
    }
  }
}

Cursor

Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):

{
  "mcpServers": {
    "manager-mcp": {
      "command": "node",
      "args": ["C:/path/to/memory-manager-mcp/dist/index.js"]
    }
  }
}

Claude Desktop / Claude Code

claude_desktop_config.json (or claude mcp add):

{
  "mcpServers": {
    "manager-mcp": {
      "command": "node",
      "args": ["C:/path/to/memory-manager-mcp/dist/index.js"]
    }
  }
}
claude mcp add manager-mcp -- node C:/path/to/memory-manager-mcp/dist/index.js

Gemini CLI

gemini mcp add manager-mcp -- node C:/path/to/memory-manager-mcp/dist/index.js

Any other MCP client

{
  "manager-mcp": {
    "command": "node",
    "args": ["/absolute/path/to/memory-manager-mcp/dist/index.js"]
  }
}

Tip: run pnpm run dev during development — it starts the server from TypeScript sources via tsx.

How project detection works

When a tool receives a workspacePath (or falls back to the current directory), the project identity is derived with this priority:

  1. Git remote URL — https://github.com/company/pms.git, git@github.com:company/pms.git and ssh://… all normalize to github.com/company/pms, then hash to a stable proj_… id. Same repo, any machine, any clone path → same memory.

  2. .agent-memory.json — drop this file in a project root to force an identity (for non-git projects or monorepos):

    { "projectId": "my-project", "name": "My Project" }
  3. Absolute path — last resort; memory is tied to that exact path.

Projects are auto-registered on first use — no setup step required.

Storage layout

Everything lives under ~/.agent-memory/ (override with the AGENT_MEMORY_HOME environment variable):

~/.agent-memory/
ā”œā”€ā”€ config.json                  # server configuration
ā”œā”€ā”€ projects.json                # project registry
└── projects/
    └── proj_<hash>/
        ā”œā”€ā”€ project.json         # project metadata
        ā”œā”€ā”€ context.json         # compact project context
        ā”œā”€ā”€ memories.jsonl       # append-only memory log (versioned + tombstones)
        ā”œā”€ā”€ tasks.json           # task list
        ā”œā”€ā”€ decisions.json       # decision log
        ā”œā”€ā”€ sessions.jsonl       # agent working sessions
        └── handoffs/
            ā”œā”€ā”€ latest.json      # most recent handoff
            └── history/         # all previous handoffs

All writes are atomic (temp file → fsync → rename) or append-only with fsync; list mutations happen under a per-project lock file. Corrupt or partially-written lines are skipped gracefully on read.

Configuration

~/.agent-memory/config.json is created with defaults on first run:

{
  "maxContextItems": 20,
  "enableRawSessions": true,
  "search": { "maxResults": 20 }
}

Key

Meaning

maxContextItems

Max items per section in the generated briefing

enableRawSessions

Keep raw session records (summaries are always kept)

search.maxResults

Default result limit for search_memory

The MCP tools (16)

Tool

Purpose

initialize_project_context

Call first. Detects/registers the project and returns a compact briefing: current task, latest handoff, previous conversation digest, completed/remaining work, problems, decisions, recommended next action.

get_project_context

Lightweight fetch of the stored project context.

save_memory

Save a curated memory (decision, requirement, architecture, task, problem, solution, progress, fact, preference, constraint, discovery). Pass id to update.

get_memory

Retrieve one memory by id.

search_memory

Ranked keyword search across memories, tasks, decisions, handoffs, session summaries, conversation digests and context.

get_current_task

Most relevant open task + other open tasks.

update_task

Create or update a task (active, in_progress, completed, blocked, abandoned).

record_decision

Record an important decision (long-lived in ranking).

get_decisions

List decisions, newest first.

create_handoff

Call before stopping. Structured handoff: completed, remaining, problems, changed files, next action.

get_latest_handoff

Fetch the most recent handoff (optionally with history).

start_session

Begin tracking an agent working session.

save_session_digest

Call before stopping. Compress the ENTIRE conversation into one detailed digest (max 4000 chars); injected into the next chat's briefing.

finish_session

End a session with status + summary.

delete_project_memory

Permanently delete one project's memory (confirm: true).

clear_memory

Permanently delete all memory (confirm: true + phrase "delete everything").

The user never types memory commands — everything happens automatically behind the scenes:

  1. On start → the agent calls initialize_project_context by itself. The briefing includes the previous conversation's digest, so the agent understands the last chat from first message to last. If unfinished work is detected, it asks the user once: "Would you like to continue where you left off? (yes/no)" — yes resumes from the recommended next action, no starts fresh.

  2. While working → the agent silently saves decisions, requirements, problems and progress with save_memory, and tracks work with update_task.

  3. Before stopping → the agent silently calls save_session_digest (compresses the whole conversation into a compact digest), then create_handoff + finish_session, so the next chat (even in another IDE) can pick up seamlessly.

A machine-readable version of this guidance lives in docs/AGENT_GUIDE.md — you can reference it from your client's rules/instructions file.

CLI

memory-manage-mcp <command> [--workspace <path>] [--json]

  projects                  List known projects
  project current           Detect the project for the current directory
  project inspect [id]      Inspect a project's stored memory
  memory search <query>     Search memory across a project
  handoff latest            Show the most recent handoff
  sessions                  List agent sessions
  doctor                    Diagnose the installation
  setup [--client <id>] [--force] [--dry-run]
                            Auto-configure installed AI clients
  uninstall [--client <id>] Remove the memory entry from client configs
  clear --all --yes         Permanently delete ALL memory

Every command has built-in help — use -h / --help after the command, or help <command>:

memory-manage-mcp --help              # overview of all commands
memory-manage-mcp help setup          # detailed help for one command
memory-manage-mcp setup --help        # same thing
memory-manage-mcp doctor -h           # short flag works too

Examples:

memory-manage-mcp doctor
memory-manage-mcp project current --workspace ./my-app
memory-manage-mcp memory search "employee permission"
memory-manage-mcp handoff latest --json

When developing from source, prefix commands with node dist/cli/index.js instead of memory-manage-mcp.

Privacy

  • All data stays on your machine in ~/.agent-memory/. Nothing is ever sent anywhere.

  • Raw conversation transcripts are never stored by default; only distilled memories you explicitly save.

  • Delete a single project with delete_project_memory, or everything with memory-manage-mcp clear --all --yes.

Troubleshooting

Symptom

Fix

Client can't see the tools

Make sure command is an absolute path to node and args[0] is the absolute path to dist/index.js. Run pnpm run build first.

Wrong project detected

Check memory-manage-mcp project current. Add a .agent-memory.json to pin an identity, or add a git remote.

Same repo, different memory per machine

Ensure the git remote URL is set (git remote -v) — it is the primary identity.

Anything else

Run memory-manage-mcp doctor (or pnpm run doctor) and read the check list.

Development

pnpm install
pnpm run build        # compile TypeScript → dist/
pnpm run dev          # run the MCP server from sources (tsx)
pnpm run typecheck    # strict type check
pnpm test             # vitest suite (61 tests: unit + CLI + MCP stdio integration)
pnpm run test:watch

Architecture

types ─► storage (MemoryStore interface ─► FileSystemMemoryStore)
              │
git service ─►│
              ā–¼
project (identity / detector / registry)
              ā–¼
memory manager + ranker ─► search ─► context (compressor / unfinished / builder)
              ā–¼
service facade ─► MCP tools ─► stdio server
              └──────────────► CLI + doctor

The MemoryStore interface (src/storage/interface.ts) is the only place that touches persistence — swap in SQLite, Postgres or a cloud backend later without changing any business logic.

License

MIT — see LICENSE.

Available Tools

16 tools
clear_memoryClear all memoryA

PERMANENTLY delete ALL memory for ALL projects. Requires confirm=true and the phrase "delete everything" in confirmPhrase.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true to actually delete.
confirmPhraseYesMust be exactly "delete everything" to proceed.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries full burden. It discloses the permanent destructive nature ('PERMANENTLY delete'), the full scope ('ALL memory for ALL projects'), and the mandatory safety confirmation requirements (confirm=true and the exact phrase). This is thorough for a high-risk operation.

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

Conciseness5/5

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

A single, front-loaded sentence with no filler. It conveys the essential safety warning first, then the parameter requirements. Every word earns its place.

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 destructive tool with only two parameters and no output schema, the description fully covers the necessary context: scope, permanence, and required safeguards. It allows an agent to safely invoke the tool correctly.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description reinforces the parameter requirements but does not add meaning beyond the schema's own descriptions. It simply restates that confirm must be true and confirmPhrase must be 'delete everything', which is already in the schema.

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

Purpose5/5

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

The description clearly states the action ('PERMANENTLY delete') and resource ('ALL memory for ALL projects'), which distinguishes it from the sibling tool delete_project_memory that likely targets a single project. The scope is explicit and unambiguous.

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

Usage Guidelines4/5

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

The description implies when to use this tool (when needing to wipe all memory across projects) by highlighting 'ALL projects'. It does not explicitly name alternatives like delete_project_memory, but the scope differentiation is clear enough for an agent to infer the boundary.

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

create_handoffCreate handoffA

Create a structured handoff BEFORE ending or pausing work, so the next agent (possibly in another IDE) can continue seamlessly. Include what was completed, what remains, known problems, changed files and the recommended next action.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYesThe task being handed off.
notesNo
agentIdNoIdentifier of the calling agent/client, e.g. "cursor", "vscode", "claude-cli".
problemsNo
completedNo
remainingNo
sessionIdNo
nextActionYesRecommended next action for the next agent.
changedFilesNo
workspacePathNoWorkspace directory of the project. Defaults to the server working directory.

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It explains the purpose and intended content, but does not disclose side effects such as whether the handoff overwrites prior ones, whether an active session is required, or how the handoff is stored/retrieved. This leaves moderate gaps beyond what is obvious from the action itself.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the action and timing, then listing the required content. Every word earns its place; there is no redundancy or filler.

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

Completeness3/5

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

Given the tool has 10 parameters and no output schema, the description provides a solid overview of purpose and main content but omits important behavioral details such as persistence semantics, overwrite behavior, and the significance of optional parameters like sessionId or workspacePath. It is adequate but has clear gaps for a tool of this complexity.

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

Parameters4/5

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

Schema description coverage is only 40%, but the description compensates by naming five key fields to include (completed, remaining, known problems, changed files, next action), which maps to schema parameters. Combined with the schema's own descriptions for task, nextAction, agentId, and workspacePath, most parameters gain meaning. A few params (notes, sessionId) remain unexplained, but the description adds significant value.

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

Purpose5/5

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

The description states a specific verb ('Create'), a resource ('structured handoff'), and a clear timing ('BEFORE ending or pausing work'). It also includes the purpose ('so the next agent can continue seamlessly'), which distinguishes it from sibling tools like get_latest_handoff (read operation) or save_memory (memory storage).

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

Usage Guidelines4/5

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

The description explicitly identifies when to use the tool: 'BEFORE ending or pausing work.' It provides clear context for invocation, though it does not explicitly name alternatives or when not to use it. This fits 'clear context, no exclusions' rather than reaching a full 5.

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

delete_project_memoryDelete project memoryA

PERMANENTLY delete all stored memory for the current project. Requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true to actually delete.
workspacePathNoWorkspace directory of the project. Defaults to the server working directory.

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the burden of behavioral disclosure. It explicitly warns of permanence ('PERMANENTLY delete'), scope ('all stored memory'), and the safety requirement ('Requires confirm=true'), which are important for a destructive operation. It does not mention potential side effects on workspacePath or specific auth needs, but the key risks are covered.

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

Conciseness5/5

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

The description is a single sentence that front-loads the destructive nature ('PERMANENTLY delete') and includes the critical requirement. There is no wasted wording.

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

Completeness4/5

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

For a destructive delete tool with two parameters, no output schema, and no annotations, the description covers the essential aspects: action, scope, permanence, and confirmation. It lacks alternatives to differentiate from clear_memory, and does not mention return value, but the core context is sufficiently complete.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description does not add product-specific meaning beyond the schema; it only restates the confirm requirement. The workspacePath parameter's purpose and default are clear from the schema itself.

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 specifies the action ('PERMANENTLY delete'), the resource ('all stored memory for the current project'), and the required confirmation parameter. This distinguishes it from sibling tools like get_memory or save_memory, though it does not explicitly differentiate from clear_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 is provided on when to use this tool versus alternatives such as clear_memory or other deletion tools. The description only states the confirmation requirement, not the context or exclusions for using it.

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

finish_sessionFinish sessionB

Mark a session as finished. Statuses: completed, interrupted, abandoned. Include a short summary of what happened.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFinal session status. Defaults to "completed".
summaryNo
sessionIdYes
workspacePathNoWorkspace directory of the project. Defaults to the server working directory.

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It states the core action and statuses but omits side effects, reversibility, or what happens to the session after finishing. The description adds little beyond the schema.

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

Conciseness5/5

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

The description is one sentence with no filler. The essential information (action, statuses, summary requirement) is front-loaded and 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?

This is a mutation tool with no annotations and no output schema. The description is under-specified: it doesn't clarify when to use finish_session versus save_session_digest, whether finishing affects the current task, or what state the session enters. These gaps could mislead an agent.

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

Parameters3/5

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

Schema coverage is 50%, and the description adds the requirement for a 'short summary' and restates the status enum. It does not clarify the distinction between interrupted and abandoned, nor explain sessionId or workspacePath 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 states a specific action ('Mark a session as finished') on a clear resource (session), and enumerates valid statuses. This differentiates it from sibling tools like start_session and save_session_digest.

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

Usage Guidelines3/5

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

Usage is implied: finish a session with a status and summary. However, there are no explicit when-to-use instructions, alternatives, or exclusions. The statuses provide some context but don't fully clarify when each status should be chosen.

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

get_current_taskGet current taskA

Returns the most relevant open task for the project, plus other open tasks.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspacePathNoWorkspace directory of the project. Defaults to the server working directory.

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. The verb 'Returns' implies a read-only operation, but it does not explicitly state safety, how relevance is determined, or any edge-case behavior. Adds some context about output but lacks depth.

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

Conciseness5/5

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

Single sentence with no filler, front-loads the primary action, and is appropriately sized for the tool's simplicity.

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

Completeness4/5

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

For a simple getter with one optional parameter, the description provides a high-level summary of the return value. However, it does not specify the exact data structure (e.g., array vs object) or field details, which is a minor gap given no output schema.

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

Parameters3/5

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

Schema description covers the single optional parameter workspacePath with 100% coverage, so the description need not provide parameter details. The description does not mention the parameter, and baseline 3 applies due to high schema coverage.

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

Purpose5/5

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

Description uses specific verb 'Returns' and clearly identifies the resource: 'most relevant open task for the project, plus other open tasks.' This distinguishes it from sibling tools like get_project_context and get_decisions.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives. The description implies usage for retrieving the current task, but does not mention exclusions or alternative tools, leaving the agent to infer context.

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

get_decisionsGet decisionsA

List recorded decisions for the project (newest first).

ParametersJSON Schema
NameRequiredDescriptionDefault
activeOnlyNoExclude superseded decisions.
workspacePathNoWorkspace directory of the project. Defaults to the server working directory.

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses that results are sorted newest first, which is a behavioral trait, but it does not explicitly confirm read-only semantics, permissions, or output format. 'List' implies read-only, which adds some clarity, but more detail would be expected.

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 sentence, front-loaded with the action and object. Every word earns its place, with no redundant or vague phrasing.

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

Completeness4/5

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

For a simple read tool with two optional parameters and no output schema, the description adequately covers what the tool does. It implies the return of a list of decisions, though it does not describe the structure or mention the activeOnly filter (which is in the schema). Given the low complexity, this is sufficient.

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

Parameters3/5

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

Schema description coverage is 100% (both activeOnly and workspacePath are documented in the schema). The description itself adds no parameter-level detail, so it does not exceed the baseline of relying on 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 uses a specific verb ('List'), names the resource ('recorded decisions'), and adds ordering ('newest first'). This clearly distinguishes it from write tools like record_decision and other memory tools, making the purpose unambiguous.

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

Usage Guidelines2/5

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

The description does not provide explicit guidance on when to use this tool versus alternatives such as record_decision or get_memory. It merely says 'for the project' without mentioning exclusions or alternative scenarios. The agent is left to infer usage from context.

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

get_latest_handoffGet latest handoffB

Retrieve the most recent handoff for the project.

ParametersJSON Schema
NameRequiredDescriptionDefault
historyNoAlso include recent handoff history.
workspacePathNoWorkspace directory of the project. Defaults to the server working directory.

TDQS

B3/5.0
Behavior2/5

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

With no annotations, the description carries the full burden, but it only states that the tool retrieves the most recent handoff. It does not disclose whether this is read-only, how the history flag affects behavior, or what happens if no handoff exists. This is minimal 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 short sentence and is not verbose, but it essentially restates the title ('Get latest handoff' vs 'Retrieve the most recent handoff'), adding no new information and thus not fully earning 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?

For a simple tool with no output schema and no annotations, the description is underdeveloped. It does not explain the significance of the history flag, the default workspace path behavior, or how this differs from similar retrieval tools, leaving the agent with insufficient context to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, and both parameters (history, workspacePath) are already described in the schema. The description adds no additional meaning about the 'project' context or how the parameters affect the result, so it meets the baseline without compensating further.

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 action ('Retrieve') and resource ('the most recent handoff'), clearly distinguishing it from sibling tools like create_handoff and get_project_context. It precisely states the tool's function without ambiguity.

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 create_handoff or get_project_context. It lacks any context about scenarios, prerequisites, or exclusions.

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

get_memoryGet memoryA

Retrieve a single memory by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
memoryIdYesMemory id (mem_...).
workspacePathNoWorkspace directory of the project. Defaults to the server working directory.

TDQS

A3.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 the full transparency burden. It only says 'Retrieve' without confirming that the operation is read-only or non-destructive, nor does it describe behavior such as return when not found or any side effects. Adding details like 'read-only' or 'does not modify' would improve transparency.

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

Conciseness5/5

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

The description is a single sentence of 7 words, with no filler. It is front-loaded with the core action and achieves maximum conciseness.

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?

Although the tool is simple, the description lacks context about return values (no output schema) and the workspacePath parameter's effect. Given multiple sibling tools, a bit more context on how this fits the workflow would improve completeness.

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

Parameters3/5

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

Schema description coverage is 100%, with memoryId and workspacePath both described. The description adds no extra meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states the tool retrieves a single memory by its id, with a specific verb and resource. It distinguishes itself from search_memory (which likely queries) and save_memory (which writes).

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 phrase 'by id' implies usage when memoryId is known, but no explicit when-to-use or when-not-to-use guidance is given. Alternatives like search_memory are not mentioned, leaving the usage context implicit.

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

get_project_contextGet project contextA

Returns the stored compact project context (name, technology, current task, status, summary, last agent). Lighter than initialize_project_context.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspacePathNoWorkspace directory of the project. Defaults to the server working directory.

TDQS

A4/5.0
Behavior3/5

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

No annotations are present, so the description must disclose behavior itself. It communicates a read-only action via 'Returns' and adds a performance trait via 'Lighter than initialize_project_context.' Missing are edge cases like behavior when no context is stored or dependencies on workspacePath.

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

Conciseness5/5

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

The description is two sentences, front-loaded with an action and resource, and includes a useful comparative note. Every word earns its place, with no filler or redundancy.

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

Completeness4/5

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

Given the tool's simplicity (one optional param, no output schema, no annotations), the description covers the key aspects: what is returned and a comparison with a sibling. It could mention what happens when no stored context exists, but overall it is appropriately complete for the complexity.

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

Parameters3/5

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

Schema description coverage is 100%, with the single optional parameter workspacePath fully described. The description adds no parameter-specific information but does not need to, as the schema already provides equal value.

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

Purpose5/5

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

The description uses a specific verb ('Returns') and identifies the exact resource ('stored compact project context') along with its fields (name, technology, current task, status, summary, last agent). It also distinguishes from a sibling tool by noting it is 'Lighter than initialize_project_context'.

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

Usage Guidelines4/5

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

Provides clear context by contrasting with initialize_project_context, implying use for a lightweight retrieval rather than full initialization. However, it does not explicitly state exclusions or how it relates to other context siblings like get_current_task or get_memory.

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

initialize_project_contextInitialize project contextA

Call this FIRST, automatically, at the start of EVERY chat/session — without the user asking. Detects the current project (via git remote, .agent-memory.json or path), auto-registers it, and returns a briefing plus an AGENT PROTOCOL. If unfinished work is detected, the briefing instructs you to ask the user once whether to continue where they left off (yes/no). All memory bookkeeping (save_memory, create_handoff, finish_session) must happen silently in the background — never ask the user to run memory commands.

ParametersJSON Schema
NameRequiredDescriptionDefault
focusNoOptional focus topic to bias memory selection.
agentIdNoIdentifier of the calling agent/client, e.g. "cursor", "vscode", "claude-cli".
workspacePathNoWorkspace directory of the project. Defaults to the server working directory.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description fully carries the transparency burden. It discloses several important behaviors: auto-registration, project detection via git remote/.agent-memory.json/path, returning a briefing and protocol, conditional user prompt about unfinished work, and silent background memory bookkeeping. It does not explicitly state whether the tool modifies files or if any destructive actions occur, but 'auto-registers' implies a state change, which is adequately transparent for an initialization tool.

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

Conciseness4/5

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

The description is four sentences long and information-dense, with no wasted words. It is slightly longer than necessary but each sentence carries essential guidance (when to call, what it does, when to ask the user, how to handle memory commands). The critical 'call first' instruction is front-loaded, which is well-structured.

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

Completeness4/5

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

Given the tool's moderate complexity, no output schema, and no annotations, the description covers the essential context: behavior, return value (briefing + protocol), and usage pattern. It does not describe error cases or the exact structure of the briefing, but those are not strictly required for the agent to invoke the tool correctly. The description is sufficient for an agent to know when and how to call it.

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

Parameters3/5

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

Schema coverage is 100%, and the schema descriptions for focus, agentId, and workspacePath are already clear. The tool description itself does not add additional parameter-level meaning beyond what the schema provides. According to the rubric, this lands at the baseline score of 3.

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

Purpose5/5

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

The description states a specific verb ('initialize'), the resource ('project context'), and the exact behavior: detect the current project, auto-register it, and return a briefing plus an AGENT PROTOCOL. It clearly distinguishes itself from sibling tools like get_project_context (which retrieves existing context) and save_memory (which stores specific memories) by positioning itself as the session-start entry point.

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

Usage Guidelines5/5

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

The description is explicit about when to use it: 'Call this FIRST, automatically, at the start of EVERY chat/session — without the user asking.' It also provides a clear exclusion: memory bookkeeping (save_memory, create_handoff, finish_session) must happen silently and never be left to the user. This leaves no ambiguity about the tool's role versus its siblings.

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

record_decisionRecord decisionA

Record an important project decision (optionally with rationale and rejected alternatives). Decisions stay relevant for a long time.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdNoIdentifier of the calling agent/client, e.g. "cursor", "vscode", "claude-cli".
contentYesThe decision, e.g. "Use RBAC for employee permissions."
rationaleNo
sessionIdNo
confidenceNo
importanceNo
alternativesNo
workspacePathNoWorkspace directory of the project. Defaults to the server working directory.

TDQS

A3.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 must carry the full burden of disclosing behavioral traits. It only adds 'Decisions stay relevant for a long time', which hints at long-term persistence but omits details about overwrites, idempotency, return values, or required session/workspace context. This is minimal behavioral disclosure for a write operation.

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

Conciseness5/5

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

The description is two concise sentences with no filler. It is front-loaded with the primary action and then adds a note on long-term relevance. Every word contributes to understanding the tool's core purpose.

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 8 parameters, no output schema, no annotations, and multiple sibling tools, the description is too sparse. It does not explain return behavior, when to use over save_memory, or the meaning of several parameters. This makes it incomplete for an agent deciding whether and how to invoke the tool.

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 only 38%, so the description must compensate. It explains rationale and rejected alternatives but does not address confidence, importance, agentId, sessionId, or workspacePath semantics. The required content is obvious from the tool name, but other parameters remain unclear, making the description insufficient for the low schema coverage.

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

Purpose5/5

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

The description uses the specific verb 'Record' with the resource 'important project decision', clearly distinguishing it from sibling tools like save_memory or get_decisions. It also mentions optional components (rationale, rejected alternatives), making the scope unambiguous.

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

Usage Guidelines4/5

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

The description gives clear context: record important project decisions with rationale and alternatives. It does not explicitly discuss when not to use or name alternatives like save_memory, but the purpose is distinct enough to imply appropriate usage. A score of 4 reflects the clear context without formal exclusions.

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

save_memorySave memoryA

Save a curated memory for the current project. Use for decisions, requirements, architecture, tasks, problems, solutions, progress, facts, preferences, constraints and discoveries. Do NOT save raw conversation text — save distilled, useful information.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoProvide to update an existing memory.
tagsNo
typeYesMemory type.
sourceNoWhere this came from, e.g. "user", "debugging".
agentIdNoIdentifier of the calling agent/client, e.g. "cursor", "vscode", "claude-cli".
contentYesThe distilled information to remember.
sessionIdNo
confidenceNo0..1, default 0.7.
importanceNo0..1, default 0.5.
workspacePathNoWorkspace directory of the project. Defaults to the server working directory.

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden. It adds useful curation guidance but fails to disclose critical traits like whether saving is idempotent, whether it updates or creates when an id is provided, or what the side effects are. This is a significant gap for a write operation.

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

Conciseness5/5

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

The description is two short sentences, front-loaded with the purpose and then a valuable usage/exclusion note. Every word earns its place; no filler or redundancy.

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

Completeness3/5

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

With no annotations and an output schema absent, the description provides a clear scope and use cases but misses behavioral details like update semantics, interaction with other memory tools (e.g., get_memory, search_memory), and lifecycle. It is adequate but has notable gaps for a tool this complex.

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

Parameters3/5

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

Schema description coverage is 80%, so most parameters (id, type, content, etc.) are already documented. The tool description adds minimal parameter context beyond the concept of 'curated' and 'distilled' content, which aligns with the schema but does not go further. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Save a curated memory for the current project' with a specific verb and resource. It lists the categories it applies to (decisions, requirements, architecture, etc.) and explicitly excludes raw conversation text, distinguishing it from sibling memory tools.

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

Usage Guidelines4/5

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

The description provides explicit when-to-use guidance via the list of memory types and a clear exclusion ('Do NOT save raw conversation text'). However, it does not name alternative tools for specific scenarios (e.g., record_decision for decisions), so it falls just short of explicit alternative naming.

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

save_session_digestSave session digestA

Compress and store a detailed digest of the ENTIRE current conversation (from the first message to now): what was discussed, decided, built, changed, and where work was left off. Call this silently BEFORE ending or pausing any chat. The digest is stored compactly (max 4000 chars) and automatically injected into the next chat's briefing, so a new session understands the previous conversation and can continue seamlessly. Do NOT save raw transcripts — write a distilled, detailed narrative.

ParametersJSON Schema
NameRequiredDescriptionDefault
digestYesDetailed-but-compact summary of the whole conversation (max 4000 chars).
agentIdNoIdentifier of the calling agent/client, e.g. "cursor", "vscode", "claude-cli".
sessionIdNoSession to attach the digest to. Defaults to the most recent session.
workspacePathNoWorkspace directory of the project. Defaults to the server working directory.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the burden of disclosure. It reveals that the digest is 'stored compactly (max 4000 chars)' and 'automatically injected into the next chat's briefing', which are key behavioral traits. It also instructs to call silently and to produce a narrative, but does not mention persistence details, overwrite behavior, authentication, or failure modes.

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

Conciseness5/5

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

The description is three sentences, front-loaded with the core purpose, and every sentence provides essential information: what it does, when to call, storage behavior, and content style. No filler or redundancy.

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

Completeness4/5

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

For a 4-parameter tool with no output schema, the description is quite complete. It explains the purpose, timing, content requirements, storage size, and downstream use (next session briefing). Minor gaps include lack of information about return values or error handling, but these are not critical given the tool's nature.

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

Parameters4/5

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

Schema description coverage is 100%, so parameters are already documented. The description adds meaningful context beyond the schema, such as the required content ('what was discussed, decided, built, changed'), the max 4000 chars, and the instruction to write a distilled narrative rather than a raw transcript. This helps the agent construct the 'digest' parameter appropriately.

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 and resource: 'Compress and store a detailed digest of the ENTIRE current conversation'. It clearly defines the scope (from first message to now) and differentiates from siblings like save_memory or create_handoff by emphasizing the full-conversation digest and its automatic injection into the next session's briefing.

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

Usage Guidelines4/5

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

The description explicitly states when to call: 'Call this silently BEFORE ending or pausing any chat.' It also provides guidance on what to write ('Do NOT save raw transcripts — write a distilled, detailed narrative'). However, it does not explicitly mention alternatives or when not to use it vs sibling tools like save_memory.

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

search_memorySearch memoryA

Keyword search across memories, tasks, decisions, handoffs, session summaries and project context. Returns ranked results with scores.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYesSearch query, e.g. "employee permission".
typesNoRestrict to memory types.
minImportanceNo
workspacePathNoWorkspace directory of the project. Defaults to the server working directory.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden for behavioral disclosure. It does state that results are ranked and scored, which is useful. However, it does not explicitly confirm that the operation is read-only and non-destructive, nor does it mention any side effects or prerequisites. For a search tool, this is a moderate but incomplete disclosure.

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

Conciseness5/5

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

The description is two concise sentences, front-loaded with the main purpose. Every phrase adds value: the keyword search scope, the memory categories searched, and the ranked result output. No redundancy or filler.

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

Completeness3/5

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

Given the tool has 5 parameters, no output schema, and no annotations, the description provides a reasonable overall picture but lacks critical context. It does not mention how to refine searches (using types, minImportance, workspacePath), nor does it clarify what 'scores' represent or whether results are restricted to the current workspace. The description is adequate but incomplete for full autonomous 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?

Schema description coverage is 60% (query, types, workspacePath are described; limit and minImportance are not). The tool description adds no parameter-level detail beyond the schema, failing to compensate for the parameters lacking descriptions. The meaning of limit and minImportance is left entirely to their names, which may not be self-explanatory.

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

Purpose5/5

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

The description clearly states a specific verb ('keyword search') and defines the exact scope (memories, tasks, decisions, handoffs, session summaries, project context), distinguishing it from sibling tools like get_memory or get_decisions. The addition of 'returns ranked results with scores' clarifies the search nature.

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

Usage Guidelines3/5

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

The description implies this tool is used for searching across memory types, but it does not explicitly state when to use it vs alternatives like get_memory (direct retrieval) or get_project_context. No exclusions or alternative tool mentions are provided, leaving the agent to infer usage.

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

start_sessionStart sessionA

Start tracking an agent working session for the project. Call when beginning work; call finish_session when done.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdNoIdentifier of the calling agent/client, e.g. "cursor", "vscode", "claude-cli".
agentNameNoHuman-friendly client name, e.g. "Cursor".
workspacePathNoWorkspace directory of the project. Defaults to the server working directory.

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It communicates that a session begins and is tracked, and implies persistence until finish_session, but does not disclose side effects, idempotency, prerequisites (e.g., whether a project context must already exist), or behavior when a session is already active. Basic transparency is present, but richer 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.

Conciseness5/5

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

Two sentences, front-loaded with the core action, and every word earns its place. It avoids redundancy and clearly communicates the essential purpose and usage in a compact form.

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

Completeness4/5

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

For a simple, low-complexity tool with fully documented schema and no output schema, the description is nearly sufficient. It explains what the tool does and when to use it, though it could add a brief note on prerequisites or idempotency. Given the simplicity, this is a minor gap rather than a major omission.

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

Parameters3/5

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

Schema description coverage is 100%; all three optional parameters (agentId, agentName, workspacePath) have clear descriptions in the schema. The tool description adds no additional semantic value to the parameters, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose with a specific verb ('Start tracking') and resource ('an agent working session for the project'). It also distinguishes itself from the sibling tool 'finish_session' by explicitly saying 'call finish_session when done', making the opposite action clear.

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance ('Call when beginning work') and names the complementary tool to use at the end ('call finish_session when done'). This gives the agent clear direction on the session lifecycle and the primary alternative.

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

update_taskUpdate or create taskA

Create a task (omit taskId) or update an existing one (title, description, status, priority, related files). Statuses: active, in_progress, completed, blocked, abandoned.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
statusNo
taskIdNoOmit to create a new task.
agentIdNoIdentifier of the calling agent/client, e.g. "cursor", "vscode", "claude-cli".
priorityNo
descriptionNo
relatedFilesNo
workspacePathNoWorkspace directory of the project. Defaults to the server working directory.

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the create-vs-update behavior based on taskId presence and lists valid statuses, but does not explain update semantics (merge vs replace), error handling, permissions, or return values. This is moderate, better than a bare mutation tool but not fully transparent.

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

Conciseness4/5

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

The description is short and front-loaded with the core action, but the second sentence listing statuses is redundant with the schema enum. Still, it is efficient and lacks fluff.

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

Completeness3/5

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

For an 8-parameter mutation tool with no output schema or annotations, the description covers the basic create/update distinction but omits expected behavior such as merge semantics, return values, and permission requirements. It is adequate for selecting the tool but not fully complete for invoking it correctly with all parameters.

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 only 38%, and the description does not compensate. It repeats field names (title, description, priority, relatedFiles) without explaining their meaning, and the status list duplicates the schema enum. For example, it doesn't clarify the meaning of priority's numeric range or the content of relatedFiles.

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

Purpose5/5

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

The description states a specific action: 'Create a task (omit taskId) or update an existing one' and lists the updatable fields. It is unambiguous and clearly distinguishes from read-only siblings like get_current_task and memory tools.

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

Usage Guidelines4/5

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

The description explicitly says when to use the tool (create or update) and how to differentiate via taskId. However, it does not explicitly mention alternatives or exclusions, such as using get_current_task for read-only access, so it stops short of a full usage guide.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 16 tool updatesv0.5.0
    • First observedclear_memory
    • First observedcreate_handoff
    • First observeddelete_project_memory
    • First observedfinish_session
    • First observedget_current_task
    • First observedget_decisions
    • First observedget_latest_handoff
    • First observedget_memory
    • First observedget_project_context
    • First observedinitialize_project_context
    • First observedrecord_decision
    • First observedsave_memory
    • First observedsave_session_digest
    • First observedsearch_memory
    • First observedstart_session
    • First observedupdate_task

TDQS

A3.6/5.0
Disambiguation3/5

Tools like get_project_context and get_current_task both surface the current task, and save_memory can also store decisions, overlapping with record_decision. Descriptions help, but the boundaries are not always crisp.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (get_, save_, create_, update_, start_, finish_, delete_, clear_) with no mixed casing or irregular verbs. Naming is fully predictable.

Tool Count4/5

At 16 tools, the server is on the higher end of typical tool counts, but each tool targets a distinct facet of memory management (context, memories, tasks, decisions, handoffs, sessions). A few could be merged, but the scope is defensible.

Completeness3/5

The server covers memory CRUD, task management, decision logging, handoffs, and sessions, but lacks per-memory update/delete operations and task/decision deletion. These gaps can be worked around but represent notable missing functionality.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Persistent memory for AI coding agents. Enables agents to save and recall decisions, patterns, bugs, and context across sessions via an MCP server with local SQLite storage.
    12
    2
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for persistent, cross-session, local-first memory for AI agents, storing memories as Markdown files with SQLite indexing for hybrid search.
    24
    Apache 2.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    A local-first MCP server that manages developer memory for coding agents, enabling shared project context, permissions, and audit trails across different agents.
    1
    -

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AbdulqaderAhmed/memory-manager-mcp'

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