memory-manager-mcp
Integrates with GitHub Copilot (via VS Code) as a supported MCP client, enabling persistent project memory for Copilot agents.
Supports VSCodium as an MCP client by auto-registering the server configuration, allowing persistent memory features in the editor.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@memory-manager-mcpSave a memory: we decided to use PostgreSQL for the auth service."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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)
giton 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 publishedVerify the installation:
node dist/cli/index.js doctor
# Memory MCP is ready.Auto-configure your IDEs (recommended)
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 setupSupported clients (one dedicated registry per client):
Client | Config file(s) written |
VS Code (Copilot) |
|
Cursor |
|
Claude Desktop |
|
Claude Code |
|
Antigravity |
|
Gemini CLI |
|
Windsurf |
|
Codex CLI |
|
Only clients that are actually installed are touched; others are skipped.
Existing config files are preserved (a
.bakbackup 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 oldmemorykey by earlier versions are migrated automatically on the nextsetup.Self-registering: the MCP server also registers itself silently the first time it starts, so even a bare
node dist/index.jslaunch ends up configured everywhere. Disable withAGENT_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 vscodeAfter 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?
memory-manage-mcp doctorā theClient registrationcheck lists every client where the server is registered asmanager-mcp:ā Client registration registered as "manager-mcp" in: vscode, cursorIn 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).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.jsGemini CLI
gemini mcp add manager-mcp -- node C:/path/to/memory-manager-mcp/dist/index.jsAny other MCP client
{
"manager-mcp": {
"command": "node",
"args": ["/absolute/path/to/memory-manager-mcp/dist/index.js"]
}
}Tip: run
pnpm run devduring development ā it starts the server from TypeScript sources viatsx.
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:
Git remote URL ā
https://github.com/company/pms.git,git@github.com:company/pms.gitandssh://ā¦all normalize togithub.com/company/pms, then hash to a stableproj_ā¦id. Same repo, any machine, any clone path ā same memory..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" }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 handoffsAll 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 |
| Max items per section in the generated briefing |
| Keep raw session records (summaries are always kept) |
| Default result limit for |
The MCP tools (16)
Tool | Purpose |
| 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. |
| Lightweight fetch of the stored project context. |
| Save a curated memory ( |
| Retrieve one memory by id. |
| Ranked keyword search across memories, tasks, decisions, handoffs, session summaries, conversation digests and context. |
| Most relevant open task + other open tasks. |
| Create or update a task ( |
| Record an important decision (long-lived in ranking). |
| List decisions, newest first. |
| Call before stopping. Structured handoff: completed, remaining, problems, changed files, next action. |
| Fetch the most recent handoff (optionally with history). |
| Begin tracking an agent working session. |
| Call before stopping. Compress the ENTIRE conversation into one detailed digest (max 4000 chars); injected into the next chat's briefing. |
| End a session with status + summary. |
| Permanently delete one project's memory ( |
| Permanently delete all memory ( |
Recommended agent workflow (zero-touch for the user)
The user never types memory commands ā everything happens automatically behind the scenes:
On start ā the agent calls
initialize_project_contextby 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.While working ā the agent silently saves decisions, requirements, problems and progress with
save_memory, and tracks work withupdate_task.Before stopping ā the agent silently calls
save_session_digest(compresses the whole conversation into a compact digest), thencreate_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 memoryEvery 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 tooExamples:
memory-manage-mcp doctor
memory-manage-mcp project current --workspace ./my-app
memory-manage-mcp memory search "employee permission"
memory-manage-mcp handoff latest --jsonWhen developing from source, prefix commands with
node dist/cli/index.jsinstead ofmemory-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 withmemory-manage-mcp clear --all --yes.
Troubleshooting
Symptom | Fix |
Client can't see the tools | Make sure |
Wrong project detected | Check |
Same repo, different memory per machine | Ensure the git remote URL is set ( |
Anything else | Run |
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:watchArchitecture
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 + doctorThe 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 toolsclear_memoryClear all memoryA
PERMANENTLY delete ALL memory for ALL projects. Requires confirm=true and the phrase "delete everything" in confirmPhrase.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to actually delete. | |
| confirmPhrase | Yes | Must be exactly "delete everything" to proceed. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | The task being handed off. | |
| notes | No | ||
| agentId | No | Identifier of the calling agent/client, e.g. "cursor", "vscode", "claude-cli". | |
| problems | No | ||
| completed | No | ||
| remaining | No | ||
| sessionId | No | ||
| nextAction | Yes | Recommended next action for the next agent. | |
| changedFiles | No | ||
| workspacePath | No | Workspace directory of the project. Defaults to the server working directory. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to actually delete. | |
| workspacePath | No | Workspace directory of the project. Defaults to the server working directory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Final session status. Defaults to "completed". | |
| summary | No | ||
| sessionId | Yes | ||
| workspacePath | No | Workspace directory of the project. Defaults to the server working directory. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | No | Workspace directory of the project. Defaults to the server working directory. |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| activeOnly | No | Exclude superseded decisions. | |
| workspacePath | No | Workspace directory of the project. Defaults to the server working directory. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| history | No | Also include recent handoff history. | |
| workspacePath | No | Workspace directory of the project. Defaults to the server working directory. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| memoryId | Yes | Memory id (mem_...). | |
| workspacePath | No | Workspace directory of the project. Defaults to the server working directory. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | No | Workspace directory of the project. Defaults to the server working directory. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| focus | No | Optional focus topic to bias memory selection. | |
| agentId | No | Identifier of the calling agent/client, e.g. "cursor", "vscode", "claude-cli". | |
| workspacePath | No | Workspace directory of the project. Defaults to the server working directory. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | No | Identifier of the calling agent/client, e.g. "cursor", "vscode", "claude-cli". | |
| content | Yes | The decision, e.g. "Use RBAC for employee permissions." | |
| rationale | No | ||
| sessionId | No | ||
| confidence | No | ||
| importance | No | ||
| alternatives | No | ||
| workspacePath | No | Workspace directory of the project. Defaults to the server working directory. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Provide to update an existing memory. | |
| tags | No | ||
| type | Yes | Memory type. | |
| source | No | Where this came from, e.g. "user", "debugging". | |
| agentId | No | Identifier of the calling agent/client, e.g. "cursor", "vscode", "claude-cli". | |
| content | Yes | The distilled information to remember. | |
| sessionId | No | ||
| confidence | No | 0..1, default 0.7. | |
| importance | No | 0..1, default 0.5. | |
| workspacePath | No | Workspace directory of the project. Defaults to the server working directory. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| digest | Yes | Detailed-but-compact summary of the whole conversation (max 4000 chars). | |
| agentId | No | Identifier of the calling agent/client, e.g. "cursor", "vscode", "claude-cli". | |
| sessionId | No | Session to attach the digest to. Defaults to the most recent session. | |
| workspacePath | No | Workspace directory of the project. Defaults to the server working directory. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Search query, e.g. "employee permission". | |
| types | No | Restrict to memory types. | |
| minImportance | No | ||
| workspacePath | No | Workspace directory of the project. Defaults to the server working directory. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | No | Identifier of the calling agent/client, e.g. "cursor", "vscode", "claude-cli". | |
| agentName | No | Human-friendly client name, e.g. "Cursor". | |
| workspacePath | No | Workspace directory of the project. Defaults to the server working directory. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| status | No | ||
| taskId | No | Omit to create a new task. | |
| agentId | No | Identifier of the calling agent/client, e.g. "cursor", "vscode", "claude-cli". | |
| priority | No | ||
| description | No | ||
| relatedFiles | No | ||
| workspacePath | No | Workspace directory of the project. Defaults to the server working directory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses 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.
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.
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.
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.
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.
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.
16 tool updates
v0.5.0- First observed
clear_memory - First observed
create_handoff - First observed
delete_project_memory - First observed
finish_session - First observed
get_current_task - First observed
get_decisions - First observed
get_latest_handoff - First observed
get_memory - First observed
get_project_context - First observed
initialize_project_context - First observed
record_decision - First observed
save_memory - First observed
save_session_digest - First observed
search_memory - First observed
start_session - First observed
update_task
TDQS
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.
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.
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.
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
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
Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.
An MCP memory server. One memory your agents share ā across models, devices and apps.
Persistent memory for AI agents across Claude, ChatGPT and any MCP client.
Persistent AI memory shared across Claude, ChatGPT, coding agents, and compatible MCP clients.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenancePersistent memory for AI coding agents. Enables agents to save and recall decisions, patterns, bugs, and context across sessions via an MCP server with local SQLite storage.122MIT
- AlicenseBqualityBmaintenanceLocal-first memory server for AI coding agents that stores work sessions, tasks, and durable memories in Markdown files, exposed through MCP tools for session management and memory retrieval.10131MIT
- AlicenseAqualityBmaintenanceMCP server for persistent, cross-session, local-first memory for AI agents, storing memories as Markdown files with SQLite indexing for hybrid search.24Apache 2.0
- FlicenseNot gradedqualityCmaintenanceA 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AbdulqaderAhmed/memory-manager-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server