codex-agent-mem
Provides persistent memory for Google Gemini CLI, enabling continuity across sessions with context compression and retrieval.
Provides persistent memory for local models run via Ollama (e.g., Qwen, DeepSeek), enabling continuity across sessions with reduced token usage.
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., "@codex-agent-memremember that the project uses FastAPI for backend and React for frontend"
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.
codex-agent-mem
Other languages: Español | Deutsch | Português do Brasil | 中文 | 日本語
Portable, auditable, local-first MCP memory for MCP-compatible AI agents and coding workflows.
codex-agent-mem keeps durable project memory outside the model runtime, compresses continuity into smaller working packs, and carries forward operational state so MCP-compatible AI agents can resume with less repetition, fewer false “done” claims, and more control over what stays in context.
Everything is stored and processed locally by this MCP: SQLite database, FTS index, snapshots, telemetry metadata, and the optional inspector UI. codex-agent-mem does not send your memory, project data, prompts, or telemetry to any external server. MCP clients may still expose tool results to the model or service you configure, so treat retrieved memory as local tool output handed to that client.
Born for Codex and GPT workflows, codex-agent-mem has grown into a portable MCP memory layer for MCP-compatible runtimes including Codex CLI/Desktop, Claude Code, Google Gemini CLI, Qwen Code workflows using Ollama models, and other local or third-party CLI agent stacks. Validation is tracked per client/runtime and evidence level. Model-specific details stay in the validation docs so the README can describe the public surface without overclaiming one runtime.
codex-agent-mem lives locally, keeps memory auditable and pull-based, and does not send your stored memory to any external service.
Public baseline. Built in small, testable slices and still evolving, but already aligned for real use.
What’s new in v1.0.x
v1.0.2 fixes a project identity edge case where generated
codex-agent-memcontext insideAGENTS.mdcould be mistaken for active project scope by MCP hosts or agent clients. It also lets manual notes initialize a missing local project record and preserves existing project root metadata on conflicting updates.v1.0.1 fixes one local daemon/stdio bridge idle-timeout path that could surface as a false
Transport closedincident when--daemon-urlis used.v1.0.1 serializes shared request handling inside the optional threaded local daemon so one SQLite-backed server instance is not driven concurrently.
v1.0.1 hardens the public local-first daemon surface: loopback-only bind validation, optional bearer-token auth for
/mcp, sanitized/health, and token forwarding from the stdio bridge.v1.0.1 adds a generated-context instruction-hierarchy guardrail: retrieved memory is advisory project context, not a higher-priority instruction; this is a basic guardrail, not prompt-injection proof.
v1.0.1 documents that local SQLite memory is plaintext by default in the public 1.0.x line and must not be treated as a secrets vault.
v1.0.1 normalizes list-returning MCP tool payloads so
structuredContentuses object roots like{items, count}instead of root arrays for stricter clients such as Claude Code.v1.0.1 adds session-aware retrieval for persisted memory:
mem_session_listlists recent sessions,mem_scope_resolveranks persisted lanes from explicit thread/path hints,mem_bootstrap_contextavoids project-wide startup packs for ambiguous containers, and optionalsession_idfilters retrieval tools so broad project scopes do not mix chats or agents. Project-wide packs that span multiple sessions or inferred sub-scopes emit a visible scope warning and recommend narrowing first. This is not live current-turn awareness.v1.0.1 keeps normal continuity installs writable by default;
--read-onlyis an explicit retrieval-only audit/debug mode, not the default operating mode.low-impact MCP runtime profiles:
minimal,standard, andfullexplicit
--read-onlyaudit/debug mode that blocks mutating tools and avoids closure writeslazy SQLite initialization so unused MCP connections stay cheap
compact MCP responses by default, with full payloads kept in
structuredContentknown_pack_hash/not_modifiedsupport so unchanged continuity packs are not resentruntime heartbeat diagnostics, spawn-storm warning, optional telemetry, and an optional daemon/stdio bridge
Latest releases: v1.0.2 Identity + Scope Patch | v1.0.1 Transport + Local Security Hotfix | v1.0.0 Low-Impact Runtime
Related MCP server: mcp-chest-memory
Snapshot (synthetic v1.0 fixtures)
Scenario | Profile | Source tokens | Pack tokens | Saved |
| Tools | Lazy init | Read-only |
Small project continuity |
| 1,841 | 253 | 86.26% | true | 4 | false->true | true |
Medium agent workflow |
| 4,855 | 270 | 94.44% | true | 4 | false->true | true |
Large repeated audit |
| 9,731 | 269 | 97.24% | true | 4 | false->true | true |
Sub-agent handoff example |
| 6,523 | 276 | 95.77% | true | 4 | false->true | true |
Across these reproducible fixtures, repeated operational context was reduced from ~22,950 source tokens to ~1,068 memory-pack tokens, an approximate 95.35% reduction. This is not a universal guarantee; it shows the effect when an agent would otherwise resend the same project continuity.
Tools=4 refers to the pre-session-aware minimal profile used by these fixtures. In v1.0.1, minimal also includes mem_session_list, mem_scope_resolve, and mem_bootstrap_context, and the standard profile exposes 20 tools for broader retrieval, governance, and audit workflows.
Runtime validation snapshot
Runtime | Setup | Observed metrics | Result |
Writable MCP default | Codex/Gemini/Claude local daemon bridges, |
| Writable manual-note and snapshot-provenance smokes passed |
Codex Desktop | Codex Desktop, MCP stdio, explicit retrieval-only | ~22,950 source tokens -> ~1,068 pack tokens, ~95.35% repeated-context reduction, | Retrieval-only MCP validation plus public reproducible verification; writable continuity is covered by the writable default row |
Codex CLI / | Codex CLI MCP stdio path, short-lived / ephemeral execution | same local MCP server and config style as Desktop; short-lived CLI lifecycle validated separately from the long-lived Desktop host behavior | Validated Codex CLI path |
Google Gemini CLI |
| stable process, request counter increased as expected, object-root payloads verified where visible | Retrieval-only MCP validation with client-exposure caveat |
Claude Code | Claude Opus 4.7, | requests | Retrieval-only MCP validation passed |
Qwen Code | Qwen Code 0.15.0, local Ollama, | real MCP calls to | Retrieval-only local MCP validation passed |
Qwen local model smokes | Qwen Code 0.15.0 with Ollama models | both models answered CLI smoke tests and invoked | Retrieval-only local model smokes passed |
DeepSeek-V3.2 | Qwen Code 0.15.0, | real MCP calls to | Retrieval-only cloud-backed MCP validation passed |
Minimax M2.5 | Qwen Code 0.15.0, | real MCP calls to | Retrieval-only cloud-backed MCP validation passed |
Kimi Code CLI | Kimi Code CLI 1.38.0, |
| Retrieval-only MCP connection validated; model-run validation not claimed |
Grok / xAI | Protocol-level compatibility note | MCP stdio / JSON-RPC protocol behavior reviewed | Protocol note |
Grok / xAI is listed as a protocol-level compatibility note, not live model tool-call validation. The live validated rows are the MCP client/model pairs measured directly: Codex Desktop/CLI, Google Gemini CLI, Claude Code, Qwen Code, Qwen local model smokes, DeepSeek-V3.2 through Ollama Cloud, Minimax M2.5 through Ollama Cloud, and Kimi Code CLI connection validation. More generally, codex-agent-mem is model-agnostic at the MCP layer; new pairs are added as their live measurements are captured.
Verifiable Results
codex-agent-mem includes a reproducible verification sandbox and a public evidence export for v1.0.0. The fixture approach is intentional: the MCP optimizes repeatable operational-context handling, so the public evidence keeps the repeated context controlled instead of turning the benchmark into a different conversation every run.
The public v1.0.x evidence combines reproducible verification fixtures with live MCP runtime validation across the runtimes listed above. It reports context compression, repeated-pack avoidance with known_pack_hash, lazy initialization, minimal tool surface, explicit read-only mode safety, response diet, local telemetry, closure control, and a sub-agent handoff example.
See: Verification Evidence and v1.0.0 Results.
Claude Code and claude-mem
codex-agent-mem runs in Claude Code as a standard MCP stdio server. It does not install session-start hooks, stop hooks, or automatic post-turn summarization. Memory is retrieved on demand through MCP tools such as mem_context_pack, mem_search, mem_open_work, and mem_completion_check.
If you already use claude-mem, both tools can technically coexist. For lower-overhead, lower-latency workflows, use one active memory layer at a time. In local validation with one Claude Code host active, codex-agent-mem alone kept the runtime compact (same_db_process_count=2, spawn_storm_warning=false). Running it alongside claude-mem increased visible tool surface to 61 tools, added a session-start memory block of about 6,995 tokens, and showed post-turn stop-hook delays. This does not break codex-agent-mem, but it makes results harder to compare and can increase overhead and latency.
Use codex-agent-mem when you prefer local-first, auditable, pull-based memory with explicit retrieval and deterministic closure checks. Use additional memory plugins only when you intentionally want their automatic hook-based behavior.
For token-sensitive Claude Code workflows, codex-agent-mem is designed for low overhead by default: no session-start injection, no stop-hook summarization, compact responses, explicit budgets, and pack_hash / not_modified short-circuiting for unchanged packs.
Optional companion: clean-process-ended
codex-agent-mem v1.0.1 and clean-process-ended (GitHub) v0.7.2 work independently, but they solve adjacent problems in local agent workflows.
codex-agent-mempreserves continuity: project memory, scoped context packs, manual notes, snapshots, open work, blockers, and deterministic closure checks.clean-process-endedhandles local process hygiene: ownership-first diagnostics, dry-run close checks, and compact janitor receipts.
Together they improve end-of-task workflows: recover context, finish the work, check local process state, and store compact close evidence without making either MCP a hard dependency of the other.
What you get
Continuity
Compact continuity, not raw replay: turns repeated session context into smaller
AGENTS.mdworking packs when compression is actually favorableOperational state across sessions and agents: keeps objective, constraints, pending work, blockers, Definition of Done, and scope guardrails visible and reusable so context is not captive to one model, one session, or one provider UI
MCP-native integration: runs as a local MCP stdio server for Codex, Claude Code, Google Gemini CLI, Qwen Code, and other MCP-compatible clients; Codex
notifyand optionalAGENTS.mdsync remain available where usefulToken efficiency for agent workflows: improves the token economy of repeated agent work by reducing continuity replay when the compact pack wins; the public v1.0 fixtures show 86% to 97% reduction on repeated-context scenarios
Closure Control
Deterministic closure control: exposes
mem_open_workandmem_completion_checkso open work beats stale completion claimsScope retention: carries forward must-not-drop continuity, recent changes, and active blockers instead of only decisions
Governance and Audit
Governed memory selection: applies project policies, inheritance rules, and repair events instead of mixing everything blindly
Inspectable MCP memory: the local
/uilets you navigate recent changes, scope guard, provenance, health, snapshots, governance state, and stored memory without opening the SQLite database by handFully local and auditable: SQLite + FTS5, provenance, health diagnostics, snapshots, and a local inspector UI with no external memory service and no outbound memory sync
Clear local security boundary: v1.0.1 hardens loopback daemon access, optional bearer-token auth, sanitized health output, and generated-context instruction hierarchy; this is not prompt-injection proof, and the public 1.0.x SQLite database remains plaintext by default and should not be used as a secrets vault
Key docs: AGENTS.md | Quickstart | Codex Integration | Codex Desktop Note | Support Matrix | Design Decisions
Built for long audits, multi-step project continuity, and workflows where the real failure mode is not only forgetting decisions, but also dropping scope, losing blockers, and declaring completion too early.
Status
1.0.2 is the current 1.0.x maintenance release. 1.0.0 remains the public verification baseline for the reproducible metrics below.
What works today:
Codex
notifyingestion onagent-turn-completelocal SQLite persistence with FTS5
heuristic extraction of
session_summary,decision,objective,constraint,pending_item,completed_item,blocker, andcompletion_claimhierarchical Definition of Done tracking across
project_dod,mission_dod, andsession_dodgenerated working-memory packs with approximate token budget and compression stats
budgeted packs for
micro,normal, andfullreinjectionopt-in
AGENTS.mdsync through--sync-project-docwhen the generated pack is smaller than the source contextoperational-state carry-forward so the next run can recover objective, pending work, blockers, and scope guardrails
deterministic closure control with
mem_open_workandmem_completion_checkrecent-change deltas through
mem_recent_changesscope continuity and must-not-drop guardrails through
mem_scope_guardfalse-completion guardrails that keep “done” from overriding open work when pending items, blockers, or DoD gaps still exist
context sync and closure metrics persisted per project
automatic budget selection for context packs when
budget=automemory provenance persisted per observation and queryable through
mem_provenancediagnostic health reporting through
mem_healthMCP runtime diagnostics through
mem_health_runtimemanual operational notes through
mem_note_create, indexed formem_searchand eligible formem_context_packversioned project snapshots through
mem_snapshot_create,mem_snapshot_list, andmem_snapshot_restoregoverned memory policies through
mem_policy_validate,mem_policy_add,mem_policy_list, andmem_policy_removeselective inheritance links through
mem_inheritance_add,mem_inheritance_list, andmem_inheritance_removegoverned repair proposals and derived repair events through
mem_repair_proposeandmem_repair_applylow-impact MCP profiles through
--profile minimal|standard|fullexplicit read-only audit/debug mode through
--read-onlycompact MCP response text with full
structuredContentknown_pack_hash/not_modifiedcontinuity-pack reuseshort in-process caching for expensive read tools
lazy SQLite initialization for cheap unused MCP connections
enriched runtime health with profile, mutability, cache, lazy-init, heartbeat, and spawn-storm diagnostics
optional local runtime telemetry through
--telemetry-mode off|summary|debugoptional local daemon through
codex-agent-mem-daemonand stdio bridge mode with--daemon-urlFastAPI inspection API
local inspection UI at
/ui, including recent changes, scope guard, provenance, health, snapshots, and governance statelocal policy CLI with
codex-agent-mem-policyMCP stdio server with:
mem_searchmem_getmem_recentmem_session_listmem_scope_resolvemem_bootstrap_contextmem_project_briefmem_open_workmem_completion_checkmem_recent_changesmem_scope_guardmem_context_packmem_provenancemem_healthmem_health_runtimemem_snapshot_listmem_note_createmem_snapshot_createmem_snapshot_restoremem_policy_listmem_policy_validatemem_policy_addmem_policy_removemem_inheritance_listmem_inheritance_addmem_inheritance_removemem_repair_proposemem_repair_apply
automated tests
What is intentionally not in scope yet:
embeddings
vector stores
Codex App Server ingestion
Codex hooks adapter
Ollama adapter
multi-agent orchestration
Why this repository exists
Agent workflows often need durable context that stays outside one runtime process.
Retrieval alone does not solve the bigger failure mode: losing scope and forcing the user to restate prior context.
A compressed continuity block or MCP context pack can reduce how much prior context must be replayed manually.
Carrying only decisions is not enough; the runtime also needs active objective, open work, blockers, and a rule against false closure.
SQLite keeps the implementation local-first, auditable, and easy to inspect.
The current release intentionally focuses on a narrow, testable slice rather than a broad unfinished platform.
Long-lived and short-lived MCP hosts can behave differently under runtime load; see the validation docs for the exact runtime boundary.
Installation model
codex-agent-mem is installed as a local Python package and exposed to MCP-compatible clients through stdio commands.
The stable pattern is:
install the package
point the MCP client at the installed command
keep the memory database local and auditable
Codex-specific notify and mcp_servers snippets are generated by codex-agent-mem-bootstrap-codex; other MCP clients use their own configuration files.
Quickstart
If you want the shortest path from clone to a working local setup:
PowerShell / Windows
git clone https://github.com/MarceloCaporale/codex-agent-mem.git
cd codex-agent-mem
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -e .[dev]
codex-agent-mem-smoke
codex-agent-mem-bootstrap-codex --db-path C:\Users\YOU\.codex_agent_mem\codex_agent_mem.dbbash / macOS / Linux
git clone https://github.com/MarceloCaporale/codex-agent-mem.git
cd codex-agent-mem
python3 -m venv .venv
source .venv/bin/activate
pip install -e .[dev]
codex-agent-mem-smoke
codex-agent-mem-bootstrap-codex --db-path "$HOME/.codex_agent_mem/codex_agent_mem.db"For Codex, paste the generated snippet into ~/.codex/config.toml. For other MCP clients, use the common stdio command in Configure MCP clients.
Install
Option A: pipx from GitHub
Install directly from the repository URL:
pipx install "git+https://github.com/MarceloCaporale/codex-agent-mem.git"
codex-agent-mem-smokepipx install "git+https://github.com/MarceloCaporale/codex-agent-mem.git"
codex-agent-mem-smokeOption B: local development install
git clone https://github.com/MarceloCaporale/codex-agent-mem.git
cd codex-agent-mem
python3 -m venv .venv
source .venv/bin/activate
pip install -e .[dev]
pytest -q
codex-agent-mem-smokegit clone https://github.com/MarceloCaporale/codex-agent-mem.git
cd codex-agent-mem
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -e .[dev]
pytest -q
codex-agent-mem-smokeConfigure MCP clients
The MCP server entry point is the same for every compatible client:
codex-agent-mem-mcp --db-path "$HOME/.codex_agent_mem/codex_agent_mem.db"codex-agent-mem-mcp --db-path C:\Users\YOU\.codex_agent_mem\codex_agent_mem.dbPoint your MCP-capable client at that installed stdio command. The validated public v1.0.x paths include Codex CLI/Desktop, Claude Code, Google Gemini CLI, Qwen Code with local Qwen models through Ollama, DeepSeek-V3.2 and Minimax M2.5 through Ollama Cloud, plus Kimi Code CLI connection validation.
Codex helper
Generate a ready-to-paste snippet:
codex-agent-mem-bootstrap-codex --db-path "$HOME/.codex_agent_mem/codex_agent_mem.db"codex-agent-mem-bootstrap-codex --db-path C:\Users\YOU\.codex_agent_mem\codex_agent_mem.dbFor Codex, that prints the notify block, the [mcp_servers."codex-agent-mem"] block, an explicit stdio idle-timeout, and MCP tool approvals you can paste into ~/.codex/config.toml.
For long-lived Codex Desktop sessions, prefer a longer MCP idle timeout such as --idle-timeout-seconds 1800 so the Desktop thread is less likely to keep a closed stdio transport. For short CLI or codex exec runs, 300 seconds is usually enough and keeps cleanup faster.
Automatic AGENTS.md reinjection is now opt-in. Add --sync-project-doc to the notify command only if you want generated working-memory blocks written back into the working directory.
How agents should use it
Once configured, the agent should use codex-agent-mem proactively when continuity matters. You should not need to repeat "use the memory MCP" every few turns.
Recommended pattern:
start with
mem_bootstrap_contextwhen prior decisions, pending work, blockers, constraints, or project state may matter; pass thread, chat-title, cwd, or repo hints when the host exposes themcall
mem_context_packdirectly only when the scope is already explicit, preferably withsession_idfor broad workspacespass
known_pack_hashon repeated checks so unchanged packs returnnot_modifiedinstead of resending contextuse
mem_searchonly when the compact pack is not enoughbefore claiming done, call
mem_open_workandmem_completion_checkfor implementation, validation, publishing, migration, or documentation tasks
This is where the practical token economy comes from: compact continuity first, targeted expansion only when needed, and no repeated pack when nothing changed.
Example files live under examples/codex, with Ollama workflow notes under examples/ollama.
Run locally
Start the inspection API:
codex-agent-mem-api --db-path "$HOME/.codex_agent_mem/codex_agent_mem.db"codex-agent-mem-api --db-path C:\Users\YOU\.codex_agent_mem\codex_agent_mem.dbThen open:
http://127.0.0.1:37770/uiStart the MCP server:
codex-agent-mem-mcp --db-path "$HOME/.codex_agent_mem/codex_agent_mem.db"codex-agent-mem-mcp --db-path C:\Users\YOU\.codex_agent_mem\codex_agent_mem.dbThe current MCP transport is stdio. That means one process per host connection is normal; it is not a singleton daemon. The defensive idle timeout is there to let unused or orphaned instances exit cleanly.
Recommended defaults: use a longer timeout for Codex Desktop sessions, for example 1800 seconds, and a shorter timeout for CLI/ephemeral runs, for example 300 seconds.
Manually rebuild the generated continuity block for one directory:
codex-agent-mem-refresh-context --db-path "$HOME/.codex_agent_mem/codex_agent_mem.db" --project-key YOUR_PROJECT --cwd /path/to/projectcodex-agent-mem-refresh-context --db-path C:\Users\YOU\.codex_agent_mem\codex_agent_mem.db --project-key YOUR_PROJECT --cwd C:\Path\To\ProjectQuick verification
Run the smoke test:
codex-agent-mem-smoke --db-path "$HOME/.codex_agent_mem/codex_agent_mem.db"codex-agent-mem-smoke --db-path C:\Users\YOU\.codex_agent_mem\codex_agent_mem.dbThat inserts a sample turn, extracts observations, and verifies recent retrieval and project brief generation.
Token efficiency: what saves tokens now
The package compiles a smaller working-memory pack from recent turns, durable decisions, and derived operational state.
When
--sync-project-docis enabled and that pack is actually smaller than the source context, it is synced intoAGENTS.mdfor the working directory.MCP retrieval and optional
AGENTS.mdsync let future sessions start with compressed continuity instead of forcing you to restate old scope.mem_context_packexposes the same compact pack over MCP for on-demand retrieval.The pack now carries forward pending work and blockers, so a future run can recover “what remains” instead of only “what was decided.”
This is token efficiency for agent workflows, not magic compression. codex-agent-mem improves the token economy by reducing repeated project context, reusing unchanged packs through known_pack_hash, and letting agents expand only the memory they need.
Approximate token savings
In plain language: this usually aims to cut down the amount of repeated context you have to replay, not to eliminate it completely.
What we can say honestly from local validation:
the public v1.0 fixtures reduced repeated context from ~22,950 source tokens to ~1,068 memory-pack tokens, about
95.35%in that controlled scenarioindividual repeated-context scenarios in the fixture suite landed between
86%and97%reductionlive runtime checks confirmed compact MCP retrieval, stable process lifecycle, object-root/no-reinjection behavior where visible, and writable snapshot provenance for local Codex/Gemini/Claude daemon bridges
Examples from the public v1.0 verification sandbox:
1,841 -> 253approximate tokens4,855 -> 270approximate tokens9,731 -> 269approximate tokens6,523 -> 276approximate tokens
Important: this is not a fixed guarantee per prompt. If the compact pack is not actually smaller than the source context, codex-agent-mem skips reinjection instead of pretending it saved tokens.
What this helps catch now
losing the original objective after a few runs
silently narrowing scope when the user asked for more
declaring completion while pending work still exists
forgetting blockers and re-entering the next run as if the task were finished
Repository layout
src/codex_agent_mem - package code
tests - executable tests
examples/codex - Codex integration examples
examples/ollama - Ollama workflow notes
scripts - local bootstrap helpers
docs - architecture, integration, quickstart, and release notes
Documentation map
AGENTS.md - repo map and operational guide for MCP-compatible AI agents
docs/quickstart.md - shortest install and first-run path
docs/codex-integration.md - how notify and MCP fit into Codex
docs/verification - reproducible public metrics and v1.0.0 evidence
docs/support-matrix.md - current support and known gaps
docs/codex-desktop-lifecycle-note.md - observed Codex Desktop lifecycle behavior and practical mitigations
docs/design-decisions.md - explicit product and architecture decisions
docs/architecture.md - portable technical architecture of the current release
docs/validation - validation levels, runtime support, client behavior, and public evidence notes
CONTRIBUTING.md - contribution workflow and quality bar
SECURITY.md - support scope and security reporting guidance
docs/discoverability.md - recommended GitHub description, topics, and release framing
Release surface
This repository includes:
clean root package layout
installable
pyproject.tomlcommand entry points
tests
CI workflow
license
changelog
Author
Created and maintained by Marcelo Caporale.
Studio: Visual AI Media
Lab: Visual Systems Lab
Available Tools
28 toolsmem_bootstrap_contextC
Return defensive startup context: resolve scope from optional thread/path hints and avoid project-wide packs for ambiguous containers.
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes | ||
| hint | No | ||
| thread_hint | No | ||
| chat_title | No | ||
| active_chat_label | No | ||
| current_cwd | No | ||
| repo_path | No | ||
| mentioned_files | No | ||
| session_id | No | ||
| budget | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions 'defensive' behavior and avoiding project-wide packs for ambiguous containers, which gives some insight. However, it does not disclose side effects, authorization requirements, or what happens with invalid inputs. Since no annotations are provided, more detail would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 18 words, concise and front-loaded with the main action. However, it uses jargon that might require background knowledge. Overall, it earns its space.
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 complexity (10 parameters, no output schema, no annotations), the description is too brief. It does not explain the return format, how hints work, or the role of budget/session_id, leaving significant gaps for correct tool 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?
Most of the 10 parameters are not explained in the description. Only 'thread/path hints' are vaguely referenced, but without mapping to specific parameters. With 0% schema description coverage, the description fails to provide meaningful parameter semantics.
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 returns 'defensive startup context' and resolves scope from hints, which distinguishes it from siblings like mem_scope_resolve or mem_context_pack. However, the term 'defensive startup context' is somewhat vague and may not be immediately intuitive to all agents.
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 usage for startup when scope is ambiguous, but it provides no explicit guidance on when to use this tool versus alternatives like mem_scope_resolve or mem_context_pack. No when-to-use or when-not-to-use information is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_completion_checkC
Return a deterministic closure check for one project, optionally scoped to one persisted session.
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes | ||
| session_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It mentions 'deterministic' implying no side effects, but does not specify whether it is read-only, requires permissions, or any other traits. The behavioral disclosure is minimal.
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 concise sentence that front-loads the key action. No unnecessary words, and it effectively communicates the 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?
For a tool with no output schema, no annotations, and 0% parameter coverage, the description is insufficient. It omits what a 'closure check' means, the format of the return value, and any prerequisites or usage constraints.
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 0%, and the description adds minimal meaning: 'one project' for project_key and 'optionally scoped to one persisted session' for session_id. This adds some context but does not fully compensate for the lack of schema descriptions.
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 returns a 'deterministic closure check for one project' with optional session scoping. It uses a specific verb and resource, distinguishing it from sibling tools like 'mem_note_create' or 'mem_search', though the term 'closure check' may require domain knowledge.
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, when not to use it, or prerequisites. The description only states the action without context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_context_packC
Return a compact continuity pack optimized to carry project or persisted-session context forward with fewer tokens.
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes | ||
| budget | No | ||
| max_chars | No | ||
| known_pack_hash | No | ||
| session_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It mentions optimization for fewer tokens but does not disclose side effects, permissions, idempotency, or whether the pack is read-only. The behavioral traits are minimal.
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 is front-loaded with the core purpose. It is concise without fluff, though could expand slightly on key behavior.
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 5 parameters, no output schema, and no annotations, the description is too brief. It fails to explain return format, error conditions, or parameter interactions, which are critical for correct usage.
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 0% and the description adds no meaning to any of the 5 parameters (project_key, budget, max_chars, known_pack_hash, session_id). Agent cannot infer how to set them beyond their names and basic types/enums.
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 it returns a compact continuity pack to carry context forward with fewer tokens, which is a specific verb and resource. It distinguishes from siblings like mem_get by focusing on a 'pack' rather than a single context item, but could be more explicit about the exact format.
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 on when to use this tool versus alternatives like mem_session_list or mem_get. The description lacks any context about prerequisites or suitability for different tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_getB
Get one stored observation by id.
| Name | Required | Description | Default |
|---|---|---|---|
| observation_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose whether the tool is read-only, requires permissions, or any side effects. It only states the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, straightforward sentence that effectively communicates the core action. It is concise and front-loaded, though could benefit from more structure.
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 absence of an output schema, the description fails to explain what is returned. It also does not differentiate from sibling tools sufficiently, making it incomplete for an agent assessing 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?
The parameter 'observation_id' is described only as 'by id', adding no meaning beyond the schema. With 0% schema description coverage, the description should provide more context.
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 verb 'Get' and the resource 'one stored observation', differentiating it from other tools that retrieve multiple observations or perform other actions.
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 use for retrieving a single observation by ID but lacks explicit guidance on when to use it versus alternatives like mem_search or mem_recent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_healthB
Return a deterministic health report for one project: duplicates, contradictions, stale items, DoD coverage, and suggestions.
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states the tool is 'deterministic', implying no side effects, but lacks details on error handling, authentication needs, or behavior with invalid project keys. Given no annotations, more disclosure would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the tool's purpose and output without redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lists report contents (duplicates, contradictions, etc.) but omits output structure, format, and additional context about project keys. For a tool with no output schema and 0% param coverage, more detail is needed for full 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 0%, and the description does not explain the 'project_key' parameter beyond its role. No format, constraints, or usage context is provided, leaving the agent to infer meaning.
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 verb 'Return' and the resource 'health report', listing specific contents (duplicates, contradictions, etc.). It distinguishes from sibling tools like mem_health_runtime by specifying 'deterministic' and 'for one project'.
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 when-to-use or when-not-to-use guidance is provided. The description implies analysis use but does not differentiate from similar tools like mem_health_runtime or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_health_runtimeA
Return runtime health for this stdio MCP process: pid, uptime, idle timeout, request counts, and exit diagnostics.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden. It adequately indicates that the tool is a read-only health check (returns data without side effects), but it does not explicitly state that it is non-destructive or require any authentication. The behavioral traits are implied but not fully disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence of 15 words that efficiently conveys purpose and outputs. Every word earns its place, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, no output schema, and no annotations, the description is reasonably complete. It lists key return fields, though it could mention that the output format is likely JSON or provide an example. Still, it is sufficient for an agent to understand the tool's function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the baseline is 4. The description adds value by listing the specific outputs (pid, uptime, etc.), which enriches understanding beyond the empty 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 that the tool returns runtime health information including pid, uptime, idle timeout, request counts, and exit diagnostics. It uses a specific verb ('Return') and resource ('runtime health'), and it distinguishes from the sibling 'mem_health' tool by specifying the focus on stdio MCP process runtime details.
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 like 'mem_health'. The description does not mention any prerequisites or context for invocation, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_inheritance_addC
Add one inheritance link to a project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes | ||
| source_project_key | Yes | ||
| mode | Yes | ||
| selector | No | ||
| enabled | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavioral traits. It only says 'Add one inheritance link', which is minimal. It does not mention idempotency, side effects, permissions, or limits.
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, which is concise, but it is too short to be informative. It sacrifices clarity and completeness for brevity.
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 (3 required, with nested objects) and no output schema, the description is completely inadequate. It fails to explain essential details about the tool's behavior and usage.
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 0%, and the description provides no information about the five parameters (project_key, source_project_key, mode, selector, enabled). This leaves the agent without guidance on how to use the parameters correctly.
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 'Add' and the resource 'inheritance link to a project', which is specific and distinguishes it from sibling tools like list and remove. However, it does not elaborate on what an inheritance link is, leaving some 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?
No usage guidance is provided. There is no mention of when to use this tool, when not to, or alternatives. The description simply states the action without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_inheritance_listB
List inheritance links for one project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It only states the action without disclosing side effects, read-only nature, or error conditions, offering 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, concise sentence with no unnecessary words. It is front-loaded with the essential action and resource.
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?
Without an output schema or additional context, the description fails to specify return format, pagination, or what constitutes inheritance links, leaving the agent underinformed for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning beyond the schema. It implies project_key identifies a project but omits format, constraints, or examples.
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?
Clearly states the action 'List' and resource 'inheritance links', scoped to 'one project', which effectively distinguishes it from sibling tools like mem_inheritance_add and mem_inheritance_remove.
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 on when to use this tool versus alternatives such as mem_inheritance_add or other listing tools. The description lacks context about prerequisites or suitable scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_inheritance_removeB
Remove one inheritance link from a project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes | ||
| inheritance_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it only states the basic operation. Missing details like idempotency, error handling, or side effects (e.g., if inheritance_id doesn't exist).
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 concise sentence with no wasted words. However, it may be too terse, sacrificing necessary detail. Could be expanded slightly while maintaining 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?
Given the tool involves mutation and no output schema, the description lacks completeness: no mention of return values, confirmation, or error conditions. Does not adequately prepare the agent for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description should compensate. It implies project_key identifies a project, but does not explain inheritance_id or its valid range (schema shows minimum 1). Some meaning added, but insufficient.
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 ('Remove') and the resource ('one inheritance link from a project'). It effectively distinguishes from sibling tools like mem_inheritance_add (add) and mem_inheritance_list (list).
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, prerequisites, or alternatives. The agent has no context to decide appropriateness relative to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_note_createB
Create one manual operational memory note that is indexed for mem_search and eligible for context packs.
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes | ||
| text | Yes | ||
| session_id | No | ||
| title | No | ||
| tags | No | ||
| importance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides some behavioral context (indexed, eligible for context packs), but lacks details on side effects, idempotency, permissions, or limits. It is adequate but not comprehensive.
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 conveying the core purpose and key behaviors without any filler. 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?
The tool has six parameters (two required), no output schema, and no annotations. The description only covers high-level purpose, leaving parameter meanings and return behavior completely unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides no explanation of any of the six parameters (project_key, text, session_id, title, tags, importance). With 0% schema coverage, the agent relies solely on the description, which is insufficient.
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 'Create one manual operational memory note', specifying the verb and resource. It also adds key behaviors: 'indexed for mem_search' and 'eligible for context packs', which distinguishes it from sibling tools like mem_get (retrieve) or mem_bootstrap_context (setup).
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 that this tool is appropriate when the goal is to create a note that will be searchable and included in context packs. However, it does not explicitly say when not to use it or compare with similar siblings like mem_open_work, so some guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_open_workA
Return deterministic open work for one project, optionally scoped to one persisted session.
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes | ||
| session_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must convey behavior. It mentions the tool returns 'deterministic' open work and can be scoped to a session, which adds some behavioral context. However, it does not discuss read-only nature, error handling, or what the output contains.
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, clear sentence of 12 words, front-loading the core purpose and optional scoping. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and many sibling tools, the description provides a high-level purpose but omits return format, potential errors, and how the tool fits into the larger workflow. It is adequate but not thorough.
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 0%, so the description must compensate. It clarifies that project_key identifies the project and session_id optionally scopes to a persisted session. This adds meaning beyond the parameter names and types, but lacks details on formats or valid values.
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 explicitly states the tool returns deterministic open work for a specific project, optionally filtered by a session. This clearly distinguishes it from sibling tools like mem_get (general retrieval) and mem_search (search).
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 vs. alternatives. The purpose implies it's for retrieving open work items, but there is no mention of prerequisites, when not to use, or comparison with mem_get or mem_search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_policy_addC
Add one memory policy to a project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes | ||
| policy_kind | Yes | ||
| rule | Yes | ||
| enabled | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, but it only says 'Add' without explaining side effects, permissions, idempotency, or what happens if a policy with the same kind already exists.
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 7-word sentence, which is extremely concise but at the cost of necessary information. It is under-specified for the complexity of the tool (4 params, nested object).
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 4 parameters, a nested object, no output schema, and no annotations, the description is severely incomplete. It does not explain the 'rule' object or any parameter behavior, making it insufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain any of the 4 parameters (project_key, policy_kind, rule, enabled). It fails to add meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Add' and the resource 'one memory policy' within a project. It is specific and distinguishes from sibling tools like mem_policy_list or mem_policy_remove.
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, nor does it mention prerequisites or conditions for adding a policy. No context on when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_policy_listC
List active and inactive memory policies for one project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes |
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. It states 'List' implying read-only, but fails to disclose pagination, ordering, or whether the list reflects current state exclusively. With zero annotation support, this is insufficient.
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—highly concise. However, conciseness is slightly undermined by missing critical details (e.g., return format) that could be added without significant verbosity.
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 27 sibling tools, the description does not sufficiently equip an agent to select this tool. It omits output schema details, does not explain what a 'memory policy' is, and lacks context on how the results integrate with other tools like mem_policy_add or mem_policy_validate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter `project_key` has 0% schema description coverage. The description adds the phrase 'for one project,' which contextualizes the parameter as a project identifier, but does not specify its format, constraints, or examples. This adds little beyond the schema's type declaration.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists memory policies, specifying both active and inactive categories and targeting a single project. This provides a clear verb-resource pair and distinguishes it from other list tools like mem_inheritance_list, though it could further clarify what constitutes a 'policy'.
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?
There is no guidance on when to use this tool versus alternatives such as mem_policy_add or mem_policy_remove. No when-not-to-use or prerequisite information is provided, leaving the agent to infer context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_policy_removeC
Remove one memory policy from a project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes | ||
| policy_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. 'Remove' implies destruction, but there is no detail on side effects, reversibility, permissions, or impact on related data. This is insufficient for a mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no unnecessary words. However, it could be structured to include more detail while remaining concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and minimal parameter explanation, the description is incomplete. The agent cannot fully understand the tool's behavior, return value, or when to use it, especially with many sibling tools.
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 0%, so the description must explain parameters. It does not mention project_key or policy_id at all, leaving the agent without context for what these parameters mean.
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 ('Remove') and the resource ('one memory policy from a project'). It distinguishes from sibling tools like mem_policy_add and mem_policy_list, which have different verbs.
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 on when to use this tool versus alternatives (e.g., mem_policy_add, mem_policy_list). No mention of prerequisites or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_policy_validateC
Validate one memory policy definition before adding it.
| Name | Required | Description | Default |
|---|---|---|---|
| policy_kind | Yes | ||
| rule | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It only states 'Validate' without disclosing side effects, error handling, idempotency, or whether changes are made. For a validation tool, this is insufficient.
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 is concise and to the point. However, it could be more structured (e.g., using bullet points or sections) without adding verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and low schema coverage, the description fails to provide enough context. Agents need to know validation criteria, expected errors, and prerequisites, which are missing.
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 0%, and the description does not explain any parameters (policy_kind, rule). Agents have no guidance on valid values or the structure of the rule object, making invocation error-prone.
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 validates a memory policy definition before adding it, using a specific verb and resource. It distinguishes from siblings like mem_policy_add (adds) and mem_policy_list (lists). However, it lacks detail on what 'validate' entails (e.g., syntax, semantics).
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 'before adding it' implies sequential use with mem_policy_add, providing some context. But no explicit when-to-use or when-not-to-use, nor alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_project_briefC
Return a compact brief for one project, optionally scoped to one persisted session.
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes | ||
| session_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It only states 'return a compact brief' without disclosing side effects, authentication needs, or what 'compact' means. The read-only nature is implied but not explicit.
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 zero filler. Every word earns its place, clearly stating action and optional parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is too sparse for a retrieval tool with no output schema. 'Compact brief' is vague; the return format and what constitutes a project are not explained. More context is needed given the many sibling tools.
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 0%, but the description adds meaning by explaining session_id's role ('optionally scoped to one persisted session'). However, project_key remains completely undescribed, relying on the schema's type string only.
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 returns a compact brief for one project, with optional session scoping. However, it does not differentiate from sibling tools like mem_get or mem_context_pack.
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 on when to use this tool over alternatives. The description implies retrieval of project briefs but provides no exclusions or context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_provenanceC
Return audit provenance for one stored observation, including the original turn context.
| Name | Required | Description | Default |
|---|---|---|---|
| observation_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description does not disclose behavioral traits such as read-only nature, authentication needs, rate limits, or side effects. It only states what is returned, not the tool's operational characteristics.
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, efficient sentence that immediately communicates the action and resource. While concise, it sacrifices explanatory depth, but for a tool with one parameter, it is appropriately sized.
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 output schema, no annotations, and a single parameter, the description should explain the return value and any constraints. Terms like 'audit provenance' and 'original turn context' are undefined, leaving an agent uncertain about the tool's output and behavior.
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 0%, yet the description does little to explain the observation_id parameter beyond implying it identifies an observation. It fails to clarify the format, source, or how to obtain valid IDs, which could lead to invocation errors.
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 ('Return audit provenance') and the specific resource ('for one stored observation'), including additional detail ('original turn context'). It distinguishes from sibling tools like mem_get (which likely returns the observation itself) and mem_search (which finds observations).
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. There is no mention of prerequisites, typical use cases, or conditions that would make provenance retrieval appropriate compared to other mem_ tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_recentB
Return recent observations, optionally scoped to one project or persisted session.
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | No | ||
| session_id | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for disclosing behavioral traits. It doesn't state that the operation is read-only, safe, or idempotent, nor does it mention any ordering or pagination details.
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 concise sentence with no wasted words, front-loading the main action. However, it could be slightly more informative without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is incomplete. It does not clarify what 'observations' are, the meaning of 'recent' (time window), or the return format. For a tool with 3 optional parameters, more context is needed.
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?
With 0% schema description coverage, the description adds meaning by mentioning 'scoped to one project or persisted session', but does not explicitly describe the `limit` parameter or the semantics of `session_id` and `project_key`. The parameter names are somewhat 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 'Return recent observations' with optional scoping by project or session. This verb+resource+scope pattern distinguishes it from siblings like mem_get (specific observation) and mem_search (query-based).
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 usage for retrieving recent observations with optional filters, but lacks explicit guidance on when not to use it or alternatives. For example, it doesn't mention that mem_get is better for a single known observation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_recent_changesA
Return changes since the last stable context sync: new pending items, resolved work, blocker changes, DoD gap changes, and new decisions.
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes | ||
| session_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides substantial behavioral context: it returns a changelog of specific categories. It implies a read-only operation without side effects. However, it does not disclose how the 'last stable context sync' is determined or whether results are scoped to the project/session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the key action and enumerates return categories. No unnecessary words or repetitions.
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 lack of output schema and 28 sibling tools, the description could clarify how this tool fits into the workflow (e.g., when to use after a sync) and explain return format. It lists categories but not structure. Adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides no information about the two parameters (project_key, session_id) beyond what the schema offers. With 0% schema description coverage, the description fails to add meaning—e.g., what session_id does or why project_key is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: returning changes since the last stable context sync, listing specific categories (new pending items, resolved work, blocker changes, DoD gap changes, new decisions). This is a specific verb-resource combination that distinguishes it from siblings like mem_get or mem_recent, which do not mention sync-related changelogs.
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 usage after a stable context sync, but does not explicitly state when to use this tool versus alternatives like mem_recent (recent changes) or mem_get (generic retrieval). No exclusions or prerequisites are given, leaving ambiguity for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_repair_applyC
Apply one supported repair proposal as a derived repair event.
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes | ||
| repair_kind | Yes | ||
| health_report_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose whether this tool modifies state, requires specific permissions, or what side effects occur. The term 'apply' implies modification, but details are missing. With zero annotation coverage, the description should compensate.
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, which is concise. However, it could be restructured to front-load key information. It is not verbose but lacks clarity in the phrase 'derived repair event.'
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 mutation tool with no output schema and no parameter descriptions, the description is too sparse. It does not explain the return value, error conditions, or what 'derived repair event' means. An agent would lack sufficient context to use 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?
The input schema has 3 parameters with no descriptions. The tool description does not explain what project_key, repair_kind, or health_report_id mean. Schema description coverage is 0%, and the description adds no value for parameter understanding.
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 'Apply' as a verb and 'repair proposal' as the resource, clearly indicating the action of applying a repair. However, the phrase 'as a derived repair event' is jargon and may confuse agents unfamiliar with the domain. It distinguishes from sibling mem_repair_propose by being the application step.
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 on when to use this tool versus alternatives like mem_repair_propose or other repair tools. It does not specify prerequisites (e.g., must have a repair proposal first), context, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_repair_proposeA
Return governed repair proposals based on the latest health report for a project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It indicates a read operation ('Return') but does not explicitly state whether the tool is read-only, idempotent, or has side effects. This is a gap, but the purpose implies non-destructive behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and resource. No wasted words; it efficiently conveys the tool's 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 single parameter and no output schema, the description is minimally complete. It explains the tool's action but does not describe the return format, any prerequisites (e.g., existing health report), or behavioral constraints. It is adequate but could be more informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the single parameter 'project_key'. The tool description does not explain what 'project_key' is or its format. This leaves the parameter underdocumented.
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 that the tool returns governed repair proposals based on the latest health report for a project. It uses a specific verb ('Return') and resource ('repair proposals'), and distinguishes from sibling tools like mem_repair_apply (applies repairs) and mem_health (returns health report).
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 usage in a workflow: first check health report (mem_health), then propose repairs (this tool), then apply (mem_repair_apply). However, it does not explicitly state when to use or when not to use this tool, nor does it mention alternatives or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_scope_guardC
Return compact scope guardrails for one project, optionally scoped to one persisted session.
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes | ||
| session_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It implies a read operation ('return') but does not disclose side effects, authentication needs, error behavior, or what happens if the project does not exist. Minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 13 words, front-loaded action. No redundancy. However, slight under-specification given the lack of parameter details.
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?
Simple tool with 2 params, no output schema, no annotations. Description fails to define 'compact scope guardrails' or what the return value looks like. Lacks prerequisites or usage context, leaving the agent with significant ambiguity.
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 0%, so the description must compensate. It mentions 'optionally scoped to one persisted session' for session_id but does not explain project_key at all. No format, rules, or constraints beyond what the schema provides (type, required).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('return'), the resource ('compact scope guardrails'), and the scope ('for one project, optionally scoped to one persisted session'). It distinguishes from siblings like mem_scope_resolve by using 'guardrails' implying a different output, but does not explicitly differentiate.
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 on when to use this tool versus alternatives (e.g., mem_scope_resolve). No mention of prerequisites, context, or scenarios where this is preferred. The description only states what it does, not when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_scope_resolveD
Resolve a broad project plus optional thread/path hint into persisted session/sub-scope candidates before requesting active context.
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes | ||
| hint | No | ||
| current_cwd | No | ||
| repo_path | No | ||
| mentioned_files | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description does not disclose any behavioral traits (e.g., read-only, destructive, auth requirements, side effects). Full burden falls on description, which is insufficient.
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 is concise and front-loaded, but lacks critical detail. Efficiency is undermined by vagueness.
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 6 parameters, no output schema, and no annotations, the description is far too brief. It omits return values, parameter semantics, and any behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0% description coverage for 6 parameters. The description only vaguely references 'project' and 'hint', leaving current_cwd, repo_path, mentioned_files, and limit unexplained. Does not add meaning beyond 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 it resolves a project and optional hint into candidates, but uses jargon ('persisted session/sub-scope candidates') that lacks clarity. It does not distinguish from sibling tools like mem_scope_guard or mem_search.
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 on when to use this tool versus alternatives. Only a vague mention of 'before requesting active context' but no explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_searchC
Search stored codex-agent-mem observations for a project or, when provided, one persisted session within that project.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| project_key | No | ||
| session_id | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must carry the full burden. It lacks disclosure of read-only nature, performance implications, or any side effects. The description implies a search operation but does not explicitly state behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is concise and to the point, but it could benefit from slightly more structure (e.g., listing parameters). Still, no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks return value information, pagination behavior, or result format, which is important for a search tool. Given the absence of output schema, more details are needed for 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?
With 0% schema description coverage, the description should compensate but only minimally hints at project_key and session_id. The 'query' and 'limit' parameters are entirely omitted, leaving the agent without crucial semantic info.
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 searches stored observations for a project or session, using specific verbs and resources. It distinguishes itself from sibling search tools like mem_get and mem_recent by focusing on searching within projects/sessions.
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 on when to use this tool vs. siblings (e.g., mem_get for direct retrieval). No mention of prerequisites or contexts where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_session_listB
List recent persisted sessions/chats for one project so agents can select a scoped continuity lane.
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes | ||
| limit | No | ||
| query | No | ||
| sub_scope_hint | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must fully disclose behaviors. It only says 'list recent' with no mention of ordering, default limit, pagination, non-destructiveness, or error states. This is insufficient for an agent to anticipate tool behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loading the action and resource. It is concise, though it omits essential details about parameters and behavior.
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 4 parameters, no output schema, and no annotations, the description is incomplete. It does not explain return format, parameter meanings, or behavioral traits like 'recent' definition, making it insufficient for reliable tool usage.
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 0%, yet the description provides zero explanation of the four parameters (project_key, limit, query, sub_scope_hint). An agent has no guidance on how to use them correctly.
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') and resource ('persisted sessions/chats for one project'), and provides a clear purpose: 'so agents can select a scoped continuity lane.' This distinguishes it from siblings like mem_search or mem_get by narrowing to session/chat listing.
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 use when an agent needs to pick a session for continuity, but does not specify when not to use, prerequisites, or contrast with alternatives such as mem_search or mem_context_pack.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_snapshot_createC
Create a versioned memory snapshot for one project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes | ||
| label | Yes | ||
| session_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose any behavioral traits beyond the basic creation action. With no annotations provided, it fails to inform about permissions, side effects, or what 'versioned' implies operationally.
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 is concise, but it omits critical information. Acceptable for a minimally viable description, but not optimally balanced.
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 three parameters, no output schema, and no annotations, the description is too brief. It lacks details on return values, error conditions, and operational semantics, leaving significant gaps for an AI 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 description coverage is 0%, and the description adds no meaning for any of the three parameters. It does not clarify the role of project_key, label, or session_id beyond their schema declarations.
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 ('Create'), the resource ('versioned memory snapshot'), and the scope ('for one project'). It effectively distinguishes from sibling tools like mem_snapshot_list and mem_snapshot_restore.
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 on when to use this tool versus alternatives (e.g., mem_snapshot_list or mem_snapshot_restore). Missing context on prerequisites or postconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_snapshot_listC
List stored memory snapshots for one project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description lacks details on ordering, filtering, or whether it returns metadata or content. For a list tool, more behavioral info is needed.
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, which is concise but lacks necessary detail. It is front-loaded but too brief to be fully effective.
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 output schema and unexplained parameters, the description is incomplete. It fails to describe the return format or any operational details like pagination.
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 0%, and the description does not explain the parameters. It mentions 'for one project' but does not describe project_key or limit, leaving the agent without needed context.
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 verb 'List' and resource 'memory snapshots', and specifies scope 'for one project'. It distinguishes from sibling tools like mem_snapshot_create and mem_snapshot_restore.
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 on when to use this tool versus alternatives like mem_snapshot_create or mem_search. The description only states what it does, without context for when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_snapshot_restoreB
Restore one stored snapshot into the generated AGENTS.md continuity block when the project root path is known.
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes | ||
| snapshot_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavioral traits. It fails to mention side effects (e.g., overwriting existing content), required permissions, or error conditions.
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, front-loaded, no verbosity. However, the lack of critical information makes it feel under-specified, not just 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?
For a restore operation with 2 parameters and no output schema, the description fails to explain return values, error handling, or the relationship between project_key and snapshot_id. Incomplete for effective 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 has 0% description coverage and the description does not explain the two parameters (project_key, snapshot_id). The agent receives no meaning beyond parameter names.
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 action (restore), resource (snapshot), and target (AGENTS.md continuity block). Distinguishes from siblings like mem_snapshot_create and mem_snapshot_list.
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 a precondition ('when the project root path is known') but lacks explicit when-not or alternative tools. However, the context is helpful and the sibling set suggests no direct alternative for restore.
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.
28 tool updates
v1.0.2- First observed
mem_bootstrap_context - First observed
mem_completion_check - First observed
mem_context_pack - First observed
mem_get - First observed
mem_health - First observed
mem_health_runtime - First observed
mem_inheritance_add - First observed
mem_inheritance_list - First observed
mem_inheritance_remove - First observed
mem_note_create - First observed
mem_open_work - First observed
mem_policy_add - First observed
mem_policy_list - First observed
mem_policy_remove - First observed
mem_policy_validate - First observed
mem_project_brief - First observed
mem_provenance - First observed
mem_recent - First observed
mem_recent_changes - First observed
mem_repair_apply - First observed
mem_repair_propose - First observed
mem_scope_guard - First observed
mem_scope_resolve - First observed
mem_search - First observed
mem_session_list - First observed
mem_snapshot_create - First observed
mem_snapshot_list - First observed
mem_snapshot_restore
TDQS
Most tools have clearly distinct purposes, but there is some potential overlap between retrieval tools like mem_get, mem_search, mem_recent, and mem_recent_changes. Descriptions help differentiate them, but the distinctions may still cause confusion.
All tools follow a consistent mem_verb_noun or mem_noun_verb pattern in snake_case, making them predictable and easy to parse. No mixed conventions are present.
28 tools is on the high side, covering a broad set of memory-related operations. While each tool has a defined purpose, the count feels slightly heavy for a single server.
The tool set covers many memory management aspects, but lacks explicit update and delete operations for stored observations (only create via mem_note_create). This creates a notable gap in the typical CRUD lifecycle.
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
- memnodeOAuthdev.memnode
Persistent, inspectable memory for AI agents with lineage, correction, and a hosted MCP endpoint.
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
Portable memory for AI agents: capture once, recall across Claude, Cursor, and any MCP client.
Persistent memory for AI agents across Claude, ChatGPT and any MCP client.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP-native, local-first memory for coding agents that turns real sessions into reusable decisions, gotchas, and domain knowledge.176MIT
- AlicenseNot gradedqualityBmaintenanceProvides a persistent, local-first memory for coding agents over MCP, enabling automatic recall and recording of past work, failures, and decisions to reduce repetition and token usage.MIT
- FlicenseNot gradedqualityCmaintenanceLocal-first deterministic project memory for AI coding agents, with context packs, decisions, gates, risks, scoped claims and explicit checkpoints in project-owned files.-
- AlicenseNot gradedqualityFmaintenanceLocal-first, auditable memory for AI agents. Provides durable context for MCP hosts with SQLite storage, CLI, and MCP tools for memory management.2Apache 2.0
Appeared in Searches
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/MarceloCaporale/codex-agent-mem'
If you have feedback or need assistance with the MCP directory API, please join our Discord server