Project Context MCP
The Project Context MCP server is a local-first, cross-session project intelligence and memory service that indexes code/text, persists sourced decisions, manages tasks, and assembles focused context for coding agents.
Project Management
Register, open, list, update, archive/unarchive, relocate, and delete projects (with two-step safety checks)
Check storage configuration status
Indexing & Search
Incrementally index text, code, config, and documentation files (with
.gitignoresupport)Search indexed content and active memories using FTS5
Start/stop/list process-lifetime file watchers that debounce and incrementally index changes
Report project health (sources, chunks, memories, tasks, index runs)
Diagnose and repair database integrity and derived search indexes (
project_doctor)
Memory Management
Persist structured project-level memories: facts, decisions, constraints, preferences, lessons, issues, assumptions, and task summaries — with explicit sources and lifecycle statuses
Persist user-level memories with cross-project scopes (
user,workspace,project,module,task)List and update memory lifecycle status (stale, conflicted, rejected, superseded, deleted)
Review, accept, or reject generated memory candidates with a full audit trail
Task & Checkpoint Management
Start persistent cross-session tasks with goals
Save checkpoints (completed items, next steps, changed files, blockers, risks, verification)
List tasks by status and mark them complete
Context Assembly
Assemble task-focused context from active memories, checkpoints, and indexed sources within a token budget
Backup, Restore & Export
Create plain or AES-256-GCM encrypted SQLite backups
Restore from plain or encrypted backups
Export project data (memories, candidates, tasks, symbols, relations, manifest) as JSONL files
Integrates with Git to track changes, generate memory candidates from diffs, and record evidence for decisions, supporting both Git and non-Git projects.
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., "@Project Context MCPget task context for continuing token reuse detection"
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.
Project Context MCP
中文 | English
Project Context MCP 是一个面向编码智能体的本地优先、跨会话项目智能与记忆服务。它可以增量索引项目文本和代码,保存有明确来源的决策与约束,持久化任务检查点,并通过 MCP 为当前任务组装聚焦的项目上下文。
个人存储能力(v0.8.0)
由用户明确选择持久化存储位置,MCP 服务不会静默初始化
Codex、Claude Code、Cursor 及其他 MCP 客户端共享项目注册表
项目数据库随项目存放在
<project>/.project-context/project.db使用 SQLite WAL,并结合 FTS5、Unicode n-gram 与代码关系搜索
将覆盖率归一化的 n-gram 排名、FTS 结果和精确符号名加权合并
增量索引支持
.gitignore和.project-context-ignore,并在目录层提前剪枝每项目索引锁、MCP 取消操作和进度通知
旧版 n-gram 迁移延迟到
project_index,采用可取消、有界事务的批量重建根据项目根目录识别并排除 Codex 运行会话、缓存、日志、附件和本地密钥存储
为已索引文本块建立外键索引,保证大型数据库中的来源清理行为可预期
默认排除
.env、凭据、私钥、数据库、二进制文件、生成目录和大文件默认排除
.d依赖文件、.o/.obj目标文件、.a/.lib静态库、字节码、编译缓存和覆盖率/性能分析产物使用 Tree-sitter 索引 TypeScript、TSX、JavaScript、JSX、MJS 和 CJS 符号
搜索与任务上下文包含导入、调用、继承和实现关系
自动检测 Git、Mercurial(hg)和 Subversion(svn),记录版本、分支、工作区状态与差异哈希证据,但不持久化完整 diff
从 Git、Mercurial、Subversion 变更、已索引知识文档和已完成任务生成待审核记忆候选
各类版本控制与无版本控制项目均支持稳定的候选去重和文档候选替代
文件来源发生变化或消失时,将关联的活跃记忆标记为过期
使用段落指纹,避免大文件中无关内容变化导致记忆失效
支持结构化记忆类型、生命周期状态和决策替代关系
原生用户记忆支持
user、workspace、project、module和task作用域支持跨会话任务和检查点
本地工作台支持候选接受/拒绝、过期记忆清理、任务完成/取消以及索引监听控制
project_context按任务相关性组装上下文,包含关联代码符号并严格执行 Token 预算选择与任务相关的作用域约束,同时保留作用域为空的项目级约束
本地确定性质量评估覆盖检索、上下文选择、记忆候选和延迟
项目根目录和输出根目录使用显式允许列表,并校验符号链接后的真实输出路径
MCP 工具提供结构化结果、输出 Schema、资源、资源模板和工作流提示词
支持版本化的原地数据库迁移、完整性诊断、FTS 修复、备份和 JSONL 导出
支持恢复为新项目,或在明确确认后覆盖已归档项目
支持项目重命名、归档、取消归档、迁移、删除预览和受保护的永久删除
MCP 打开项目时自动同步索引并启动进程级监听,读取上下文和结束任务前刷新待处理变化
使用 scrypt 派生密钥的流式 AES-256-GCM 加密备份与恢复
安全的本地主机项目工作台,包含项目画像、作用域用户规则和上下文预览
CLI 与 stdio MCP 服务共用同一套核心实现
LSP、向量嵌入、远程存储和团队同步仍属于后续规划。当前已提供本地 Web 管理工作台。
Related MCP server: ContextAtlas
环境要求
Node.js 22 或更高版本
npm 10 或更高版本
安装与构建
npm install
npm run typecheck
npm test
npm run build
npm run eval
npm run benchmark质量评估
npm run eval 会创建隔离的临时项目,确定性测量英文和 CJK 文档检索、中文子串检索、精确代码符号检索、代码图 seed/related 召回、活跃记忆检索、作用域上下文选择、候选记忆的准确率与召回率、Token 预算合规性以及本地延迟。搜索会把 FTS5/BM25、Unicode n-gram 和精确符号作为独立排序通道,用 RRF 融合后再进行带 hop 衰减的代码关系扩展。任何质量指标未达阈值时,命令都会以非零状态退出。评估不使用网络服务、嵌入模型或外部项目数据。
npm run benchmark 会执行 100 次查询和上下文迭代,并输出只包含耗时的 JSON。延迟与机器环境相关,应在没有竞争负载的同一主机上比较;质量指标才是可移植的回归门槛。
评估报告保存在 docs/baselines/v0.3.1.json 和 docs/baselines/v0.4.0.json。在确定性测试数据上,v0.4.0 将搜索 MRR 从 0.707 提升到 0.900,Top-1 召回率从 0.600 提升到 0.800,已选择记忆的准确率从 0.667 提升到 1.000;同时 Recall@5、必需记忆召回率、候选准确率、候选召回率和候选类型准确率均保持 1.000。
当前评估集包含 9 个搜索用例;搜索专项回归另外覆盖中文任务描述、非 active 记忆排除、作用域误召回、同文件同名 symbol 和跨文件代码关系。本轮确定性评估结果为 Recall@5 1.000、MRR 0.870,质量门槛中的最低 MRR 为 0.800。历史版本指标仍保留在上述 baseline 文件中,用于比较,不应与当前用例数量直接横向比较。
选择记忆存储位置
运行交互式初始化程序:
node dist/cli.js init初始化程序用于选择共享注册表数据和恢复备份的存储位置。项目数据库始终位于 <project>/.project-context/project.db。可选位置包括:
用户目录,推荐:
%USERPROFILE%\.project-context当前项目:
<project>\.project-context自定义绝对路径
自动化环境可使用:
node dist/cli.js init --storage user --allow-project-root D:\project
node dist/cli.js init --storage project --project-root D:\project\my-app
node dist/cli.js init --storage D:\ProjectMemory --allow-project-root D:\project --allow-output-root D:\ProjectMemoryPROJECT_CONTEXT_HOME 可在临时或隔离环境中覆盖共享注册表和恢复目录。使用该变量时,请配置 PROJECT_CONTEXT_ALLOWED_ROOTS 和 PROJECT_CONTEXT_ALLOWED_OUTPUT_ROOTS:Windows 使用分号分隔,POSIX 使用冒号分隔。升级后,已注册项目仍可继续使用;注册新项目时,其路径必须位于允许的根目录中。
CLI 工作流
# 注册项目并保存返回的项目 ID
node dist/cli.js project open D:\project\my-app
# 执行增量索引
node dist/cli.js index <project-id>
# 或保持显式的进程生命周期文件监听
node dist/cli.js watch <project-id> --debounce 300
# 在系统浏览器中打开本地工作台
node dist/cli.js ui
# 搜索已索引内容、代码符号和活跃记忆
node dist/cli.js search <project-id> "refresh token"
# 索引文档或完成任务后,审核有来源的候选记忆
node dist/cli.js memory candidates <project-id>
node dist/cli.js memory accept <project-id> <candidate-id>
# 取消不再继续的跨会话任务并保留最后检查点
node dist/cli.js task cancel <project-id> <task-id>
# 保存一条有来源的决策
node dist/cli.js memory add <project-id> `
--type decision `
--title "Rotate refresh tokens" `
--content "Refresh tokens rotate after every successful use." `
--source-kind user
# 保存跨项目共享的偏好
node dist/cli.js user-memory add `
--type preference `
--title "Test runner" `
--content "Prefer Vitest for TypeScript projects." `
--source-kind user `
--scope-level user
# 开始任务并在之后恢复
node dist/cli.js task start <project-id> "Implement token reuse detection"
node dist/cli.js task checkpoint <project-id> <task-id> `
--completed "Added token family" `
--next "Add reuse test" `
--changed-file "src/auth/auth.service.ts"
# 为新会话组装任务上下文
node dist/cli.js context <project-id> "Continue token reuse detection"
# 诊断并修复派生的 FTS 索引
node dist/cli.js doctor <project-id> --repair
# 创建持久化运维副本;目标必须是新的绝对路径或空目录
node dist/cli.js backup <project-id> D:\ProjectMemoryBackups\my-app.db
node dist/cli.js export <project-id> D:\ProjectMemoryExports\my-app
# 避免将口令写入命令历史或进程参数
$env:PROJECT_CONTEXT_BACKUP_PASSPHRASE = "<a strong private passphrase>"
node dist/cli.js backup-encrypted <project-id> D:\ProjectMemoryBackups\my-app.pcmb `
--passphrase-env PROJECT_CONTEXT_BACKUP_PASSPHRASE
node dist/cli.js project restore-encrypted D:\ProjectMemoryBackups\my-app.pcmb `
--passphrase-env PROJECT_CONTEXT_BACKUP_PASSPHRASE `
--root D:\project\restored-app项目删除被设计为两个步骤:先归档,再调用不带 --purge 的 project delete 检查影响数量,最后使用精确的项目 ID 确认执行永久删除。存在活跃记忆、进行中任务或待审核候选时,永久删除会被阻止。项目目录缺失不会触发自动删除。
本地项目工作台
project-context ui 会启动一个仅绑定到 127.0.0.1 的临时 HTTP 服务,自动选择可用端口并打开系统浏览器。项目画像汇总索引健康状态、代码智能、文件类型、Git 状态、记忆、候选、任务和主要索引来源,并可直接执行增量索引、控制进程级 watcher、审核候选、清理过期记忆以及结束历史任务。监听开启时,当前项目画像会自动刷新索引与记忆状态。索引过滤编辑器支持常用规则快捷添加、Windows 路径规范化和保存前影响预览,确认后将规则原子写入 .project-context-ignore 并立即更新索引。工作台还可以管理 user、workspace、project、module 和 task 作用域规则。
Windows 一键启动
在仓库根目录双击 start-web.cmd,即可启动本地工作台并自动打开系统浏览器。启动器会以自身所在目录作为项目目录;如果 dist/cli.js 尚不存在,则会先使用已有依赖执行 npm run build。首次使用仍需在仓库中执行一次 npm install。
需要桌面入口时,右键单击 start-web.cmd,选择“发送到 > 桌面快捷方式”。工作台运行期间请保留命令窗口;按 Ctrl+C 或关闭窗口即可停止服务。不要收藏或复制某次启动产生的完整 URL 作为固定入口,因为端口和启动令牌属于当前服务进程;以后仍应通过启动器打开工作台。
macOS 一键启动
在仓库根目录双击 start-web.command,即可启动本地工作台并自动打开默认浏览器。启动器兼容 Apple Silicon 和 Intel Homebrew 的常见 Node.js 安装路径,并与 Windows 版本一样在缺少 dist/cli.js 时使用已有依赖自动构建。
如果文件不可执行,请在终端中运行一次 chmod +x start-web.command。如果 macOS 首次阻止打开,请在 Finder 中按住 Control 单击该文件,选择“打开”并确认。工作台运行期间请保留终端窗口;按 Control+C 或关闭窗口即可停止服务。首次使用仍需在仓库中执行一次 npm install,并且不应收藏某次启动产生的临时完整 URL。
项目画像包含基于 Cytoscape.js 的交互式关系图。文件级视图会聚合项目依赖,而不是将每条原始关系都发送到浏览器;选择或搜索文件及符号后,可以按需展开一跳或两跳符号邻域。节点可自由拖拽,画布支持平移、缩放、适配,以及力导向、分层和环形布局。IMPORTS、CALLS、EXTENDS、IMPLEMENTS 关系可以独立筛选,节点详情会关联到已索引的源码路径和行号。
编辑活跃规则会创建新版本并将旧版本标记为 superseded;停用规则使用可审计的 deleted 生命周期状态,而不是物理删除。已被替代的历史版本不能重新激活为第二个活跃版本。
上下文预览会针对选定项目和模拟任务运行真实的 project_context 流程,展示选中的用户规则、项目约束与决策、活跃任务检查点、索引证据、警告以及实际 Token 预算使用情况。
浏览器会话使用随机启动令牌,并将其交换为 HttpOnly、SameSite=Strict Cookie。API 会校验 Host、同源状态变更请求、自定义 UI 请求头、JSON Schema 和 64 KiB 请求体上限。服务返回严格的内容安全策略,并且不会监听 0.0.0.0。project-context ui --no-open 仅供自动化使用,它会将一次性启动 URL 输出到终端。
小白教程:接入 MCP 客户端并自动初始化项目
Project Context MCP 不绑定某一个 AI 客户端。Codex、Claude Code、Cursor 以及其他支持 stdio MCP 的客户端都可以连接同一套本地项目数据。
这里的“默认启动”分为两层:先在所用客户端中注册 MCP 服务,再通过该客户端的全局会话规则,引导它在仓库首个任务中调用 project_open 和 project_context。project_open 会在 MCP 内部完成首次或增量索引并启动变更监听,无需客户端单独调用 project_index 或 project_watch_start。仅启动客户端但不开始任务时,不会在后台扫描磁盘。
安装完成后还要配置什么
首次安装后需要完成下面 3 项一次性配置,缺少其中任何一项都可能导致客户端看得到 MCP、但没有真正打开和索引当前项目:
一次性配置 | 作用 | 完成标志 |
初始化个人存储和允许的项目根目录 | 决定共享注册表、恢复目录和允许索引的代码目录 |
|
将 MCP 注册到所用客户端 | 让 Codex、Claude Code 或其他客户端可以启动 | 客户端的 MCP 列表中能看到 |
将推荐区块加入客户端全局会话规则 | 引导客户端在仓库首个任务中调用 | 新会话依次调用 |
常用客户端的全局会话规则位置:
客户端 | Windows | macOS/Linux |
Codex |
|
|
Claude Code |
|
|
Cursor 或其他 MCP 客户端 | 使用客户端提供的全局 MCP 配置和 User Rules | 使用客户端提供的全局 MCP 配置和 User Rules |
这 3 项只需要为所用客户端配置一次。以后进入位于允许根目录下的任意仓库,直接描述正常开发任务即可,不需要修改项目提示词,也不需要手动调用 project_index、project_watch_start 或判断任务长短。MCP 会在 project_open 后托管当前进程的索引与 watcher;候选记忆仍需人工审核,不会自动进入正式上下文。
下面按顺序给出从安装到验证的完整命令。已经完成某一步的用户可以直接跳到下一步。
第 1 步:安装并构建
git clone https://github.com/hh357418341-create/project_context_mcp.git D:\tools\project-context-mcp
cd D:\tools\project-context-mcp
npm install
npm run typecheck
npm test
npm run build需要 Node.js 22 或更高版本。下面示例中的安装目录和项目根目录请替换为自己的绝对路径。
第 2 步:一次性初始化个人存储
Windows 示例:
node dist/cli.js init --storage user --allow-project-root D:\projectmacOS/Linux 示例:
node dist/cli.js init --storage user --allow-project-root "$HOME/code"这一步只需执行一次。--allow-project-root 是允许注册项目的安全边界;有多个代码目录时可以在同一条命令后继续列出其他绝对路径。MCP 不会静默选择存储目录。
第 3 步:添加到所用 MCP 客户端
选择实际使用的客户端执行对应命令,不需要同时配置所有客户端。
Codex
推荐使用 Codex CLI,避免手写 TOML:
codex mcp add project-context -- node D:/tools/project-context-mcp/dist/mcp/server.js
codex mcp get project-contextcodex mcp get project-context 应显示 enabled: true。也可以手动编辑 ~/.codex/config.toml:
[mcp_servers.project-context]
type = "stdio"
command = "node"
args = ["D:/tools/project-context-mcp/dist/mcp/server.js"]如果 node 不在 PATH 中,将 command 改为 Node 可执行文件的绝对路径。修改配置后,重启 Codex 或新建会话。
Claude Code
使用用户级 scope,配置会对当前用户的所有 Claude Code 项目生效:
claude mcp add --scope user project-context -- node D:/tools/project-context-mcp/dist/mcp/server.js
claude mcp get project-contextclaude mcp get project-context 应能显示该 stdio 服务。其他支持 stdio MCP 的客户端,请将命令设置为 node,参数设置为构建产物 dist/mcp/server.js 的绝对路径。
第 4 步:添加客户端全局会话规则
根据所用客户端创建或编辑对应文件:
Codex:Windows 使用
%USERPROFILE%\.codex\AGENTS.md,macOS/Linux 使用~/.codex/AGENTS.md;Claude Code:Windows 使用
%USERPROFILE%\.claude\CLAUDE.md,macOS/Linux 使用~/.claude/CLAUDE.md;Cursor 或其他客户端:加入其全局 User Rules,不要只放在某一个项目的局部规则中。
加入下面的启动规则。若文件中已有个人规则,只追加这段,不要覆盖原内容。这里修改的是客户端的用户级全局规则,不是当前代码仓库里的局部规则文件。
<!-- project-context-mcp:start -->
# Cross-session Project Context (project-context-mcp)
Use project-context-mcp to retain sourced project knowledge across AI coding sessions.
## Session Workflow
1. At the beginning of the first user turn in a repository, call `storage_status`.
2. Call `project_open` with the repository's absolute root path and reuse the returned project ID. The MCP server synchronizes the index and manages change tracking for the current process.
3. Before substantial implementation work, call `project_context` with the current task and `budgetTokens: 3000`; increase the budget explicitly only when the task needs a larger snapshot.
4. Use `project_search` for indexed text, symbols, memories, and code relationships instead of guessing. Managed pending changes are flushed before reads.
5. For non-trivial work, call `task_start`, save progress with `task_checkpoint`, and call `task_complete` when finished. Completion flushes pending project changes.
## Memory Rules
- Review `memory_candidates` after indexing Git changes. Accept or reject candidates explicitly; never accept them automatically.
- Use `memory_remember` only for durable decisions, constraints, lessons, or facts with a clear source.
- Never store credentials, private keys, tokens, full chat transcripts, or full Git diffs.
- Run `project_doctor` when stored context appears incomplete or inconsistent.
<!-- project-context-mcp:end -->启动流程必须放在客户端启动任务前就能读取的用户级全局规则中,不能只放在 Project Context 工作台的“全局规则”中。工作台规则只有在 project_context 已被调用后才能返回,无法负责引导第一次 MCP 调用。
完成这一步后,不需要为每个项目重复添加相同区块,也不需要在日常任务提示词中写“请启动 watcher”或“修改后重新索引”。
第 5 步:验证第一次自动初始化
进入一个位于允许根目录下、尚未注册的仓库,然后启动已经配置好的 MCP 客户端并发送第一条正常任务消息。按照上面的全局规则,客户端应依次调用:
storage_status
project_open
project_context验证结果:
project_open返回一个稳定的prj_...项目 ID;项目中出现
.project-context/project.db;project_open完成首次或增量索引,并在当前 MCP 进程中自动启动变更监听;project_context返回与当前任务有关的记忆、规则、任务检查点和索引证据。
建议将 .project-context/ 加入项目的 .gitignore。项目路径不在初始化时配置的允许根目录下时,project_open 会拒绝注册;重新运行 init 并显式加入正确根目录即可。
MCP 托管索引不是永久后台服务
客户端会根据自身的 MCP 配置启动服务,并根据全局会话规则在首个任务中调用 project_open。MCP 会先完成增量索引,再为当前项目启动进程级 watcher;project_search、project_context、task_complete 和 task_cancel 会在执行前刷新待处理变化。客户端或 MCP 进程重启后旧 watcher 不会恢复,但下一次 project_open 会重新同步并启动新的 watcher。CLI 仍保留显式的 index 和 watch 工作流。
客户端配置细节可参考对应官方文档:Codex 的 MCP 与 Customization / AGENTS.md,以及 Claude Code 的 MCP 文档。
MCP 工具(35 个)
storage_statusproject_open、project_list、project_update、project_archive、project_unarchive、project_relocateproject_delete、project_restore、project_restore_encryptedproject_index、project_search、project_context、project_healthproject_watch_start、project_watch_stop、project_watch_listproject_doctor、project_backup、project_backup_encrypted、project_exportmemory_remember、memory_list、memory_update_statusmemory_candidates、memory_candidate_accept、memory_candidate_rejectuser_memory_remember、user_memory_list、user_memory_update_statustask_start、task_checkpoint、task_list、task_complete、task_cancel
project_index 会返回符号与关系总数、过期记忆 ID、新生成的候选以及 Git 元数据。索引和 watcher 会跳过常见跨语言编译产物,包括 C/C++ 的 .d 依赖文件、.o/.obj 目标文件、.a/.lib 静态库、预编译头、Java/Python 字节码以及覆盖率和性能分析输出。存在 Git 时优先使用 Git 证据;没有 Git 的项目仍可以根据新增或修改的知识文档生成候选。每个已完成任务最多生成一条候选,依次优先使用任务摘要、第一条风险和第一条明确具有长期价值的已完成事项,避免把普通执行记录拆成多条待审记忆。系统不会返回或保存完整 diff。候选记忆在调用 memory_candidate_accept 前始终只处于待审核状态。
打开 Schema v4 之前创建的数据库时,只会创建 n-gram 表并立即返回。现有内容会在下一次 project_index 中通过小批量提交重建,期间 MCP 取消和进度报告保持有效。中断的重建会继续标记为未完成,并在之后的索引运行中安全重试。project_doctor 会报告该状态,也可以显式修复。
Schema v5 为 chunks(source_id) 添加索引,使来源删除和外键检查只与受影响的文本块数量相关,避免反复扫描整个文本块表。
项目 Schema v6 为文件来源记忆绑定增加段落摘录和摘录哈希。当整文件哈希变化但标准化后的来源段落仍然存在时,绑定会更新文件哈希与行号范围并保持活跃;段落变化或缺失时则变为 stale。没有摘录的旧版绑定继续使用保守的整文件失效策略。注册表 Schema v2 增加项目归档状态和用户记忆。
MCP 的 project_open 会完成索引并自动启动受控 watcher;显式的 project_watch_start、project_watch_stop 和 project_index 继续作为诊断与手动控制接口。watcher 只在 MCP 或 CLI 进程生命周期内存在,会忽略内部数据库、版本控制元数据、依赖和常见构建目录,对其余文件事件防抖并运行相同的增量索引。它不会接受记忆候选;MCP 连接关闭时会释放 watcher。
加密备份使用带版本号的认证格式,包含随机盐和 IV、scrypt 密钥派生以及 AES-256-GCM。MCP 和 CLI 只接受环境变量名称 passphraseEnv,不接受原始口令。口令不会被存储,因此一旦丢失,备份将无法恢复。无论成功还是失败,明文临时备份文件都会被删除。
当注册的项目根目录本身名为 .codex 时,系统会自动排除 sessions、.tmp、plugins/cache、日志、附件、SQLite 状态和密钥存储等运行时目录。普通应用仓库中的同名目录仍可被索引。
所有成功工具都会返回经过校验的 structuredContent,并保留 JSON TextContent 兼容旧客户端。为避免把同一份大结果重复放进模型上下文,超过约 2,000 个字符的 TextContent 会改为简短提示;完整结果仍在 structuredContent.result 中。MCP 和恢复任务提示的隐式 project_context 预算为 3,000 tokens,需要更多信息时请显式传入更高的 budgetTokens。
MCP 资源与提示词
静态项目注册表:
project-context://projects项目健康状态、单条记忆、任务和索引来源的资源模板
用于任务上下文和检查点恢复的
resume-project-task提示词用于显式审核候选的
review-memory-candidates提示词
存储结构
<storage-root>/
├── registry.db
└── recovery/
└── <project-id>-<timestamp>.db
<project-root>/
└── .project-context/
└── project.dbregistry.db 保存项目注册信息和用户级记忆。每项目数据库保存索引、项目记忆、候选审计记录和任务检查点。在覆盖已归档项目数据库或迁移旧版中央项目数据库前,系统会在 recovery 目录中创建内部安全备份。
注册表 Schema v3 会先创建经过校验的恢复快照,再将现有 <storage-root>/projects/<project-id>/project.db 迁移到对应项目根目录。.project-context/ 始终不参与索引,并已加入仓库的 .gitignore。系统不会存储完整聊天记录、完整 Git diff、检测到的密钥值或加密口令。
Available Tools
34 toolsmemory_candidate_acceptA
Accept a reviewed candidate and persist it as sourced active long-term memory.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ||
| candidateId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context that the candidate becomes 'sourced active long-term memory,' but does not disclose side effects, auth needs, or state changes beyond what annotations (only idempotentHint) provide.
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, 12 words, front-loaded verb, no unnecessary information.
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?
Despite having an output schema, the description lacks explanation of prerequisites (e.g., candidate state), the meaning of 'sourced active long-term memory,' and return value 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?
Schema description coverage is 0%, and the description adds no explanation for projectId or candidateId beyond their 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 'Accept a reviewed candidate' with specific verb and resource, distinguishing it from sibling tools like memory_candidate_reject.
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?
Implies use after review, but no explicit guidance on when to use versus alternatives (e.g., reject) or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_candidate_rejectBDestructiveIdempotent
Reject a reviewed memory candidate without deleting its audit record.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ||
| candidateId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the important detail that the audit record is preserved, which goes beyond the annotations (idempotentHint=true, destructiveHint=true). However, it does not explain what 'reject' means in terms of state changes or side effects, and the destructiveHint might be unclear without further context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with 11 words, efficiently communicating the core purpose and a key behavioral trait. 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?
The tool is simple with only two required parameters and an output schema that likely covers return values. However, the lack of parameter descriptions and usage guidelines makes it incomplete for a fully informed 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?
With 0% schema description coverage and no parameter details in the description, the agent has no semantic information about projectId or candidateId beyond their names and types. This is a significant gap.
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 action: 'Reject a reviewed memory candidate.' It also specifies the key behavioral nuance 'without deleting its audit record,' which distinguishes it from sibling tools like memory_candidate_accept.
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 the state in which the candidate must be before rejection. The phrase 'reviewed memory candidate' gives a slight hint but is insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_candidatesARead-onlyIdempotent
List sourced memory candidates that require explicit review before becoming long-term memory.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| status | No | pending | |
| projectId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, indicating safe read operation. The description adds context about the candidate review process, which aligns with annotations and provides extra behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no unnecessary 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?
The description is adequate for a simple list operation given the annotations and output schema, but it lacks details on pagination (limit) and the meaning of 'sourced' or the status filter, leaving some gaps in 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 any parameters (limit, status, projectId). It only explains the overall purpose, missing the opportunity to clarify filter defaults or meaning of status 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?
The description clearly states the verb 'List' and the specific resource 'sourced memory candidates that require explicit review before becoming long-term memory,' which distinguishes it from sibling tools like memory_list (general memories) and memory_candidate_accept/reject (actions on candidates).
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 reviewing candidates before acceptance, but does not explicitly state when not to use or mention alternative tools beyond the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_listBRead-onlyIdempotent
List project memories by lifecycle status.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| status | No | active | |
| projectId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, indicating safe, repeatable operation. The description adds no extra behavioral context (e.g., default status, pagination, performance). Adequate but minimal added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no redundant words. Efficiently conveys 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?
Despite good annotations and an output schema, the description fails to mention all parameters (especially required projectId) or the default behavior (status defaults to 'active'). Leaves gaps for an agent to infer.
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 mentions 'status' implicitly. It does not explain projectId (required) or limit (default 50, max 200). Minimal added meaning beyond property 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?
The description clearly states the action ('List'), resource ('project memories'), and filter ('by lifecycle status'). It distinguishes from sibling tools like user_memory_list (project vs user) and memory_candidates (specific status).
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 memory_candidates or user_memory_list. No conditions, prerequisites, or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_rememberC
Persist a sourced fact, decision, constraint, preference, lesson, issue, assumption, or task summary.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | ||
| scope | No | ||
| title | Yes | ||
| reason | No | ||
| status | No | active | |
| content | Yes | ||
| projectId | Yes | ||
| sourceRef | No | ||
| confidence | No | ||
| sourceKind | Yes | ||
| supersedesId | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotation idempotentHint=false (indicating non-idempotent behavior), the description adds no behavioral traits. It does not mention side effects, authorization needs, or what happens on repeated calls, which is critical for a state-mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but it lacks structure (e.g., bullet points, parameter explanations). While it wastes no words, it also fails to provide essential information, making it minimally adequate in 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's complexity (many required params, 0% schema coverage), the description is woefully incomplete. It does not explain what each parameter does, the return value (though output schema exists), or any constraints. An agent would struggle to use this 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?
With 0% schema description coverage and 11 parameters (5 required), the description fails to explain any parameter. It does not even hint at the roles of projectId, type, title, content, sourceKind, etc., making it nearly impossible for an agent to invoke 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 'persist' and lists the types of memory items (fact, decision, etc.), making the purpose evident. However, it does not explicitly differentiate from sibling tools like 'memory_list' or 'memory_update_status', though the verb 'persist' implies creation.
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 (e.g., memory_list, memory_update_status). There are no exclusions, prerequisites, or context cues to help an agent decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_update_statusBDestructiveIdempotent
Move a memory to another lifecycle status such as stale, conflicted, rejected, or deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | ||
| memoryId | Yes | ||
| projectId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint: true and destructiveHint: true, which are consistent with the description. However, the description does not elaborate on side effects, such as whether setting 'deleted' actually removes the memory or what 'destructive' entails.
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 extraneous words. It efficiently conveys the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description does not cover return values. It also lacks information about valid status transitions or prerequisites (e.g., memory must exist). Given the tool's complexity (3 required params, enum), more context is needed 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?
The schema has 3 parameters with 0% description coverage. The description only mentions the 'status' parameter implicitly by listing example values. It does not explain 'projectId' or 'memoryId', leaving the agent to infer their meaning from 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?
The description clearly states the action (move a memory) and the resource (lifecycle status), with examples of statuses. However, it does not differentiate this tool from sibling tools like memory_candidate_accept or memory_candidate_reject, which also change memory status.
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 siblings. For instance, it does not explain that this tool can set any status, while others are specialized for accept/reject actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_archiveAIdempotent
Archive a project while retaining its database, memories, tasks, and audit history.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the idempotentHint annotation by specifying what is retained during archiving. This informs the agent about side effects (no data loss).
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, 13 words, no extraneous information. Efficiently conveys the core purpose and key behavioral trait.
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?
Covers purpose and retention, but lacks mention of reversibility (e.g., via project_unarchive) or any confirmation of success. The output schema might fill gaps, but it is not provided.
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 elaborate on the projectId parameter. While the parameter name is self-explanatory, the description should confirm that projectId is the identifier of the project to archive.
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 ('Archive a project') and specifies what is retained ('database, memories, tasks, and audit history'), distinguishing it from destructive siblings like project_delete.
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 project_delete or project_backup. The agent must infer usage from the tool name and sibling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_backupA
Create a consistent online SQLite backup at a new absolute destination path.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ||
| destination | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide openWorldHint=true and idempotentHint=false; the description adds behavioral context like 'consistent' and 'online' backup, and the constraint that destination must be new and absolute. No contradiction with annotations.
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 that is front-loaded with the key action and resource. Every word adds value 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?
Output schema exists so return values are not expected in description. However, important details like consistency guarantees, online behavior (e.g., locking), and prerequisites (project must exist) are missing. Given backup complexity, description is adequate but not rich.
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?
Description adds meaning for destination (new, absolute) but not for projectId. With 0% schema coverage, the description partially compensates but leaves a gap for projectId 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 verb ("Create"), the resource ("online SQLite backup"), and specific scope ("consistent", "new absolute destination path"). It distinguishes from siblings like project_backup_encrypted and project_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 explicit guidance on when to use this tool versus alternatives (e.g., project_backup_encrypted) or when not to use it. The context provides no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_backup_encryptedA
Create an AES-256-GCM project backup using a passphrase from a named environment variable.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ||
| destination | Yes | ||
| passphraseEnv | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide openWorldHint=true and idempotentHint=false, indicating mutation and potential side effects. The description adds algorithm info (AES-256-GCM) and passphrase source, but does not disclose behavior on conflict, overwrite, or state changes. With annotations present, the additional context is moderate.
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 12 words, front-loaded with key action and encryption details. No redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param tool with security implications, the description lacks prerequisites (e.g., env variable must exist, project must be accessible), return value description (despite output schema existing), and error conditions. Incomplete for safe and 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 has 0% description coverage, so description must compensate. It clarifies 'passphraseEnv' as a named environment variable but does not explain 'projectId' or 'destination'. Partial value added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: create an encrypted project backup using AES-256-GCM with a passphrase from an environment variable. It distinguishes from sibling tools like 'project_backup' (presumably unencrypted) and 'project_restore_encrypted'.
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 encrypted backups but does not explicitly guide when to use this tool versus alternatives like 'project_backup' or mention prerequisites (e.g., project existence, env variable set). No 'when not to use' or comparison to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_contextARead-onlyIdempotent
Assemble task-focused project context from active memories, task checkpoints, and indexed sources.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | ||
| projectId | Yes | ||
| budgetTokens | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description does not need to repeat that. It adds useful context about the sources of data (active memories, task checkpoints, indexed sources), which goes beyond annotations. No contradictions.
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 that states the core function concisely. Every word contributes meaning, with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's high-level purpose but lacks detail on how context is assembled, how parameters influence behavior, or what the output schema contains. Since an output schema exists, return values are covered externally, but parameter semantics remain vague, making the description minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description provides no explanation of the parameters (projectId, task, budgetTokens). The agent must infer semantics from parameter names and schema constraints (e.g., min/max for budgetTokens), which is insufficient for precise invocation.
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-resource combination ('Assemble task-focused project context') and enumerates the sources (active memories, task checkpoints, indexed sources), clearly distinguishing it from siblings like memory_list (just lists memories) or project_health (checks health).
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 statement on when to use this tool versus alternatives. While the name and description imply it is for gathering comprehensive context, there is no direct guidance on exclusions or when a more specific sibling (e.g., memory_list) should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_deleteADestructive
Preview or permanently purge an archived project with exact-ID confirmation and safety checks.
| Name | Required | Description | Default |
|---|---|---|---|
| purge | No | ||
| projectId | Yes | ||
| confirmProjectId | Yes | ||
| backupDestination | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true. The description adds context about safety checks and exact-ID confirmation, which are not in annotations. It does not contradict annotations.
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 purpose and key safety feature. Every word is necessary; 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 covers the essential purpose and safety, but omits important context: only archived projects can be processed, and no guidance on when to use preview vs purge. Output schema exists, so return values are covered externally.
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 alludes to 'exact-ID confirmation' (confirmProjectId) and 'preview or permanently purge' (purge), but does not mention backupDestination. With 0% schema coverage, partial explanation of the 4 parameters leaves gaps.
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 (preview/purge) and resource (archived project). It specifies the exact-ID confirmation requirement, distinguishing it from siblings like project_archive or project_restore, though it could explicitly differentiate usage for archived vs non-archived projects.
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 deleting archived projects with safety checks, but does not give explicit when-to-use vs when-not-to-use guidance or mention alternatives. The distinction between preview and purge is implied but not explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_doctorCIdempotent
Check database integrity, derived search indexes, source presence, stale memory, and pending candidates.
| Name | Required | Description | Default |
|---|---|---|---|
| repair | No | ||
| projectId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The idempotentHint annotation indicates a read-only action, and the description lists checks, which aligns with a diagnostic tool. However, the 'repair' parameter suggests possible modification, but its behavior is not explained, leaving a transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence that lists the checked items without redundancy. It could be slightly expanded for clarity but is not overly verbose.
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 two parameters (one required and one with behavioral implications), missing parameter semantics and usage guidance make the description incomplete. The output schema exists but does not compensate for the lack of parameter 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?
The description provides no information about the two parameters ('projectId' and 'repair'), despite having 0% schema coverage. The agent receives no cues about their purpose or acceptable values beyond the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Check' and lists distinct resources (integrity, indexes, source, memory, candidates), making the purpose clear. However, it does not differentiate from the sibling tool 'project_health', which may perform similar checks.
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 (e.g., when to prefer 'project_doctor' over 'project_health'), nor are there any exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_exportA
Export project memories, candidates, tasks, symbols, relations, and a manifest as JSONL files.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ||
| outputDirectory | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide openWorldHint and idempotentHint. The description adds the output format (JSONL) but does not disclose side effects, resource consumption, or the number of files created. It adds some context beyond annotations but not enough.
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, no redundancy, efficient. Every word contributes to the 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 simple schema and that an output schema exists, the description covers the exported resources and format. Minor gaps: no mention of whether multiple files or a single file, or any size 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 coverage is 0%, so description must compensate. It does not describe the parameters (projectId, outputDirectory) beyond their names. Although the names are self-explanatory, the description adds no additional 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 tool exports project memories, candidates, tasks, symbols, relations, and a manifest as JSONL files. It uses a specific verb and resource, and distinguishes itself from siblings like project_backup and project_archive.
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 alternatives (e.g., project_backup) or any prerequisites. The description implies usage but lacks explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_healthBRead-onlyIdempotent
Report source, chunk, memory, task, and latest index-run health for a project.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. Description repeats 'Report' which is consistent but adds no extra behavioral context (e.g., auth needs, performance).
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 with verb and object, no redundant words. Efficiently communicates scope.
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 low parameter count and an output schema present, description sufficiently covers the tool's output. Missing only a brief note on interpretation of 'health'.
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%. The single parameter projectId has minLength 1 but description only says 'for a project', adding no format, constraints, or examples 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?
Description clearly states the verb 'Report' and specific health aspects (source, chunk, memory, task, index-run) for a project. It uniquely distinguishes from sibling tools like project_context or project_index.
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. Does not mention prerequisites, exclusions, 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.
project_indexBIdempotent
Incrementally index allowed text, code, configuration, and documentation files for a project.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint: true, and description says 'incrementally', which aligns. No contradictions, but lacks details on side effects or what 'allowed' means.
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, no wasted words, clear and front-loaded.
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?
Has output schema, but minimal behavioral context. Lacks explanation of 'incrementally', 'allowed', and return behavior. Adequate but with gaps.
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 description does not explain projectId beyond 'for a project'. No format, source, or usage specifics.
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 (index), scope (incremental, allowed files), and target (project). It distinguishes from siblings like project_search or project_export.
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 alternatives, prerequisites, or when not to use. Siblings listed but no differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_listCRead-onlyIdempotent
List projects already registered in persistent storage.
| Name | Required | Description | Default |
|---|---|---|---|
| includeArchived | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint true. The description adds the behavioral nuance that projects are 'already registered', implying a stable list, but does not conflict with annotations. No additional traits like rate limits or access needs are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short (one sentence) and to the point. It communicates the core purpose without extra words, which earns a high score for conciseness, though it might sacrifice detail.
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 (only 1 parameter, output schema exists), the description is too minimal. It lacks any context about filtering, ordering, or what 'already registered' means, and does not compensate for the 0% parameter schema coverage. The output schema's existence reduces the need for return value docs, but the description still misses key usage 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?
With 0% schema description coverage, the description fails to explain the single parameter 'includeArchived' or its default value. The tool name and description give no hint about this parameter, leaving the agent to infer its meaning from the schema 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 lists projects that are already registered in persistent storage. The verb 'List' and resource 'projects' are specific, and it distinguishes from sibling tools like 'project_search' by implying a simpler retrieval of all registered projects.
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 'project_search' or filtered views. There are no indications of prerequisites, exclusions, or context for optimal usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_openAIdempotent
Register or reopen a project from its absolute root path.
| Name | Required | Description | Default |
|---|---|---|---|
| root | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare idempotentHint=true, and the description reinforces safe behavior by mentioning 'reopen'. It adds the important constraint of 'absolute root path', which is beyond annotations.
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 of 9 words with no wasted information. Every word is necessary and directly contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and presence of an output schema, the description adequately covers the core action and parameter meaning, though it could briefly note the return value or state implications.
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 compensates by explaining the 'root' parameter as an absolute path, adding crucial meaning beyond the schema's basic type and minLength.
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 'register or reopen' on a 'project' using its 'absolute root path', which is specific and distinguishes it from sibling tools like project_list or project_delete.
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 opening existing projects by path but provides no explicit guidance on when to use versus alternatives, nor any exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_relocateBIdempotent
Update a registered project to an authorized existing root without moving project files.
| Name | Required | Description | Default |
|---|---|---|---|
| newRoot | Yes | ||
| projectId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the behavioral detail 'without moving project files,' which is not in annotations. Annotations include idempotentHint and openWorldHint, which are consistent with an update operation. However, the description does not disclose potential side effects, permission requirements, or what happens to the old root.
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 gets to the point with no fluff. It is front-loaded with the action. However, it omits parameter descriptions, which would improve usefulness without sacrificing 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?
With 2 simple parameters and an output schema, this tool does not demand extensive context. However, the description lacks any mention of return value, prerequisites, or validation rules. It is minimally complete but leaves the agent guessing about parameter details.
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 description must compensate, but it does not describe parameters. 'projectId' is self-explanatory, but 'newRoot' is ambiguous (path? identifier?). The agent is left without guidance on format or 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?
The description specifies a clear action: 'Update a registered project to an authorized existing root without moving project files.' It uses a specific verb+resource ('Update a registered project') and adds a key behavioral constraint ('without moving project files'), distinguishing it from update tools that might move files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like project_update, project_doctor, or project_archive. The description does not mention prerequisites, limitations, or scenarios 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.
project_restoreC
Restore a validated project backup into a new root or replace an explicitly confirmed archived project.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| root | No | ||
| source | Yes | ||
| projectId | No | ||
| confirmProjectId | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate openWorldHint=true and idempotentHint=false, which the description partially reinforces by mentioning replacement of archived projects. However, it omits details like state changes, confirmation requirements, or potential data loss.
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 efficiently conveys two modes. However, breaking it into two sentences or using bullet points would improve clarity for an agent.
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?
Despite having 5 parameters, 0% schema coverage, and an output schema, the description is minimal. It lacks explanation of behavior, error conditions, return value shape, and parameter interdependencies, making it insufficient 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?
With 0% schema coverage, the description must compensate but only hints at source, root, and confirmProjectId. It does not explicate the meaning of name, projectId, or confirmProjectId, leaving agents to guess how to construct requests.
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 restores a validated project backup into a new root or replaces an archived project. It distinguishes itself from encrypted restoration (sibling tool) by not mentioning encryption, but could be more specific about what constitutes a validated backup.
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 outlines two use cases but provides no guidance on when not to use it or which sibling tool to choose instead. No prerequisites or conditions like backup validity are explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_restore_encryptedA
Decrypt and restore an authenticated project backup using a passphrase from a named environment variable.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| root | No | ||
| source | Yes | ||
| projectId | No | ||
| passphraseEnv | Yes | ||
| confirmProjectId | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=false and openWorldHint=true. The description adds that it uses a passphrase from an env var, but does not elaborate on side effects or destructive potential beyond what annotations imply. Some additional context is provided but not extensive.
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 without wasted words. However, it sacrifices completeness for brevity, especially regarding parameters.
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?
Despite having an output schema, the description does not cover several parameters or provide usage context for them. For a tool with 6 parameters and complex restore operation, the description is incomplete.
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 explain parameters. It only explains source and passphraseEnv, but there are 6 parameters total (name, root, projectId, confirmProjectId missing). This leaves significant ambiguity.
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 decrypts and restores an encrypted project backup using a passphrase from an environment variable. This distinguishes it from sibling tools like project_restore (non-encrypted) and project_backup_encrypted (encrypted backup creation).
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 restoring an encrypted backup with a passphrase in an env var. It does not explicitly mention alternatives or when not to use, but the context is clear enough for an agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_searchBRead-onlyIdempotent
Search indexed project content and active long-term memories with FTS5.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| projectId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds value by revealing the use of FTS5 and the scope (indexed content and active memories), going beyond annotations without contradicting them.
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 front-loads the purpose and resource. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three parameters, an output schema, and rich sibling context, the description is too sparse. It lacks parameter explanations, usage context, and examples, making it incomplete for effective agent 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?
With 0% schema coverage, the description carries the burden but fails to explain the three parameters (projectId, query, limit). It only implies search criteria without mapping to parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches 'indexed project content and active long-term memories with FTS5'. It uses a specific verb ('Search') and identifies the resource, distinguishing it from siblings like memory_list or project_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?
The description provides no guidance on when to use this tool versus alternatives. Siblings include many project and memory tools, but no exclusions or context are given, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_unarchiveAIdempotent
Return an archived project to the default active project list.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true, so the description adds little behavioral context. It does not mention side effects, permissions, or what happens if the project is already active. However, it does not contradict annotations.
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 immediately conveys the tool's purpose. Every word is meaningful and there is no extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter), the description provides the core purpose. However, it lacks details about parameter semantics and usage context. The presence of an output schema partially compensates, but overall the description could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the schema does not describe parameter meaning. The description only indirectly refers to 'project' but does not explain the projectId parameter's format, source, or constraints. This leaves the agent with insufficient guidance.
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 an archived project' and the resource 'project', and specifies the outcome 'to the default active project list'. It effectively distinguishes from sibling tools like project_archive (the inverse) and project_delete (destructive).
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 unarchiving projects but does not explicitly state when to use this tool over alternatives, nor does it provide any exclusions or prerequisites. The context from siblings suggests it's the opposite of project_archive, but no explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_updateAIdempotent
Update mutable project metadata without changing its root path.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| projectId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the constraint about root path, which is helpful, but does not elaborate on other behavioral traits (e.g., permissions, side effects). The idempotentHint annotation already covers idempotency, so the description adds marginal value.
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 maximally concise with no fluff, front-loading the key action and constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, idempotent, output schema exists), the description is nearly complete, though it could mention what the update returns.
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 only mentions 'mutable project metadata' without explaining that 'name' is the updatable field or clarifying the role of 'projectId'.
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 'update' and resource 'mutable project metadata', and explicitly excludes changing root path, distinguishing it from tools like project_relocate.
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 context by stating what is not changed (root path), but does not explicitly name alternative tools or provide when-to-use/when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_watch_listARead-onlyIdempotent
List process-lifetime project watchers and their latest index status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint, indicating safe, side-effect-free operation. The description adds useful context about 'process-lifetime' and 'latest index status', enhancing transparency beyond annotations.
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 that conveys all necessary information without any extraneous words. Every part is earned.
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 parameterless tool with an output schema, the description is complete. It states the action and scope, and the output schema handles return values.
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 schema coverage is 100%. The description correctly implies no input is needed, aligning with the empty schema. Baseline for 0 params is 4.
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 names the resource 'process-lifetime project watchers' and includes 'latest index status'. It clearly distinguishes from sibling tools like project_watch_start and project_watch_stop.
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 viewing current watchers and their status, and sibling names clarify when to use start/stop alternatives. However, no explicit when-to-use or when-not-to-use is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_watch_startAIdempotent
Start a debounced process-lifetime watcher that incrementally indexes changes without accepting candidates.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ||
| debounceMs | No | ||
| initialIndex | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds significant context beyond annotations: debounced, process-lifetime, incremental indexing, and no candidate acceptance. Annotations only provide idempotentHint.
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 dense sentence, but no wasted words. Could be more structured but remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description is brief; lacks explanation of watcher lifecycle or output schema purpose. Output schema exists but not referenced. Adequate but incomplete.
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 must compensate, but it only vaguely alludes to debouncing without detailing projectId or initialIndex.
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 (start) and resource (debounced process-lifetime watcher), distinguishing it from siblings like 'project_watch_stop' and 'project_watch_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?
The description implies when to use (to start indexing changes) and mentions 'without accepting candidates', but lacks explicit when-not-to-use or direct alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_watch_stopB
Stop a process-lifetime project watcher.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds minimal behavioral context beyond the annotation (idempotentHint: false). It does not disclose side effects, error conditions, or whether stopping is reversible, which is important for a non-idempotent 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 one short sentence with no redundant information, but it could be slightly expanded for better context without losing 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 is a mutation with an output schema (not shown), the description lacks completeness. It does not explain return values, post-conditions, or error scenarios, leaving the agent underinformed.
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 and only one parameter (projectId), the description does not add meaning beyond the schema. The parameter name is self-explanatory, so a score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Stop') and the resource ('process-lifetime project watcher'), and it distinguishes from sibling tools like project_watch_start and project_watch_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?
The description implies usage (stopping a watcher started by project_watch_start) but provides no explicit guidance on when to use vs alternatives, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
storage_statusARead-onlyIdempotent
Check whether persistent Project Context storage has been configured.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description's addition of 'Check whether...storage has been configured' adds minimal behavioral context beyond confirming safety. It does not describe side effects or other traits, but it's consistent with annotations.
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 of 8 words. It is front-loaded with the verb 'Check' and contains no unnecessary words, earning its place efficiently.
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 simplicity of the tool (no parameters, output schema exists), the description adequately states the tool's purpose. It doesn't explain return values, but that is covered by the output schema. The meaning of 'configured' could be slightly vague, but it's sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline is 4. The description does not need to add parameter details. It correctly matches the input schema with no parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Check' and a clear resource 'persistent Project Context storage'. It clearly states the tool's function without ambiguity. Among siblings like 'project_health' which checks overall project health, this tool is distinct in focusing on storage configuration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as when to check storage vs. other project status tools like 'project_health' or 'memory_candidates'. No exclusions or context for usage are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_checkpointBIdempotent
Save completed work, next steps, changed files, verification, blockers, and risks for a task.
| Name | Required | Description | Default |
|---|---|---|---|
| next | No | ||
| risks | No | ||
| taskId | Yes | ||
| summary | No | ||
| blockers | No | ||
| completed | No | ||
| projectId | Yes | ||
| changedFiles | No | ||
| verification | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotency. The description lists what is saved, which is useful, but it does not disclose any other behavioral aspects such as whether existing data is overwritten or merged, or any rate 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?
A single, front-loaded sentence that efficiently states the tool's action and data scope with no extraneous information.
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?
Despite having 9 parameters, the description does not explain the purpose of required parameters ('projectId', 'taskId'), how the checkpoint relates to other task operations, or what the output schema contains. The tool's complexity demands more 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?
Schema coverage is 0%, so the description must compensate. It maps the listed fields (completed, next, changedFiles, etc.) to likely parameter names, but fails to mention the required parameters 'projectId' and 'taskId'. This adds some meaning but is incomplete.
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 'Save' and lists the types of data saved (completed work, next steps, etc.), clearly indicating the purpose. However, it does not explicitly distinguish from sibling tools like 'task_complete' which might also involve saving.
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 'task_complete', 'task_start', or 'task_list'. The description lacks context on prerequisites or typical sequences.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_completeAIdempotent
Mark a persistent task completed while retaining its latest checkpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | ||
| projectId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint=true, and the description adds the behavioral detail that the latest checkpoint is retained. However, it does not disclose any destructive actions (if any) or permission requirements. Beyond the annotation, the description adds modest value.
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 conveys the core action and a key behavioral trait. No extraneous information, perfectly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (mark a task complete) and the presence of an output schema, the description is largely complete. However, the lack of parameter semantics and usage guidance is a minor shortfall for a tool with a sibling set that includes task lifecycle operations.
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 2 required string parameters (taskId, projectId) with 0% description coverage in the schema. The tool description does not add any meaning to these parameters—no format hints, no examples, no explanation of how to obtain them. This is a significant gap for a tool with no param descriptions in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('mark persistent task completed') and the key behavioral nuance ('retaining its latest checkpoint'). It distinctively separates from sibling tools like task_checkpoint (which likely only saves state) and task_start (which begins a task).
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 purpose implies usage for completing a task, but no explicit guidance is given on when to use versus alternatives like task_checkpoint or task_start. There are no exclusions or context about prerequisites (e.g., task must be started).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_listCRead-onlyIdempotent
List persistent tasks for a project by status.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| status | No | in_progress | |
| projectId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true, so the description adds little behavioral context. It does not mention pagination behavior (limit parameter), ordering, or any effects of calling the tool. The description merely restates the purpose without deepening transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It is compact and efficient. However, it could be slightly expanded to cover parameter semantics without losing 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 that the tool has 3 parameters (one required, two optional with defaults) and no parameter descriptions in the schema, the description is insufficient. The output schema exists, but the input semantics are under-explained. A more complete description would elaborate on the parameters and their effect on results.
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 schema description coverage at 0%, the description must add meaning to parameters. It only hints at the 'status' filter ('by status') but fails to explain the 'limit' or 'projectId' parameters, their defaults, or constraints. This leaves the agent guessing about valid values and defaults.
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 (List), resource (persistent tasks), and filter (by status). It distinguishes from sibling tools like task_complete or task_start by specifying listing functionality. However, it could be more precise by mentioning that it lists tasks for a specific 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 guidance on when to use this tool versus alternatives such as task_complete, task_checkpoint, or project_list. The description does not specify that it is read-only, nor does it mention any prerequisites or context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_startC
Start a persistent cross-session project task.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | ||
| projectId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds 'persistent cross-session' context beyond annotations, implying the task persists across sessions. However, it does not disclose side effects, prerequisites, or error conditions, and annotations only provide idempotentHint=false.
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 essential parameter information. It is appropriately short but under-specified for a tool with two required parameters.
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?
Despite the presence of an output schema, the description is too minimal. It does not explain what happens upon starting a task, return value expectations, or integration with sibling tools like task_checkpoint.
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 0% coverage in description, and the description provides no explanation for the two parameters (projectId, goal). The agent gets no guidance on parameter meaning or format 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 uses specific verb 'Start' and resource 'persistent cross-session project task', clearly indicating the action. It distinguishes from sibling task tools like task_checkpoint and task_list, though it 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 such as task_checkpoint or project_open. Lacks any when-to-use or when-not-to-use information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
user_memory_listBRead-onlyIdempotent
List user-level memories by lifecycle status.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| status | No | active |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare 'readOnlyHint' and 'idempotentHint' as true, so the agent knows the tool is safe and idempotent. The description adds that it lists by status, but does not disclose pagination behavior, ordering, or what happens with the limit parameter. Since annotations cover the safety profile, a score of 3 is appropriate.
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 is front-loaded with the verb and resource. It is appropriately sized for a simple listing tool, but it could add more value without losing conciseness, such as noting the output schema or default 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 that an output schema exists (not shown but 'has output schema: true'), the description does not need to explain return values. However, it lacks information about pagination, default limit, status filtering behavior, and how it differs from 'memory_list'. It is minimally sufficient but not robust.
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 only hints at the 'status' parameter ('by lifecycle status') but does not explain the 'limit' parameter, default values, or the meaning of each status. This is insufficient for an agent to fully understand parameter usage.
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 ('List') and resource ('user-level memories') and a filtering dimension ('by lifecycle status'). However, it does not differentiate itself from sibling tools like 'memory_list' or 'user_memory_remember', which could cause confusion.
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. The description does not mention when not to use it or provide context about prerequisites. Given the presence of several memory-related sibling tools, this omission is significant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
user_memory_rememberC
Persist a reviewed user-level memory with explicit cross-project scope.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | ||
| title | Yes | ||
| reason | No | ||
| content | Yes | ||
| scopeRef | No | ||
| projectId | No | ||
| confidence | No | ||
| scopeLevel | No | user | |
| sourceKind | Yes | ||
| supersedesId | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only include idempotentHint: false, and the description adds minimal behavioral context. 'Persist' implies a write operation, but there is no mention of side effects (e.g., overwriting, notifications), permissions needed, or whether the operation is reversible. No contradiction with annotations.
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 8 words, highly concise and front-loaded with the key action. However, it sacrifices completeness; a second sentence for usage guidance would improve it without losing 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?
For a tool with 10 parameters, 4 required, and a write mutation, this description is too sparse. It does not explain prerequisites, parameter constraints, or behavioral outcomes beyond persistence. The existence of an output schema reduces the need to explain return values, but other contextual gaps remain.
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 10 parameters and 0% schema description coverage, the description does not explain parameter semantics beyond what the schema provides. The phrase 'explicit cross-project scope' hints at scopeLevel and scopeRef, but the agent gets no guidance on how to set values like confidence, sourceKind, or supersedesId.
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 ('persist') and resource ('user-level memory'), and adds 'reviewed' and 'explicit cross-project scope' to differentiate from siblings like memory_remember and user_memory_list. However, 'reviewed' is ambiguous and could be clarified to distinguish from candidate acceptance tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for persisting reviewed user-level memories with cross-project scope, but it does not explicitly state when to use this tool over alternatives like memory_remember or user_memory_list, nor does it provide when-not-to-use or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
user_memory_update_statusCDestructiveIdempotent
Move a user-level memory to another lifecycle status.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | ||
| memoryId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint and destructiveHint, indicating the tool can be safely repeated and may cause irreversible changes. The description adds minimal behavioral context beyond 'move', so it does not enhance transparency beyond the annotations.
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, but it fails to earn its place by omitting critical parameter or usage details. While not verbose, it is under-informative for the complexity of the tool.
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?
Despite having an output schema, the description does not explain the lifecycle transitions or what each status entails. For a state-mutating tool with enum-based parameters, the description is insufficiently 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?
With 0% schema description coverage, the description should compensate by explaining parameters. It does not mention memoryId or the status enum values, leaving the meaning and usage of parameters entirely unspecified.
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 'Move' and the resource 'user-level memory', specifying the action of changing lifecycle status. The tool name itself distinguishes it from sibling 'memory_update_status' by including 'user', though the description does not explicitly differentiate from other memory lifecycle tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not mention prerequisites, outcomes, or contrast with siblings like 'memory_candidate_accept' or 'memory_candidate_reject', which likely handle specific status transitions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Tools are grouped by domain (project, memory, task, etc.) with distinct actions. Even within groups, each tool has a clear, non-overlapping purpose, e.g., memory_candidate_accept vs. memory_remember serve different lifecycles.
All tools use a consistent verb_noun pattern with underscore_case, such as project_list, project_open, memory_remember, and task_checkpoint. The naming convention is uniform across all 34 tools.
34 tools is well above the typical 3-15 range for a well-scoped server. While the domain coverage is broad, the sheer number may hinder agent navigation and selection.
The tool set covers most lifecycle operations for projects, memories, tasks, and user memories, including backups, indexing, health checks, and search. Minor gaps like in-memory candidate updates exist, but overall it's thorough.
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
Project memory, semantic code search, and grounded agent context.
The project brain for AI coding agents — memory, decisions, sprints, knowledge base via MCP.
Shared memory for coding agents. Stop re-explaining your codebase every session.
System-of-record notebook for AI coding agents: pages, datastores, tasks, skills over MCP.
Related MCP Servers
- AlicenseAqualityCmaintenanceLocal, searchable project memory for AI coding agents. Markdown source of truth, MCP interface, safe structured updates39Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables AI coding agents to retrieve and manage code context with hybrid search, project memory, and observability via MCP tools.29MIT
- AlicenseNot gradedqualityAmaintenanceProvides AI agents with persistent, local, and shareable project memory by storing decisions and code context in a searchable SQLite index, supporting keyword and semantic search via MCP.3MIT
- AlicenseBqualityAmaintenanceEnables AI coding agents to maintain persistent project context, including rules, decisions, environment intelligence, and Git history, using a local-first MCP server with automatic project detection and token-efficient retrieval.13MIT
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/autumn-hh/project_context_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server