Skip to main content
Glama
leesgit

claude-session-continuity-mcp

by leesgit

claude-session-continuity-mcp (v1.13.0)

为 Claude Code 提供无需重新解释的会话连续性 — 自动上下文捕获 + 语义搜索 + 自动错误→解决方案流水线

npm version License: MIT Tests Node claude-session-continuity-mcp MCP server

问题所在

每一个新的 Claude Code 会话:

"This is a Next.js 15 project with App Router..."
"We decided to use Server Actions because..."
"Last time we were working on the auth system..."
"The build command is pnpm build..."

每次都要花费 5 分钟来设置上下文。每一次都是如此。

Related MCP server: Melchizedek

解决方案

全自动。 Claude Hooks 无需手动调用即可处理一切:

# Session start → Auto-loads relevant context + recent session history
# When asking → Auto-injects relevant memories/solutions
# During conversation → Tracks active files + auto-injects error solutions
# On compact → Structured handover context for continuity
# On exit → Extracts commits, decisions, error-fix pairs from transcript
← Auto-output on session start:
# my-app - Session Resumed

📍 **State**: Implementing signup form

## Recent Sessions
### 2026-02-28
**Work**: Completed OAuth integration with Google provider
**Commits**: feat: add OAuth callback handler; fix: redirect URI config
**Decisions**: Use Server Actions instead of API routes

### 2026-02-27
**Work**: Set up authentication foundation
**Next**: Implement signup form validation

## Directives
- 🔴 Always use Zod for form validation
- 📎 Prefer Server Components by default

## Key Memories
- 🎯 Decided on App Router, using Server Actions
- ⚠️ OAuth redirect_uri mismatch → check env file

零手动操作。上下文如影随形。


快速开始

一键安装

npm install claude-session-continuity-mcp

就是这样! 安装后脚本会自动:

  1. ~/.claude.json 中注册 MCP 服务器

  2. ~/.claude/settings.json 中安装 Claude Hooks

安装内容

MCP 服务器 (位于 ~/.claude.json 中):

{
  "mcpServers": {
    "project-manager": {
      "command": "npx",
      "args": ["claude-session-continuity-mcp"]
    }
  }
}

Claude Hooks (位于 ~/.claude/settings.json 中):

{
  "hooks": {
    "SessionStart": [{ "hooks": [{ "type": "command", "command": "npm exec -- claude-hook-session-start" }] }],
    "UserPromptSubmit": [{ "hooks": [{ "type": "command", "command": "npm exec -- claude-hook-user-prompt" }] }],
    "PostToolUse": [{ "matcher": "Edit", "hooks": [{ "type": "command", "command": "npm exec -- claude-hook-post-tool" }] }, { "matcher": "Write", "hooks": [{ "type": "command", "command": "npm exec -- claude-hook-post-tool" }] }],
    "PreCompact": [{ "hooks": [{ "type": "command", "command": "npm exec -- claude-hook-pre-compact" }] }],
    "Stop": [{ "hooks": [{ "type": "command", "command": "npm exec -- claude-hook-session-end" }] }]
  }
}

注意 (v1.5.0+): 通过 5 个钩子实现全生命周期覆盖。使用 npm exec --,它会优先查找本地的 node_modules/.bin

已安装的钩子 (v1.5.0+)

钩子

命令

功能

SessionStart

claude-hook-session-start

会话开始时自动加载项目上下文

UserPromptSubmit

claude-hook-user-prompt

自动注入相关记忆 + 过去参考搜索

PostToolUse

claude-hook-post-tool

跟踪活跃文件 (编辑、写入) + 自动注入错误解决方案 (Bash)

PreCompact

claude-hook-pre-compact

在压缩前构建结构化的交接上下文

Stop

claude-hook-session-end

从记录中提取提交、决策、错误修复对

手动管理钩子

# Check hook status
npx claude-session-hooks status

# Reinstall hooks
npx claude-session-hooks install

# Remove hooks
npx claude-session-hooks uninstall

3. 重启 Claude Code

安装完成后,重启 Claude Code 以激活钩子。


特性

特性

描述

🤖 零手动操作

Claude Hooks 自动化所有上下文捕获/加载

🎯 仅高质量记忆

(v1.10.0) 仅记录决策、学习、错误 — 无文件变更噪音

🧠 语义搜索

multilingual-e5-small 嵌入 (94+ 种语言,384d)

🌍 多语言支持

韩语/英语/日语 + 跨语言搜索 (英→韩,韩→英)

🔗 Git 集成

从记录中自动提取提交信息

🕸️ 知识图谱

记忆关系 (解决、导致、扩展...)

📊 记忆分类

5 种类型:观察、决策、学习、错误、模式

集成验证

一键执行构建/测试/Lint

📋 任务管理

基于优先级的任务管理

🔧 自动错误→解决方案

(v1.12.0) Bash 错误自动检测 → 注入过往解决方案;会话结束自动记录错误修复对

💰 Token 效率

(v1.11.0) 从 UserPromptSubmit 中移除了 loadContext (每会话节省 24-60K tokens)

📑 渐进式披露

(v1.11.0) memory_search 先返回索引,memory_get 获取完整内容

时间衰减

(v1.11.0) 具有类型特定半衰期的记忆评分,以确保相关性

📝 结构化交接

(v1.10.0) PreCompact 保存工作摘要、活跃文件、待办事项

🚪 智能会话结束

(v1.10.0) 从记录中提取提交、决策、错误修复对

🗑️ 自动噪音清理

(v1.10.0) 自动删除陈旧的观察记忆 (3天以上)

🔍 过往参考检测

(v1.8.0) "上次 X 是怎么做的?" 自动搜索数据库

📝 用户指令提取

(v1.8.0) 从提示词中自动提取 "总是/从不" 规则


Claude Hooks - 自动上下文系统

工作原理

SessionStart 钩子 (npx claude-hook-session-start):

  • 自动检测项目:Monorepo (apps/project-name/) 或单项目 (package.json 根文件夹名)

  • .claude/sessions.db 加载上下文

  • 注入:当前状态、3 个最近的会话(包含提交/决策)、指令、待办任务、过滤后的关键记忆

  • 自动清理陈旧的噪音记忆 (3天以上自动跟踪,14天以上自动压缩)

UserPromptSubmit 钩子 (npx claude-hook-user-prompt):

  • 在每次提交提示词时运行

  • (v1.11.0) 不再调用 loadContext() — 每会话节省 24-60K tokens

  • 注入相关上下文 (过滤:仅限决策、学习、错误)

PostToolUse 钩子 (npx claude-hook-post-tool):

  • 跟踪热点文件路径并更新 active_context.recent_files

  • (v1.12.0) 自动检测 Bash 错误 → 搜索解决方案数据库 → 将过往解决方案注入上下文

  • 不再创建观察记忆 (v1.10.0 — 消除了 [File Change] 噪音)

PreCompact 钩子 (npx claude-hook-pre-compact):

  • 构建结构化的交接上下文:工作摘要、活跃文件、待办动作、关键事实、最近错误

  • 不再存储自动压缩记忆 (v1.10.0)

Stop 钩子 (npx claude-hook-session-end):

  • 从 JSONL 记录中提取提交信息 (git commit -m 模式)

  • 提取错误修复对 (3 条消息内的错误 → 解决方案)

  • (v1.12.0) 自动将错误→修复对记录到解决方案表以供将来重用

  • 提取决策 ("因为"、"而不是"、"选择" 模式)

  • (v1.11.0) 单次遍历记录解析 (4 次 JSONL 读取 → 1 次)

  • 将结构化元数据存储在 sessions.issues 列中 (JSON 格式)

输出示例 (会话开始)

# my-app - Session Resumed

📍 **State**: Implementing signup form
🚧 **Blocker**: OAuth callback URL issue

## Recent Sessions
### 2026-02-28
**Work**: Completed OAuth integration
**Commits**: feat: add OAuth handler; fix: redirect config
**Decisions**: Use Server Actions over API routes
**Next**: Implement form validation

## Directives
- 🔴 Always use Zod for validation

## Pending Tasks
- 🔄 [P8] Implement form validation
- ⏳ [P5] Add error handling

## Key Memories
- 🎯 Decided on App Router, using Server Actions
- ⚠️ OAuth redirect_uri mismatch → check env file

钩子管理

# Check status
npx claude-session-hooks status

# Reinstall
npx claude-session-hooks install

# Remove
npx claude-session-hooks uninstall

# Temporarily disable
export MCP_HOOKS_DISABLED=true

过往参考检测 (v1.8.0)

当您询问过往工作时,UserPromptSubmit 钩子会自动搜索数据库:

You: "저번에 인앱결제 어떻게 했어?"
→ Hook detects "저번에" + extracts keyword "인앱결제"
→ Searches sessions, memories (FTS5), and solutions
→ Injects matching results into context automatically

支持的模式 (韩语和英语):

模式

示例

저번에/전에/이전에 ... 어떻게

"上次 CORS 错误是怎么解决的?"

~했던/만들었던/해결했던

"修改过的登录逻辑"

지난 세션/작업에서

"上个会话中的支付实现"

last time/before/previously

"上次我们是怎么处理认证的?"

did we/did I ... before

"我们之前修复过数据库迁移吗?"

remember when/recall when

"还记得我们设置 CI 的时候吗?"

输出示例:

## Related Past Work (auto-detected from your question)

### Sessions
- [2/14] 카카오 로그인 앱키 수정, 인앱결제 IAP 플로우 수정

### Memories
- 🎯 [decision] 테스트: 인앱결제 상품 등록 완료

### Solutions
- **IAP_BILLING_ERROR**: StoreKit 2 migration으로 해결

为什么使用 npm exec? (v1.4.3+)

旧版本使用绝对路径或 npx

// v1.3.x - absolute paths (broke on multi-project)
"command": "node \"/path/to/project-a/node_modules/.../session-start.js\""

// v1.4.0-1.4.2 - npx (required global install or hit npm registry)
"command": "npx claude-hook-session-start"

现在我们使用 npm exec --

"command": "npm exec -- claude-hook-session-start"

npm exec -- 会优先查找本地 node_modules/.bin,然后回退到全局。无需访问 npm 注册表即可同时支持本地和全局安装。


工具 (v5 API) - 25 个专注工具

1. 会话生命周期 (4) ⭐

// Start of session - auto-loads context
session_start({ project: "my-app", compact: true })

// End of session - auto-saves context
session_end({
  project: "my-app",
  summary: "Completed auth flow",
  modifiedFiles: ["src/auth.ts", "src/login/page.tsx"]
})

// View session history
session_history({ project: "my-app", limit: 5 })

// Semantic search past sessions
search_sessions({ query: "auth work", project: "my-app" })

2. 项目管理 (4)

// Get project status with task stats
project_status({ project: "my-app" })

// Initialize new project
project_init({ project: "my-app" })

// Analyze project tech stack
project_analyze({ project: "my-app" })

// List all projects
list_projects()

3. 任务管理 (4)

// Add a task
task_add({ project: "my-app", title: "Implement signup", priority: 8 })

// Update task status
task_update({ taskId: 1, status: "done" })

// List tasks
task_list({ project: "my-app", status: "pending" })

// Suggest tasks from TODO comments
task_suggest({ project: "my-app" })

4. 解决方案存档 (3)

// Record an error solution
solution_record({
  errorSignature: "TypeError: Cannot read property 'id'",
  solution: "Use optional chaining: user?.id"
})

// Find similar solutions (keyword or semantic)
solution_find({ query: "TypeError property", semantic: true })

// AI-powered solution suggestion
solution_suggest({ errorMessage: "Cannot read property 'email'" })

5. 验证 (3)

// Run build
verify_build({ project: "my-app" })

// Run tests
verify_test({ project: "my-app" })

// Run all (build + test + lint)
verify_all({ project: "my-app" })

6. 记忆系统 (5)

// Store a classified memory
memory_store({
  content: "State management with Riverpod makes testing easier",
  type: "learning",  // observation, decision, learning, error, pattern
  project: "my-app",
  tags: ["flutter", "state-management"],
  importance: 8,
  relatedTo: 23  // Connect to existing memory
})

// Search memories — returns index (id, type, tags, score) for token efficiency
memory_search({
  query: "state management test",
  type: "learning",
  semantic: true,  // Use embedding similarity
  limit: 10
})

// Get full memory content by ID (v1.11.0)
memory_get({ memoryId: 23 })

// Find related memories (graph + semantic)
memory_related({
  memoryId: 23,
  includeGraph: true,
  includeSemantic: true
})

// Get memory statistics
memory_stats({ project: "my-app" })

7. 知识图谱 (2)

// Connect two memories with a typed relation
graph_connect({
  sourceId: 23,
  targetId: 25,
  relation: "solves",  // related_to, causes, solves, depends_on, contradicts, extends, example_of
  strength: 0.9
})

// Explore knowledge graph
graph_explore({
  memoryId: 23,
  depth: 2,
  relation: "all",  // or specific relation type
  direction: "both"  // outgoing, incoming, both
})

记忆类型

类型

描述

使用场景

observation

代码库中发现的模式、结构

"所有屏幕都分离在 features/ 文件夹中"

decision

架构、库的选择

"决定使用 SharedPreferences 进行缓存"

learning

新知识、最佳实践

"Riverpod 更适合测试"

error

发生的错误及解决方案

"Provider.read() 不会重建 → 使用 watch()"

pattern

重复的代码模式、约定

"避免滥用 late 关键字"

关系类型

关系

描述

示例

related_to

一般关系

A 和 B 相关

causes

A 导致 B

缓存决策 → 文件夹结构变更

solves

A 解决 B

Riverpod 学习 → Provider Bug 修复

depends_on

A 依赖 B

文件夹结构 → 缓存决策

contradicts

A 与 B 冲突

两个设计决策冲突

extends

A 扩展 B

late 模式 → 扩展到 Riverpod 学习

example_of

A 是 B 的示例

特定代码是模式的示例


数据存储

SQLite 数据库位于 ~/.claude/sessions.db

用途

memories

分类记忆 (观察、决策、学习、错误、模式)

memories_fts

全文搜索索引 (FTS5)

memory_relations

知识图谱关系

embeddings_v4

语义搜索向量 (multilingual-e5-small, 384d)

project_context

固定项目信息 (技术栈、决策)

active_context

当前工作状态

tasks

任务积压

solutions

错误解决方案存档

sessions

会话历史


环境变量

变量

默认值

描述

WORKSPACE_ROOT

-

工作区根路径 (必需)

MCP_HOOKS_DISABLED

false

禁用 Claude Hooks

LOG_LEVEL

info

日志级别 (debug/info/warn/error)

LOG_FILE

-

可选的日志文件路径


开发

# Clone
git clone https://github.com/leesgit/claude-session-continuity-mcp.git
cd claude-session-continuity-mcp

# Install
npm install

# Build
npm run build

# Test
npm test

# Test with coverage
npm run test:coverage

性能

指标

上下文加载 (缓存)

<5ms

记忆搜索 (FTS)

~10ms

语义搜索

~50ms

构建验证

取决于项目


路线图

  • [x] v2 API (15 个专注工具)

  • [x] v4 API (24 个工具 - 记忆 + 图谱)

  • [x] v5 Claude Hooks (自动捕获)

  • [x] 带有类型关系的知识图谱

  • [x] 记忆分类 (6 种类型)

  • [x] 语义搜索 (嵌入)

  • [x] 多语言模式检测 (韩/英/日)

  • [x] Git 提交集成

  • [x] 111 个测试 (6 个测试套件)

  • [x] GitHub Actions CI/CD

  • [x] 多语言语义搜索 (v1.6.0 - multilingual-e5-small)

  • [x] 跨语言搜索 英↔韩 (v1.6.0)

  • [x] 解决方案语义搜索 (v1.6.0)

  • [x] 修复钩子设置文件路径 (v1.6.1 - settings.json,而非 settings.local.json)

  • [x] 自动迁移旧版钩子 (v1.6.1)

  • [x] 修复 PostToolUse 匹配器格式为字符串 (v1.6.3)

  • [x] 修复新钩子格式的 README 文档 (v1.6.4)

  • [x] 空会话跳过和技术栈保存改进 (v1.7.1)

  • [x] UserPromptSubmit 钩子中的过往参考自动检测 (v1.8.0)

  • [x] 用户指令提取 ("总是/从不" 规则) (v1.8.0)

  • [x] 记忆质量大修 — 不再有 [File Change] 噪音 (v1.10.0)

  • [x] PreCompact 中的结构化交接上下文 (v1.10.0)

  • [x] 智能会话结束:从记录中提取提交/决策/错误修复 (v1.10.0)

  • [x] 自动噪音清理 (3天以上观察,14天以上自动压缩) (v1.10.0)

  • [x] 带有结构化元数据的 3 个最近会话显示 (v1.10.0)

  • [x] Token 效率 — 从 UserPromptSubmit 中移除 loadContext,每会话节省 24-60K tokens (v1.11.0)

  • [x] 单次遍历记录解析,4 次 JSONL 读取 → 1 次 (v1.11.0)

  • [x] 具有类型特定半衰期的记忆评分时间衰减 (v1.11.0)

  • [x] 渐进式披露 — memory_search 返回索引,memory_get 获取完整内容 (v1.11.0)

  • [x] 通过 Jaccard 相似度进行记忆整合 (v1.11.0)

  • [x] 自动错误→解决方案流水线 — PostToolUse 检测 Bash 错误,注入过往解决方案 (v1.12.0)

  • [x] SessionEnd 自动将错误→修复对记录到解决方案表 (v1.12.0)

  • [x] 具有当前项目优先级的跨项目解决方案搜索 (v1.12.

Available Tools

25 tools
graph_connectA

Create a directed edge between two memories in the knowledge graph. Supports 7 relation types for structured knowledge organization. Side effects: inserts or replaces a row in memory_relations (upsert on sourceId+targetId+relation). Use memory_related to discover existing connections; use graph_explore to traverse the graph from a starting node.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceIdYesSource memory ID (the "from" node)
targetIdYesTarget memory ID (the "to" node)
relationYesEdge type: related_to (general association), causes (A causes B), solves (A fixes B), depends_on (A requires B), contradicts (A conflicts with B), extends (A builds on B), example_of (A demonstrates B)
strengthNoConnection strength 0.0-1.0 (default: 1.0). Lower values indicate weaker associations.

TDQS

A4.4/5.0
Behavior4/5

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

Discloses the upsert behavior (inserts or replaces) which is important for understanding side effects. With no annotations, this is valuable. Lacks details on return value or error conditions, but overall adequate.

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

Conciseness5/5

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

Four concise sentences without waste. Each sentence adds value: purpose, relation types, side effects, usage guidance. Front-loaded with the core action.

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

Completeness4/5

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

Covers purpose, side effects, and usage alternatives. Lacks return value details and error handling, but for a simple create tool, it is mostly complete given no output schema.

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

Parameters3/5

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

Schema coverage is 100% with detailed parameter descriptions. The description only mentions there are 7 relation types without adding new semantics beyond the schema, so it does not significantly enhance parameter understanding.

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

Purpose5/5

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

The description clearly states the tool creates a directed edge between two memories in the knowledge graph, with 7 relation types. It distinguishes from siblings by referencing memory_related for discovery and graph_explore for traversal.

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

Usage Guidelines5/5

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

Explicitly advises when to use alternative tools: memory_related to discover connections and graph_explore to traverse. Also notes the side effect (upsert), guiding appropriate usage.

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

graph_exploreA

Traverse the knowledge graph from a starting memory using depth-first search. Returns all connected memories up to the specified depth, with their relation types, strengths, and directions. Read-only. Supports filtering by relation type and traversal direction. Use memory_related instead for a combined graph+semantic approach; use graph_connect to add new edges.

ParametersJSON Schema
NameRequiredDescriptionDefault
memoryIdYesStarting memory ID for graph traversal
depthNoMaximum traversal depth 1-4 (default: 2). Higher values return more results but may be slower.
relationNoFilter by relation type (default: "all")
directionNoTraversal direction — outgoing (A→B), incoming (B→A), or both (default: "both")

TDQS

A4.4/5.0
Behavior4/5

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

Description declares read-only access, depth limit (1-4), and performance trade-off for higher depths. No annotations exist, so description carries the burden; it does well but could add more about time complexity or result size.

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

Conciseness5/5

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

Three concise sentences with no wasted words. All key information is front-loaded: purpose, behavior, alternatives.

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

Completeness4/5

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

Given no output schema, the description explains return value (connected memories with relation types, strengths, directions). It also covers filtering capabilities and read-only nature. Sufficient for most use cases, though could mention pagination if results are large.

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

Parameters3/5

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

Input schema has 100% description coverage, so baseline is 3. The description adds a performance note for depth, but overall the schema already explains each parameter adequately.

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

Purpose5/5

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

The description clearly states the tool traverses the knowledge graph via depth-first search, returning connected memories with relation details. It distinguishes from siblings by naming alternatives.

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

Usage Guidelines5/5

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

Explicitly tells when to use this tool (graph exploration) and when to use alternatives (memory_related for combined approach, graph_connect for adding edges). Also notes it is read-only.

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

list_projectsA

List all projects under the apps/ directory with their platform type (Web/Android/Flutter), initialization status, and whether session context exists. Read-only. Returns an array of project summary objects. No parameters required.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description declares it is read-only and returns an array of project summary objects. It does not detail the exact output fields or potential errors, but for a simple list tool it is fairly transparent.

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

Conciseness5/5

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

The description is extremely concise—three sentences covering purpose, return type, and parameters. No redundant or unnecessary text.

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

Completeness4/5

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

For a tool with no parameters and no output schema, the description is reasonably complete. It specifies what is listed, that it's read-only, and that it returns an array of summary objects. Missing detail on exact output fields, but overall adequate.

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

Parameters4/5

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

There are no parameters, and schema coverage is 100% (empty). According to the rubric, 0 params gives a baseline of 4. The description adds no additional parameter info beyond the schema.

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

Purpose5/5

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

The description clearly states it lists all projects under apps/ with specific fields (platform type, initialization status, session context). It is a specific verb+resource and distinguishes from siblings like project_init or project_analyze.

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

Usage Guidelines3/5

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

The description says 'List all projects' but provides no guidance on when to use this tool vs alternatives like project_status or other listing tools. No comparisons 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_getA

Retrieve full content for one or more memories by ID. Designed as a follow-up to memory_search: first search to find relevant IDs, then use memory_get to load full details. Read-only. Accepts up to 20 IDs per call. Returns an array of complete memory objects including content, type, tags, importance, timestamps, and access count.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesArray of memory IDs to retrieve (max 20)

TDQS

A4.5/5.0
Behavior5/5

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

Despite no annotations, description fully discloses behavior: read-only operation, response structure (array of memory objects with fields), and lack of side effects.

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

Conciseness5/5

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

Two concise sentences front-loading purpose and usage. No wasted words.

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

Completeness5/5

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

Without output schema, description fully covers return format (fields included) and constraints (max 20 IDs). Complete for a retrieval tool.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. Description adds context by explaining the retrieval workflow but does not add new parameter-level details beyond what the schema already provides.

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

Purpose5/5

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

Description explicitly states verb+resource: 'Retrieve full content for one or more memories by ID.' It distinguishes from sibling tool memory_search by framing as a follow-up step.

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

Usage Guidelines4/5

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

Clear usage flow: 'first search to find relevant IDs, then use memory_get to load full details.' Also specifies read-only and batch limit of 20 IDs per call.

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

memory_statsA

Get aggregate statistics about the memory system: total count, breakdown by type (observation/decision/learning/error/pattern), breakdown by project, top 5 most accessed memories, and 5 most recent entries. Read-only. Useful for understanding memory distribution and system health. Optionally scope to a single project.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoScope statistics to a single project (optional — omit for global stats)

TDQS

A4/5.0
Behavior3/5

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

The description explicitly notes 'Read-only,' which is a key behavioral trait. However, with no annotations provided, the description carries the full burden. It does not disclose other potential traits like idempotency, authentication needs, or performance characteristics, leaving some gaps.

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

Conciseness5/5

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

The description is extremely concise, containing only three sentences, each adding essential information. The key action and outputs are front-loaded, and there is no unnecessary verbosity.

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

Completeness4/5

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

Despite lacking an output schema, the description enumerates the return values (count, breakdowns, top accessed, recent entries), providing sufficient context for an agent to understand what to expect. However, it omits error scenarios or data size limits, which would be beneficial for robust use.

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

Parameters3/5

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

There is only one parameter, 'project', with a schema description explaining its role. The tool description adds a brief note ('Optionally scope to a single project') but does not significantly enhance understanding beyond the schema. With 100% schema coverage, a baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Get aggregate statistics about the memory system' and lists specific breakdowns (count, type, project, top accessed, recent entries). This distinguishes it from sibling tools like memory_get, memory_search, and memory_store, which focus on individual memories or queries.

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

Usage Guidelines4/5

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

The description includes 'Useful for understanding memory distribution and system health' and 'Optionally scope to a single project,' which imply appropriate contexts. It does not explicitly state when not to use or mention alternatives, but the purpose is clear enough to guide selection.

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

memory_storeA

Store a piece of knowledge in the memory system. Memories are typed (observation, decision, learning, error, pattern), tagged, and automatically embedded for semantic retrieval. Side effects: inserts into the memories table and asynchronously generates a vector embedding. If relatedTo is provided, also creates a knowledge graph edge. Returns the new memory ID. Use memory_search to verify no duplicate exists before storing.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesThe knowledge content to store
typeYesMemory type: observation (discovery/finding), decision (architecture/tech choice), learning (new knowledge), error (error encountered), pattern (code convention)
projectNoAssociated project name (optional — omit for cross-project knowledge)
tagsNoTags for filtering (e.g. ["auth", "performance"])
importanceNoImportance score 1-10 where 10 is critical (default: 5)
relatedToNoID of an existing memory to link via knowledge graph (optional)

TDQS

A4.7/5.0
Behavior4/5

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

Without annotations, the description fully discloses side effects: inserts into table, async embedding, optional graph edge, and return value. Could mention timing of async operation, but current detail is strong.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, followed by side effects and usage guidance. Every sentence is valuable and succinct.

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

Completeness5/5

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

Given 6 parameters and no output schema, the description covers all essential aspects: side effects, return value, duplicate checking advice. Complete for an AI agent to use correctly.

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

Parameters4/5

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

Schema coverage is 100% with descriptions, so baseline is 3. Description adds context by explaining that memories are typed/tagged and that relatedTo creates a knowledge graph edge, going beyond schema.

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

Purpose5/5

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

Description clearly states it stores knowledge in the memory system, lists memory types, and differentiates from sibling memory_search by advising to verify duplicates. It specifies verb and resource with distinct purpose.

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

Usage Guidelines5/5

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

Explicitly advises using memory_search to verify no duplicate before storing, providing when-not-to-use guidance and an alternative tool.

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

project_analyzeA

Auto-detect a project's tech stack, framework, platform (Web/Android/Flutter/Server), directory structure, and dependency count by scanning its files. Read-only — does not persist results. Returns a structured analysis object. Use project_init to persist the detected configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject name (must match a directory under apps/)

TDQS

A4.1/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. States 'Read-only — does not persist results', clearly disclosing non-mutating behavior. Mentions returned analysis object, but lacks detail on permissions or cost.

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

Conciseness5/5

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

Two sentences, no fluff, front-loaded with key purpose. Every sentence adds value.

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

Completeness3/5

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

No output schema, but description lists output components (tech stack, etc.). Lacks details on async behavior, time cost, or whether scanning is heavy. Adequate but not fully complete given complexity.

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

Parameters3/5

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

Single parameter 'project' with schema description (project name under apps/). Schema coverage 100%, so description adds no extra meaning beyond schema. Baseline 3 applies.

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

Purpose5/5

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

Description clearly states it auto-detects tech stack, framework, platform, directory structure, and dependency count. Verb 'detect' and resource 'project' are specific. Distinguishes from sibling project_init by noting persistence difference.

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

Usage Guidelines4/5

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

Explicitly tells user to use project_init for persistence, implying this tool is for inspection. Could be more explicit about when to use vs other siblings, but clear alternative provided.

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

project_initA

Initialize a new project in the continuity system. Creates records in the project_context and active_context tables. Auto-detects tech stack from package.json/pubspec.yaml/build.gradle if present. Side effects: writes to SQLite. Idempotent — safe to call on an already-initialized project (updates existing record). Call this once when adding a new project, then use session_start for subsequent sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject name (must match a directory under apps/)
techStackNoTech stack override {framework, language, database, ...}. Omit for auto-detection.
descriptionNoHuman-readable project description

TDQS

A4.6/5.0
Behavior4/5

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

Discloses side effects (writes to SQLite), idempotency, and auto-detection behavior. Lacks details on error conditions or permissions, but adequate given no annotations.

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

Conciseness5/5

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

Concise, front-loaded with main action, then key details. No redundant sentences.

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

Completeness4/5

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

Covers purpose, usage, side effects, and idempotency. Lacks output schema but no output expected; sufficient for 3-param tool.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. Description adds context: project must match a directory under apps/ and techStack is an override. Adds value beyond schema.

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

Purpose5/5

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

The description clearly states the tool initializes a new project, creates records in specific tables, and auto-detects tech stack. It distinguishes from siblings like session_start and project_status.

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

Usage Guidelines5/5

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

Explicitly says to call once for new project, then use session_start for subsequent sessions. Also notes idempotency, guiding safe reuse.

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

project_statusA

Get a project's current status including completion percentage, task breakdown (pending/in-progress/done/blocked), recent session activity, and active blockers. Read-only. Returns a structured JSON object. Use session_start instead when bootstrapping a new conversation; use this for mid-session status checks.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject name (must match a directory under apps/)

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It declares 'Read-only' and notes the return format, but omits other behavioral details like authentication, error cases, or rate limits. Decent but could add more context.

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

Conciseness5/5

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

The description is concise with three short sentences covering purpose, read-only nature, return format, and usage guidance. No fluff, every sentence adds value.

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

Completeness4/5

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

Given no output schema, the description adequately explains the return value by listing included fields. It covers essential context for a simple status-check tool, though it could mention behavior for invalid projects or error handling.

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

Parameters3/5

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

Schema coverage for the single parameter 'project' is 100%, so baseline is 3. The description does not add meaning beyond what the schema already provides (the schema already states 'must match a directory under apps/'). No extra value added.

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

Purpose5/5

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

The description clearly states the tool gets a project's current status and lists specific data returned (completion percentage, task breakdown, session activity, blockers). It explicitly distinguishes from session_start, making its purpose distinct among siblings.

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

Usage Guidelines5/5

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

The description gives explicit guidance on when to use (mid-session status checks) and when not (use session_start for bootstrapping). This directly helps the agent select the correct tool.

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

search_sessionsA

Semantic search across session history using multilingual embeddings (94+ languages). Finds past sessions by meaning, not just keywords — e.g. "when I worked on authentication" matches sessions about login, OAuth, JWT. Falls back to FTS5 keyword search when embeddings are unavailable. Read-only. Use session_history instead when you just need the N most recent sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesNatural language search query
projectNoFilter by project (optional)
limitNoMax results to return (default: 5)

TDQS

A4.5/5.0
Behavior4/5

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

The description declares the tool is 'Read-only' and explains the fallback behavior, adding value beyond the schema. No annotations are provided, so the description carries the full burden. It could be improved by mentioning any rate limits or authentication needs, but for a search tool this is adequate.

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

Conciseness5/5

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

The description is concise with three sentences: defining the tool, giving an example, and providing fallback and alternative. No wasted words, front-loaded with purpose.

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

Completeness5/5

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

Despite lacking an output schema, the description is complete for a search tool: it explains the semantic approach, multilingual support, fallback, and sibling tool. It covers what an agent needs to decide when to invoke this tool vs. alternatives.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all parameters. The description reinforces the meaning of 'query' as natural language, 'project' as optional filter, and 'limit' defaulting to 5. It does not add new meaning beyond what the schema provides, hence a baseline score of 3.

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

Purpose5/5

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

The description clearly states it performs 'Semantic search across session history' using multilingual embeddings, provides a concrete example, and distinguishes itself from the sibling tool 'session_history' by noting the latter is for recent sessions. The verb 'search' and resource 'sessions' are explicit.

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

Usage Guidelines5/5

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

The description explicitly tells when to use this tool vs. the alternative: 'Use session_history instead when you just need the N most recent sessions.' It also notes the fallback to FTS5 when embeddings are unavailable, giving clear guidance.

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

session_endA

Save the current session state before ending a conversation. Persists a summary, completed work, next steps, modified files, and blockers to SQLite. The saved state is automatically restored by session_start in the next session. Side effects: writes to the sessions table and updates the active_context record for the project. Idempotent — calling multiple times overwrites the previous session record.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject name (must match a directory under apps/)
summaryYesOne-line summary of this session
workDoneNoDescription of completed work
nextStepsNoOrdered list of next tasks to pick up
modifiedFilesNoFiles modified during this session
blockersNoCurrent blockers or issues (null if none)

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries full burden and discloses side effects (writes to sessions table and updates active_context) and states idempotency. This provides meaningful behavioral transparency about persistence and overwrite behavior.

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

Conciseness5/5

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

The description is three sentences with no wasted words. It front-loads the core purpose, then explains restoration, and finally lists side effects and idempotency. Every sentence serves a purpose.

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

Completeness4/5

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

The description covers what the tool does, its relationship to session_start, side effects, and idempotency. It does not explain return values (likely none) or error conditions, but these are not essential given the tool's simplicity and no output schema.

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

Parameters3/5

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

All 6 parameters have descriptions in the input schema (100% coverage). The description adds context by listing the fields as being persisted, but does not add meaning beyond what the schema already provides, so baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states it saves session state and lists specific fields (summary, work done, etc.). It distinguishes the tool's purpose from session_start by noting restoration, but does not explicitly differentiate from sibling session tools like session_history or search_sessions.

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

Usage Guidelines3/5

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

The description mentions using it 'before ending a conversation' and notes automatic restoration by session_start, providing clear usage context. However, it lacks explicit guidance on when not to use it or alternatives (e.g., session_history for viewing past sessions).

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

session_historyA

Retrieve past session records for a project. Returns an array of session objects ordered by most recent first, each containing summary, work done, modified files, and verification results. Read-only. Use search_sessions instead when you need semantic/keyword matching rather than a chronological list.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject name (must match a directory under apps/)
limitNoMax records to return (default: 5)
daysNoOnly return sessions from the last N days (default: 7)

TDQS

A4.3/5.0
Behavior4/5

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

Without annotations, the description declares the tool as 'Read-only' and describes the return structure. It does not cover error behavior or permissions, but for a simple retrieval tool this is adequate.

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

Conciseness5/5

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

The description is two sentences long, front-loaded with the core purpose, and contains no redundant information.

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

Completeness5/5

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

For a straightforward list tool with three well-documented parameters, the description covers purpose, behavior, return content, and usage guidance. No output schema exists, but the description suffices.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already explains the parameters. The description does not add further meaning beyond the schema, making a typical baseline score of 3 appropriate.

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

Purpose5/5

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

The description clearly states the tool retrieves past session records for a project, ordered chronologically, and lists the included fields (summary, work done, etc.). It explicitly distinguishes itself from the sibling tool 'search_sessions'.

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

Usage Guidelines4/5

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

The description provides explicit guidance on when to use this tool (chronological listing) versus the alternative 'search_sessions' (semantic/keyword matching). No other usage exclusions or prerequisites are mentioned.

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

session_startA

Load project context at the beginning of a session. Typically auto-invoked by the SessionStart hook, but can be called manually. Returns the project's tech stack, recent activity, pending tasks, and active blockers as a compressed context payload (~650 tokens). Read-only — does not modify any state. Use this instead of project_status when you need the full session bootstrap context.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject name (must match a directory under apps/)
compactNoReturn compressed format (default: true). Set false for verbose output.

TDQS

A4.6/5.0
Behavior5/5

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

No annotations provided, so description fully covers behavior: read-only, returns compressed payload (~650 tokens) with specific fields (tech stack, recent activity, pending tasks, active blockers).

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

Conciseness4/5

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

Three sentences, efficient, but last sentence partially redundant with earlier 'use instead' advice. Still well-structured and front-loaded.

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

Completeness5/5

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

Given no output schema and few annotations, description provides sufficient context: purpose, usage, behavior, output summary, and sibling distinction.

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

Parameters3/5

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

Schema coverage is 100% and descriptions are clear. Description adds no extra parameter meaning beyond the schema.

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

Purpose5/5

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

Description clearly states the tool loads project context at session start. It distinguishes from sibling project_status by specifying when to use each.

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

Usage Guidelines5/5

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

Explicitly mentions typical auto-invocation but allows manual calls. Provides alternative tool (project_status) and advises when to use this instead.

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

solution_findA

Search the solution archive for previously resolved errors. Matches against error signatures, messages, and keywords using FTS5. Set semantic=true to enable embedding-based similarity search for better recall across different error phrasings. Read-only. Returns matched solutions with their fix descriptions and related files. Use solution_suggest instead if you want AI-powered fix recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesError message, signature, or natural language description of the problem
projectNoFilter by project (optional — also includes cross-project solutions)
limitNoMax results to return (default: 3)
semanticNoEnable semantic/embedding search for fuzzy matching (default: false)

TDQS

A4.6/5.0
Behavior4/5

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

Declares read-only nature and return content (fix descriptions, related files). Lacks details like pagination or auth, but sufficient for a search tool.

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

Conciseness5/5

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

Three sentences, each earning its place: purpose, optional feature, alternative. Front-loaded and efficient.

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

Completeness4/5

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

Covers core functionality, read-only flag, and alternative tool. Lacks pagination details but adequate for a 4-param tool with no output schema.

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

Parameters4/5

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

Adds context beyond schema by explaining semantic parameter and default limit. All parameters described in schema.

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

Purpose5/5

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

Description clearly states it searches for resolved errors using FTS5 and semantic search, distinguishing from sibling solution_suggest.

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

Usage Guidelines5/5

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

Explicitly says when to use (searching resolved errors) and when not (use solution_suggest for AI-powered recommendations), providing clear alternative.

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

solution_recordA

Record an error-solution pair in the solution archive. Associates an error signature (the searchable key), optional full error message, the fix, and related files. Automatically extracts keywords for FTS5 indexing. Side effects: inserts into the solutions table. Use solution_find to check for existing solutions before recording a duplicate.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name (optional — omit for cross-project solutions)
errorSignatureYesError pattern/signature used as the search key (e.g. "ENOENT: no such file", "WorkManager not initialized")
errorMessageNoFull error message or stack trace (optional)
solutionYesStep-by-step fix description
relatedFilesNoFiles that were modified to fix the error

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, so description carries burden. Discloses side effects (inserts into solutions table) and automatic keyword extraction for FTS5 indexing. Missing details on idempotency, error handling, or limits.

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

Conciseness5/5

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

Concise multi-sentence description with no fluff. Each sentence adds value: purpose, components, side effects, and usage guidance.

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

Completeness4/5

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

Covers purpose, components, side effects, and duplicate prevention. Lacks return value info, but no output schema exists. Adequate for the tool's complexity.

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

Parameters4/5

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

Schema has 100% coverage, baseline 3. Description adds value by explaining errorSignature as 'search key', noting optional fields, and mentioning automatic keyword extraction.

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

Purpose5/5

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

Description clearly states 'Record an error-solution pair' and lists components. It distinguishes from sibling solution_find by mentioning duplicate checking.

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

Usage Guidelines4/5

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

Explicitly advises to use solution_find before recording to avoid duplicates, providing clear context. Lacks explicit when-not-to-use but sufficient given siblings.

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

solution_suggestA

Get AI-powered fix suggestions for a current error based on the solution archive. Retrieves the most relevant past solutions and generates a contextual recommendation. Read-only. Use solution_find for direct archive lookup without AI synthesis; use solution_record after fixing an error to grow the archive.

ParametersJSON Schema
NameRequiredDescriptionDefault
errorMessageYesThe current error message or stack trace
projectNoProject name for context (optional)

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, but description explicitly states it is read-only, which is a key behavioral trait. It does not detail other aspects like auth or rate limits, but the read-only flag adds value beyond the structured fields.

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

Conciseness5/5

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

The description is three sentences, each serving a distinct purpose: main action, read-only note, and sibling alternatives. No wasted words, front-loaded with the core functionality.

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

Completeness4/5

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

The description covers the tool's purpose, usage context, and behavioral trait (read-only). It does not explicitly state the return format, but the output is implied as a recommendation. Given the tool's simplicity and sibling guidance, it is largely complete.

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

Parameters3/5

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

The input schema has 100% description coverage, and the description restates the same parameter meanings without adding significant new context. Baseline 3 is appropriate as the description does not deepen understanding beyond the schema.

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

Purpose5/5

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

The description clearly states the tool provides AI-powered fix suggestions for errors using the solution archive. It specifies the action (get suggestions) and the resource (current error, solution archive), and distinguishes from siblings.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool versus alternatives: use solution_find for direct archive lookup and solution_record after fixing an error. This provides clear context for agent decision-making.

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

task_addA

Add a new task to a project's backlog. Tasks are persisted in SQLite with priority ranking and optional file associations. Side effects: inserts into the tasks table. Returns the created task ID. Use task_list to view existing tasks before adding duplicates. Use task_suggest to auto-generate tasks from code comments (TODO/FIXME).

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject name (must match a directory under apps/)
titleYesTask title (concise, actionable)
descriptionNoDetailed description (optional)
priorityNoPriority 1-10 where 10 is highest (default: 5)
relatedFilesNoAssociated file paths (optional)

TDQS

A4.2/5.0
Behavior3/5

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

Since no annotations are provided, the description carries full responsibility. It mentions side effects (inserts into tasks table) and return value (task ID), but does not disclose error conditions, required permissions, or default behavior beyond basic schema.

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

Conciseness5/5

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

The description is three sentences long, front-loaded with purpose, followed by behavioral notes and usage alternatives. Every sentence adds value with no wasted words.

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

Completeness4/5

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

Given the tool has 5 parameters, no output schema, and no annotations, the description covers purpose, side effects, return value, and alternative tools. It is mostly complete, though missing specifics on failure modes or default priority handling.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds context about persistence in SQLite and optional file associations, but does not significantly enhance parameter understanding beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states 'Add a new task to a project's backlog', specifying the verb (add) and resource (task to backlog). It distinguishes from siblings like task_list (view) and task_suggest (auto-generate).

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

Usage Guidelines5/5

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

The description explicitly recommends using task_list to check for duplicates and task_suggest for auto-generating from code comments, providing clear guidance on when to use this tool vs alternatives.

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

task_listA

List tasks for a project, filtered by status. Returns an array of task objects with id, title, description, status, priority, related files, and timestamps, plus a summary count by status. Read-only. Default filter is "pending" — pass status="all" to see everything.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject name (must match a directory under apps/)
statusNoStatus filter (default: "pending")

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description fully discloses the read-only behavior and return structure (array of task objects with fields, plus summary count), providing thorough transparency.

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

Conciseness5/5

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

Two concise sentences, no wasted words, front-loaded with key purpose and return info.

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

Completeness5/5

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

For a simple read tool with complete schema and clear return description, the description sufficiently covers all necessary context for an agent.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. Description adds useful default value for status and return context but does not significantly enhance parameter meaning beyond schema.

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

Purpose5/5

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

The description clearly states the verb 'List', resource 'tasks', and scope 'for a project, filtered by status', distinguishing it from sibling tools like task_add or task_update.

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

Usage Guidelines4/5

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

The description mentions read-only nature and default filter, guiding when to use, but lacks explicit 'when not to use' or direct alternatives among siblings.

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

task_suggestA

Scan project source files for TODO, FIXME, HACK, and XXX comments and return them as suggested tasks. Read-only — does not create tasks automatically. Review the suggestions and use task_add to persist the ones you want. Optionally scope the scan to a specific subdirectory.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject name (must match a directory under apps/)
pathNoSubdirectory path to limit the scan (optional, e.g. "src/components")

TDQS

A4.4/5.0
Behavior4/5

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

The description explicitly declares the tool as read-only ('Read-only — does not create tasks automatically'), which provides important behavioral context. With no annotations, this disclosure is critical and well-stated.

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

Conciseness5/5

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

Three sentences, no wasted words. The purpose is front-loaded, followed by behavior and usage guidance. Every sentence earns its place.

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

Completeness4/5

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

Given no output schema and no annotations, the description covers purpose, behavior, usage guidance, and optional parameter meaning. It could potentially mention the return format, but it is sufficiently complete for the tool's simplicity.

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

Parameters4/5

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

Schema coverage is 100% with both parameters already described. The description adds value by reinforcing the optional nature of the 'path' parameter ('Optionally scope the scan to a specific subdirectory'), going beyond the schema.

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

Purpose5/5

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

The description clearly states the tool scans project source files for specific comment types (TODO, FIXME, HACK, XXX) and returns them as suggested tasks. This specific verb+resource combination distinguishes it from sibling tools like task_add, task_list, and task_update.

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

Usage Guidelines4/5

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

The description provides explicit guidance: 'Review the suggestions and use task_add to persist the ones you want.' It also mentions optional scoping. While it does not explicitly state when not to use this tool, it does give a clear alternative for persistence.

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

task_updateA

Update a task's status. Valid transitions: pending → in_progress → done, or any state → blocked. Setting status to "done" automatically records a completion timestamp. Side effects: updates the tasks table. Idempotent. Returns success/failure and whether the row was actually modified.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesTask ID (from task_add or task_list)
statusYesNew status
noteNoOptional note (e.g. completion summary or block reason)

TDQS

A4.5/5.0
Behavior5/5

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

The description details side effects (updates tasks table), idempotence, return information, and automatic timestamp for 'done' status, fully covering behavioral traits without annotations.

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

Conciseness5/5

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

The description is concise with three sentences, front-loads purpose, and every sentence adds value.

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

Completeness5/5

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

Given low complexity, no output schema, but the description explains return; sibling tools are listed, making it complete for an update tool.

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

Parameters4/5

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

Although schema coverage is 100%, the description adds meaningful context for parameters: valid transitions for status and example usage for note.

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

Purpose5/5

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

The description clearly states the tool updates a task's status and lists valid transitions, distinguishing it from siblings like task_add and task_list.

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

Usage Guidelines3/5

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

The description explains valid status transitions but does not explicitly guide when to use this tool versus alternatives like task_add or task_list.

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

verify_allA

Run build, test, and lint sequentially for a project. Auto-detects platform-specific commands. Side effects: executes up to 3 shell commands with 5-minute timeouts each. Returns per-gate results and an overall pass/fail status. Use this as a quality gate before committing or ending a session. Use verify_build or verify_test individually when you only need one check.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject name (must match a directory under apps/)
stopOnFailNoAbort remaining gates on first failure (default: false — runs all gates)

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description bears full responsibility. It discloses side effects (executes shell commands with timeouts), auto-detection of platform commands, and return format (per-gate results and overall status). It does not explicitly state no file modification, but the context is sufficient.

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

Conciseness5/5

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

The description is three sentences, front-loaded with the main action, each sentence adds unique value, and there is no unnecessary text.

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

Completeness5/5

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

Given the tool's simplicity (2 params, none nested, no output schema), the description covers what it does, side effects, return values, and usage guidance, leaving no gaps for an agent.

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

Parameters3/5

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

The input schema has 100% coverage, and the description does not add new information beyond what the schema provides for each parameter. Therefore the baseline of 3 applies.

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

Purpose5/5

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

The description clearly states that the tool runs build, test, and lint sequentially, and explicitly distinguishes itself from sibling tools verify_build and verify_test by advising when to use them individually.

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

Usage Guidelines5/5

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

The description tells when to use this tool ('as a quality gate before committing or ending a session') and explicitly provides alternatives ('Use verify_build or verify_test individually when you only need one check').

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

verify_buildA

Run the project's build command (auto-detected per platform: "pnpm build" for Web, "flutter build" for Flutter, "./gradlew assembleDebug" for Android). Side effects: executes a shell command in the project directory with a 5-minute timeout. Returns {success, output} with the last 1000 chars of stdout/stderr. Use verify_all to run build + test + lint together.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject name (must match a directory under apps/)

TDQS

A4.6/5.0
Behavior5/5

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

Discloses side effects (executes shell command), constraints (5-minute timeout), and return format (success, output with last 1000 chars). No annotations provided; description carries full burden.

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

Conciseness4/5

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

Three sentences, each serving a clear purpose: purpose, behavior, and alternative. Slightly verbose but efficient.

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

Completeness5/5

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

Cover all necessary aspects: auto-detection, side effects, timeout, return format, and related tool. No output schema needed.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. Description does not add new meaning beyond the schema's description of the 'project' parameter.

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

Purpose5/5

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

Explicitly states it runs the build command, auto-detected per platform, and distinguishes from sibling tool verify_all.

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

Usage Guidelines5/5

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

Gives clear alternative (verify_all for combined build+test+lint) and implies when to use this tool for build-only.

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

verify_testA

Run the project's test suite (auto-detected per platform: "pnpm test:run" for Web, "flutter test" for Flutter, "./gradlew test" for Android). Optionally scope to a specific test file or directory. Side effects: executes a shell command with a 5-minute timeout. Returns {success, output}. Use verify_all to run build + test + lint together.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject name (must match a directory under apps/)
testPathNoSpecific test file or directory to run (optional — runs all tests if omitted)

TDQS

A4.7/5.0
Behavior4/5

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

Discloses side effects (shell command execution, 5-minute timeout) and return shape, though could note permission or file system implications.

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

Conciseness5/5

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

Three concise sentences with no redundancy, front-loaded with the main action and key details.

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

Completeness5/5

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

Covers multi-platform, timeout, return format, and alternative tool, making it self-contained for an agent.

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

Parameters4/5

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

Adds meaning beyond schema by explaining that testPath is optional and defaults to all tests, and that project must match a directory under apps/.

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

Purpose5/5

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

The description clearly states the tool runs the project's test suite with platform-specific commands, and distinguishes itself from siblings like verify_all and verify_build.

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

Usage Guidelines5/5

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

Explicitly advises when to use verify_all instead for combined build+test+lint, and implies scoping via testPath parameter.

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

Tool Schema Changelog

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

  1. 24 tool updatesv1.13.1
    • Changedgraph_connect4 fields changed
      • changedInput schema / properties / relation / description
        Previous value: -"관계 유형: related_to(관련), causes(원인), solves(해결), depends_on(의존), contradicts(상충), extends(확장), example_of(예시)"New value: +"Edge type: related_to (general association), causes (A causes B), solves (A fixes B), depends_on (A requires B), contradicts (A conflicts with B), extends (A builds on B), example_of (A demonstrates B)"
      • changedInput schema / properties / sourceId / description
        Previous value: -"출발 메모리 ID"New value: +"Source memory ID (the \"from\" node)"
      • changedInput schema / properties / strength / description
        Previous value: -"관계 강도 0-1 (기본: 1.0)"New value: +"Connection strength 0.0-1.0 (default: 1.0). Lower values indicate weaker associations."
      • changedInput schema / properties / targetId / description
        Previous value: -"도착 메모리 ID"New value: +"Target memory ID (the \"to\" node)"
    • Changedgraph_explore4 fields changed
      • changedInput schema / properties / depth / description
        Previous value: -"탐색 깊이 (기본: 2, 최대: 4)"New value: +"Maximum traversal depth 1-4 (default: 2). Higher values return more results but may be slower."
      • changedInput schema / properties / direction / description
        Previous value: -"탐색 방향 (기본: both)"New value: +"Traversal direction — outgoing (A→B), incoming (B→A), or both (default: \"both\")"
      • changedInput schema / properties / memoryId / description
        Previous value: -"시작 메모리 ID"New value: +"Starting memory ID for graph traversal"
      • changedInput schema / properties / relation / description
        Previous value: -"관계 유형 필터 (기본: all)"New value: +"Filter by relation type (default: \"all\")"
    • Changedmemory_get1 field changed
      • changedInput schema / properties / ids / description
        Previous value: -"조회할 메모리 ID 배열 (최대 20개)"New value: +"Array of memory IDs to retrieve (max 20)"
    • Changedmemory_related4 fields changed
      • changedInput schema / properties / includeGraph / description
        Previous value: -"지식 그래프 관계 포함 (기본: true)"New value: +"Include knowledge graph connections (default: true)"
      • changedInput schema / properties / includeSemantic / description
        Previous value: -"시맨틱 유사 메모리 포함 (기본: true)"New value: +"Include semantically similar memories via embeddings (default: true)"
      • changedInput schema / properties / limit / description
        Previous value: -"결과 개수 (기본: 10)"New value: +"Max results to return (default: 10)"
      • changedInput schema / properties / memoryId / description
        Previous value: -"기준 메모리 ID"New value: +"The anchor memory ID to find relations for"
    • Changedmemory_search8 fields changed
      • changedInput schema / properties / detail / description
        Previous value: -"true면 전체 content, false면 요약 인덱스만 (기본: false)"New value: +"Return full content per memory (default: false — returns compact index only)"
      • changedInput schema / properties / limit / description
        Previous value: -"결과 개수 (기본: 10)"New value: +"Max results to return (default: 10)"
      • changedInput schema / properties / minImportance / description
        Previous value: -"최소 중요도 (기본: 1)"New value: +"Minimum importance threshold 1-10 (default: 1)"
      • changedInput schema / properties / project / description
        Previous value: -"프로젝트 필터 (선택)"New value: +"Filter by project (optional)"
      • changedInput schema / properties / query / description
        Previous value: -"검색어 (자연어)"New value: +"Natural language search query"
      • changedInput schema / properties / semantic / description
        Previous value: -"시맨틱 검색 사용 (기본: false, 임베딩 기반)"New value: +"Use embedding-based semantic search instead of keyword FTS5 (default: false)"
      • changedInput schema / properties / tags / description
        Previous value: -"태그 필터 (선택)"New value: +"Filter by tags — matches if any tag is present (optional)"
      • changedInput schema / properties / type / description
        Previous value: -"메모리 타입 필터 (기본: all)"New value: +"Filter by memory type (default: \"all\")"
    • Changedmemory_stats1 field changed
      • changedInput schema / properties / project / description
        Previous value: -"특정 프로젝트만 (선택)"New value: +"Scope statistics to a single project (optional — omit for global stats)"
    • Changedmemory_store6 fields changed
      • changedInput schema / properties / content / description
        Previous value: -"저장할 내용"New value: +"The knowledge content to store"
      • changedInput schema / properties / importance / description
        Previous value: -"중요도 1-10 (기본: 5)"New value: +"Importance score 1-10 where 10 is critical (default: 5)"
      • changedInput schema / properties / project / description
        Previous value: -"관련 프로젝트 (선택)"New value: +"Associated project name (optional — omit for cross-project knowledge)"
      • changedInput schema / properties / relatedTo / description
        Previous value: -"연결할 기존 메모리 ID (선택)"New value: +"ID of an existing memory to link via knowledge graph (optional)"
      • changedInput schema / properties / tags / description
        Previous value: -"태그 (검색용)"New value: +"Tags for filtering (e.g. [\"auth\", \"performance\"])"
      • changedInput schema / properties / type / description
        Previous value: -"메모리 타입: observation(발견), decision(결정), learning(학습), error(에러), pattern(패턴)"New value: +"Memory type: observation (discovery/finding), decision (architecture/tech choice), learning (new knowledge), error (error encountered), pattern (code convention)"
    • Changedproject_analyze1 field changed
      • changedInput schema / properties / project / description
        Previous value: -"프로젝트 이름"New value: +"Project name (must match a directory under apps/)"
    • Changedproject_init3 fields changed
      • changedInput schema / properties / description / description
        Previous value: -"프로젝트 설명"New value: +"Human-readable project description"
      • changedInput schema / properties / project / description
        Previous value: -"프로젝트 이름"New value: +"Project name (must match a directory under apps/)"
      • changedInput schema / properties / techStack / description
        Previous value: -"기술 스택 (자동 감지 가능)"New value: +"Tech stack override {framework, language, database, ...}. Omit for auto-detection."
    • Changedproject_status1 field changed
      • changedInput schema / properties / project / description
        Previous value: -"프로젝트 이름"New value: +"Project name (must match a directory under apps/)"
    • Changedsearch_sessions3 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"결과 개수 (기본: 5)"New value: +"Max results to return (default: 5)"
      • changedInput schema / properties / project / description
        Previous value: -"프로젝트 (선택)"New value: +"Filter by project (optional)"
      • changedInput schema / properties / query / description
        Previous value: -"검색어"New value: +"Natural language search query"
    • Changedsession_end6 fields changed
      • changedInput schema / properties / blockers / description
        Previous value: -"막힌 것/이슈"New value: +"Current blockers or issues (null if none)"
      • changedInput schema / properties / modifiedFiles / description
        Previous value: -"수정한 파일"New value: +"Files modified during this session"
      • changedInput schema / properties / nextSteps / description
        Previous value: -"다음 할 일"New value: +"Ordered list of next tasks to pick up"
      • changedInput schema / properties / project / description
        Previous value: -"프로젝트 이름"New value: +"Project name (must match a directory under apps/)"
      • changedInput schema / properties / summary / description
        Previous value: -"이번 세션 요약 (1-2줄)"New value: +"One-line summary of this session"
      • changedInput schema / properties / workDone / description
        Previous value: -"완료한 작업"New value: +"Description of completed work"
    • Changedsession_history3 fields changed
      • changedInput schema / properties / days / description
        Previous value: -"최근 N일 (기본: 7)"New value: +"Only return sessions from the last N days (default: 7)"
      • changedInput schema / properties / limit / description
        Previous value: -"조회 개수 (기본: 5)"New value: +"Max records to return (default: 5)"
      • changedInput schema / properties / project / description
        Previous value: -"프로젝트 이름"New value: +"Project name (must match a directory under apps/)"
    • Changedsession_start2 fields changed
      • changedInput schema / properties / compact / description
        Previous value: -"간결한 포맷 (기본: true)"New value: +"Return compressed format (default: true). Set false for verbose output."
      • changedInput schema / properties / project / description
        Previous value: -"프로젝트 이름"New value: +"Project name (must match a directory under apps/)"
    • Changedsolution_find4 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"결과 개수 (기본: 3)"New value: +"Max results to return (default: 3)"
      • changedInput schema / properties / project / description
        Previous value: -"프로젝트 (선택)"New value: +"Filter by project (optional — also includes cross-project solutions)"
      • changedInput schema / properties / query / description
        Previous value: -"에러 메시지 또는 키워드"New value: +"Error message, signature, or natural language description of the problem"
      • changedInput schema / properties / semantic / description
        Previous value: -"시맨틱 검색 사용 (기본: false, 임베딩 기반)"New value: +"Enable semantic/embedding search for fuzzy matching (default: false)"
    • Changedsolution_record5 fields changed
      • changedInput schema / properties / errorMessage / description
        Previous value: -"전체 에러 메시지"New value: +"Full error message or stack trace (optional)"
      • changedInput schema / properties / errorSignature / description
        Previous value: -"에러 패턴/시그니처 (검색 키)"New value: +"Error pattern/signature used as the search key (e.g. \"ENOENT: no such file\", \"WorkManager not initialized\")"
      • changedInput schema / properties / project / description
        Previous value: -"프로젝트 이름"New value: +"Project name (optional — omit for cross-project solutions)"
      • changedInput schema / properties / relatedFiles / description
        Previous value: -"관련 파일"New value: +"Files that were modified to fix the error"
      • changedInput schema / properties / solution / description
        Previous value: -"해결 방법"New value: +"Step-by-step fix description"
    • Changedsolution_suggest2 fields changed
      • changedInput schema / properties / errorMessage / description
        Previous value: -"현재 에러 메시지"New value: +"The current error message or stack trace"
      • changedInput schema / properties / project / description
        Previous value: -"프로젝트"New value: +"Project name for context (optional)"
    • Changedtask_add5 fields changed
      • changedInput schema / properties / description / description
        Previous value: -"상세 설명"New value: +"Detailed description (optional)"
      • changedInput schema / properties / priority / description
        Previous value: -"우선순위 1-10 (기본: 5)"New value: +"Priority 1-10 where 10 is highest (default: 5)"
      • changedInput schema / properties / project / description
        Previous value: -"프로젝트 이름"New value: +"Project name (must match a directory under apps/)"
      • changedInput schema / properties / relatedFiles / description
        Previous value: -"관련 파일"New value: +"Associated file paths (optional)"
      • changedInput schema / properties / title / description
        Previous value: -"태스크 제목"New value: +"Task title (concise, actionable)"
    • Changedtask_list2 fields changed
      • changedInput schema / properties / project / description
        Previous value: -"프로젝트 이름"New value: +"Project name (must match a directory under apps/)"
      • changedInput schema / properties / status / description
        Previous value: -"필터 (기본: pending)"New value: +"Status filter (default: \"pending\")"
    • Changedtask_suggest2 fields changed
      • changedInput schema / properties / path / description
        Previous value: -"특정 경로만 분석 (선택)"New value: +"Subdirectory path to limit the scan (optional, e.g. \"src/components\")"
      • changedInput schema / properties / project / description
        Previous value: -"프로젝트 이름"New value: +"Project name (must match a directory under apps/)"
    • Changedtask_update3 fields changed
      • changedInput schema / properties / note / description
        Previous value: -"메모 (완료 시 결과 등)"New value: +"Optional note (e.g. completion summary or block reason)"
      • changedInput schema / properties / status / description
        Previous value: -"새 상태"New value: +"New status"
      • changedInput schema / properties / taskId / description
        Previous value: -"태스크 ID"New value: +"Task ID (from task_add or task_list)"
    • Changedverify_all2 fields changed
      • changedInput schema / properties / project / description
        Previous value: -"프로젝트 이름"New value: +"Project name (must match a directory under apps/)"
      • changedInput schema / properties / stopOnFail / description
        Previous value: -"실패 시 중단 (기본: false)"New value: +"Abort remaining gates on first failure (default: false — runs all gates)"
    • Changedverify_build1 field changed
      • changedInput schema / properties / project / description
        Previous value: -"프로젝트 이름"New value: +"Project name (must match a directory under apps/)"
    • Changedverify_test2 fields changed
      • changedInput schema / properties / project / description
        Previous value: -"프로젝트 이름"New value: +"Project name (must match a directory under apps/)"
      • changedInput schema / properties / testPath / description
        Previous value: -"특정 테스트 파일/폴더 (선택)"New value: +"Specific test file or directory to run (optional — runs all tests if omitted)"
  2. 25 tool updatesv1.13.0
    • First observedgraph_connect
    • First observedgraph_explore
    • First observedlist_projects
    • First observedmemory_get
    • First observedmemory_related
    • First observedmemory_search
    • First observedmemory_stats
    • First observedmemory_store
    • First observedproject_analyze
    • First observedproject_init
    • First observedproject_status
    • First observedsearch_sessions
    • First observedsession_end
    • First observedsession_history
    • First observedsession_start
    • First observedsolution_find
    • First observedsolution_record
    • First observedsolution_suggest
    • First observedtask_add
    • First observedtask_list
    • First observedtask_suggest
    • First observedtask_update
    • First observedverify_all
    • First observedverify_build
    • First observedverify_test

TDQS

A4.3/5.0
Disambiguation4/5

Most tools have distinct purposes, but there is some overlap that could cause confusion. For example, memory_related and graph_explore both traverse the knowledge graph, though their descriptions clarify differences in approach. Similarly, search_sessions and session_history both retrieve past sessions, with one focusing on semantic search and the other on chronological listing, which might lead to misselection if not carefully read.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, such as memory_search, project_init, and verify_all. All names use snake_case uniformly, with clear and descriptive verbs that align with their functions, making the set predictable and easy to navigate.

Tool Count3/5

With 25 tools, the count feels heavy for the server's purpose of session continuity and project management. While the tools cover various aspects like memory handling, project tasks, and verification, the number may overwhelm agents, leading to inefficiency or confusion in tool selection, despite the broad scope.

Completeness5/5

The tool set provides comprehensive coverage for the domain, including CRUD operations for memories, projects, tasks, and solutions, along with session management and verification workflows. There are no obvious gaps; each tool supports a complete lifecycle, ensuring agents can handle end-to-end processes without dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Provides comprehensive session management for Claude Code with automatic initialization/cleanup, quality checkpoints, and local conversation memory with semantic search for capturing learnings across coding sessions.
    6
    2
    BSD 3-Clause
  • A
    license
    A
    quality
    B
    maintenance
    Persistent memory for Claude Code. Automatically indexes every conversation and provides production-grade hybrid search (BM25 + vectors + reranker) via MCP tools. 100% local, zero config, zero API keys, zero invoice.
    16
    57
    7
    MIT

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/leesgit/passbaton'

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