agent-knowledge
agent-knowledge
AIコーディングアシスタント向けのセッション横断メモリとリコール -- Claude Code、Cursor、OpenCode、Cline、Continue.dev、Aiderでそのまま動作します。Git同期ナレッジベース、ハイブリッドセマンティック+TF-IDF検索、シークレットスクラビング付き自動蒸留。
ベンチマーク: longmemeval_s で R@5 = 97.2%(スパース)/ 98.8%(ハイブリッド)、より難しい longmemeval_m 分割で 86.0%(スパース)/ 88.4%(ハイブリッド) — 公開のLongMemEval学術ベンチマーク(Wu et al. 2024, ICLR 2025)、各分割で全500問、LLM不要、APIキー不要、完全オフラインで実行。論文の公式 flat-bm25 ベースラインに対して、同一条件の再現でR@5が+8.6pp〜+13.2pp向上。カテゴリ別の完全な表、再現手順、論文比較の詳細は bench/README.md を参照。
なぜ必要か
AIコーディングセッションは一時的なものです。セッションが終わると、そこで学んだすべて(アーキテクチャ決定、デバッグの洞察、プロジェクトコンテキスト)は失われます。次のセッションはゼロから始まります。
agent-knowledge は、2つの補完的なシステムでこれを解決します:
ナレッジベース -- 構造化エントリ(決定、ワークフロー、プロジェクトコンテキスト)のGit同期マークダウンボールトで、セッションやマシンを超えて永続化されます。
セッション検索 -- すべてのコーディングツールのセッショントランスクリプトに対するTF-IDFランキングの全文検索で、エージェントが以前の出来事を思い出せるようにします。どのツールが使われたかに関係なく。
Related MCP server: Memory-MCP
対応ツール
主要なAIコーディングアシスタントのセッションは自動検出されます。ツールがインストールされていれば、そのセッションが自動的に表示されます。
ツール | 形式 | 自動検出パス |
Claude Code | JSONL |
|
Cursor | JSONL |
|
Codex CLI | JSONL |
|
Aider | Markdown/JSONL |
|
Continue.dev | JSON |
|
Cline | JSON | VS Code globalStorage |
OpenCode | SQLite |
|
設定は不要です。追加のセッションルートは、AGENT_KNOWLEDGE_EXTRA_SESSION_ROOTS 環境変数(カンマ区切りのパス)で追加できます。
機能
ホスト非依存のセッション検索 -- 主要なAIコーディングアシスタント(Claude Code、Cursor、Codex CLI、Aider、Continue.dev、Cline、OpenCode)全体での統合検索。設定にホスト名は組み込まれておらず、アダプタレジストリが起動時にインストール済みホストルートをプローブします。
ハイブリッド検索 -- セマンティックベクトル類似度とTF-IDFキーワードランキングをブレンド
Git同期ナレッジベース -- YAMLフロントマター付きマークダウンボールト、書き込み時に自動コミットとプッシュ
自動陳腐化検出 --
knowledge_analyze(action: "stale_by_code_activity")は、各エントリ本文で言及されているファイルパスを、最近のセッションサマリーのfilesModifiedと相互参照します。シンボル存在の精度レイヤーと組み合わせて:エントリが引用する識別子(インラインバッククォート+フェンスブロック)がタッチされたファイルでチェックされ、まだ存在する場合は信頼度が×0.3にダウンウェイトされます。evergreen: trueのエントリは免除されます。検索ギャップ追跡 --
knowledge_analyze(action: "search_gaps")は、過去since_daysのゼロ結果クエリをトークンJaccard類似度でグループ化して表示します。「次にどのエントリを書くべきか」の最も明確なシグナルです。セクション優先コンテキストパッカー --
knowledge(action: "wakeup")は、トークン予算(デフォルト800、token_budgetまたはAGENT_KNOWLEDGE_WAKEUP_BUDGETで上書き可能)内でマルチセクションバンドル(identity→active_tasks→recent_decisions→known_gotchas→last_session_summary→top_weighted→semantic_fallback)を組み立てます。未使用のセクション予算は後のセクションに再配分されます。スコア付き+ゲート付きプロモーター -- セッションインサイトは、6シグナルの重み付きスコアラーと3つの独立したゲート(
minScore、minRecallCount、minUniqueQueries)でプロモートされます。バックグラウンドで自動実行、knowledge_admin(action: "promote")でオンデマンド実行、またはnpm run bench:promoteでオフラインでベンチマーク可能。実行ごとに監査可能な.dreams/YYYY-MM-DD.mdダイアリーを出力します。プラグ可能なアダプタシステム --
SessionAdapterインターフェースを実装することで新しいツールのサポートを追加埋め込み -- ローカル(Hugging Face)、OpenAI、Claude/Voyage、またはGeminiプロバイダー
ファジーマッチング -- Levenshtein距離によるタイポ耐性検索
6つの検索スコープ -- エラー、プラン、設定、ツール、ファイル、決定
6つのMCPツール -- 統合されたアクションベースのインターフェース(
knowledge、knowledge_search、knowledge_session、knowledge_graph、knowledge_analyze、knowledge_admin)エバーグリーンエントリ -- フロントマターの
evergreen: trueは、ランキングでの減衰からエントリを免除し、プロモーション下で追加専用にします。ダッシュボードはこれらのカードにピン留めバッジを表示します。著者帰属 -- オプションの
author: <string>フロントマターは、各カードに控えめなチップとして表示されます。コードグラフ解決 -- コード構造のための
calls、imports、inheritsエッジタイプ。有向BFSトラバーサル(outbound/inbound/both)。効率的な取り込みのためのbulk_link。再取り込み前に古いコードエッジをクリアするためのunlink_by_origin。code:プレフィックス付きノードIDはコードとナレッジを区別します。時間的ナレッジグラフ -- エッジは
valid_from/valid_toの有効期間ウィンドウをサポート。as_ofクエリは特定時点のスナップショットを返します。invalidateアクションは事実を削除せずに終了としてマークします。ハイブリッドスコアリングブースト -- 固有名詞と時間的近接性のブーストをTF-IDF+セマンティックブレンドに追加し、+66.7%で上限、シグナルがない場合はショートサーキット。
カテゴリをフィルタではなくブーストとして --
category_mode: "boost"をオプトインすると、カテゴリの推測が間違っていても正しい答えを破棄せずにランクを下げるだけになります。逐語セッションインデックス -- メッセージごとのチャンク(30文字以上)をベクトルストアに埋め込み、生の会話を検索可能にします。
AGENT_KNOWLEDGE_INDEX_VERBATIM=falseで切り替え。設定可能なGit URL -- ランタイムセットアップ用の
knowledge_admin(action: "config")。XDG/AppDataの場所に永続化。クロスマシン永続化 -- ナレッジはgitで同期され、セッションは各ツールのローカルストレージから読み取られます。
リアルタイムダッシュボード --
localhost:3423で閲覧、検索、管理。シークレットスクラビング -- APIキー、トークン、パスワード、秘密鍵はgitプッシュ前に自動的に編集されます。
ナレッジグラフ -- エントリ間の関係エッジ(related_to、supersedes、depends_on、contradicts、specializes、part_of、alternative_to、builds_on)とBFSトラバーサル。
信頼度/減衰スコアリング -- エントリはアクセス頻度と新しさでスコアリングされ、候補から確立、実証済みへ自動プロモーション。
メモリ統合 -- 書き込み時のTF-IDF重複検出(類似エントリの警告)に加え、
knowledge_analyze(action: "consolidate")によるバッチ重複スキャン。リフレクションサイクル --
knowledge_analyze(action: "reflect")は接続されていないエントリを表面化し、エージェントが新しいグラフ接続を特定するための構造化プロンプトを生成します。書き込み時の自動リンク -- 新しいエントリは、コサイン類似度が0.7を超える場合、上位3件の類似既存エントリに自動的にリンクされます。
信頼度メタデータ — エントリは
extracted(ユーザー作成)またはinferred(自動蒸留、検索ランク乗数0.85×)とタグ付けされ、confidence_scoreフィールドはモデルの確信度0-1を保持します。ナレッジ分析 —
knowledge_analyzeアクションgod_nodes(最も接続されたエントリ)、bridges(カテゴリ間コネクタ)、gaps(孤立エントリ)。ナレッジブリーフ —
knowledge_analyze(action: "brief")は、セッション開始時のオリエンテーション用にキャッシュされた約200トークンのサマリー(コアコンセプト、アクティブプロジェクト、最近の決定、陳腐化とギャップの数)を返します。エッジの来歴 — グラフエッジは
origin(manual、auto-link、distill、reflect)を追跡し、分析がユーザーの判断と自動ヒューリスティックを区別できるようにします。蒸留における決定的事前抽出 — セッションサマリーには、bash/ツール出力から正規表現で抽出されたgitコミット、エラーパターン、アクセスしたURL、変更されたパッケージが含まれます(LLMコストなし)。
すべての検索ヒットに鮮度メタデータ — すべてのナレッジ結果には
freshness: { body_age_days, last_accessed, access_count, verified_at, verification_age_days, evergreen }が付属します。エージェントは信頼シグナルを読み取って判断します。ポリシーによる降格は課しません。カテゴリ別減衰ウィンドウ — 「未使用」フィルタとタイプ別チャートは、カテゴリ別のしきい値(プロジェクト180日、人365日、決定90日、ワークフロー60日、ノート30日)を尊重するため、アイデンティティ型のコンテンツが毎週再読されないだけで古く見えることはありません。
ライフサイクルフック —
SessionStart自動ウェイクアップ+取り込み鮮度チェック、UserPromptSubmit最初のプロンプトへのターゲット注入、PreCompactメモリフラッシュの促し+蒸留、SessionEnd蒸留。合計6つのフックスクリプト、すべてフェイルオープン、各AGENT_KNOWLEDGE_*環境変数で切り替え可能。詳細はdocs/HOOKS.mdを参照。ホスト自動メモリの置き換え — セッションごとのメモリシステムを持つホスト(Claude Codeの
~/.claude/projects/*/memory/、他のIDEでも同様)では、永続的なユーザー事実とフィードバックをagent-knowledgeにルーティングします。自動メモリはマシンローカルで他のマシンから見えません。agent-knowledgeはgit同期、クロスマシン、検索可能で、ウェイクアップに表示されます。Claude Code統合の注意点はdocs/USER-MANUAL.mdを参照。
コードベース取り込み
knowledge-ingest スキルは、コードベースディレクトリからナレッジベースを入力または更新します。tree-sitterを使用してゼロトークンの構造抽出(クラス、関数、インポート、コールグラフ、根拠コメント)を行い、その後ファイルをサブシステムにクラスタリングし、既存のMCPツールを介してナレッジエントリ+グラフエッジを作成します。以降の実行は増分的で、変更されたファイルのみが再処理されます。
/knowledge-ingest ./my-projectAgent Skills標準を使用 — Claude Code、OpenCode、Cursor、Codex CLI、Gemini CLIで動作します。詳細は取り込みガイドを参照。
対応言語: TypeScript、JavaScript、Python、Go、Rust、Java、C、C++。
クイックスタート
npmからインストール
npm install -g agent-knowledgeまたはソースからクローン
git clone https://github.com/keshrath/agent-knowledge.git
cd agent-knowledge
npm install && npm run buildオプション1: MCPサーバー(AIエージェント向け)
MCPクライアント設定(Claude Code、Clineなど)に追加:
{
"mcpServers": {
"agent-knowledge": {
"command": "npx",
"args": ["agent-knowledge"]
}
}
}ダッシュボードは最初のMCP接続時に http://localhost:3423 で自動起動します。
クライアント固有の手順(Claude Code、Cursor、Windsurf、OpenCode)はセットアップガイドを参照。
オプション2: スタンドアロンサーバー(REST/WebSocketクライアント向け)
node dist/server.js --port 3423MCPツール(6)
ナレッジベース
ツール | アクション | 説明 | パラメータ |
|
| カテゴリやタグでエントリを一覧表示 |
|
| 特定のエントリを読み込む |
| |
| エントリを作成・更新(自動git同期) |
| |
| エントリを削除(自動git同期) |
| |
| 手動git pull + push | -- | |
| L0アイデンティティ + L1上位重み付けエントリを返す(トークン予算内) |
|
検索
ツール | 説明 | パラメータ |
| 一般的なハイブリッドTF-IDF + セマンティック( |
|
スコープ付きセッション限定リコール( |
|
レスポンス形式: {mode: "general" | "scoped", sessions, knowledge}。スコープモードでは設計上 knowledge: [] を返します。
スコープ: errors, plans, configs, tools, files, decisions, all。
検索ノブ:
mmr: trueはMaximal Marginal Relevance(最大限界関連性)による再ランキングを適用します(top-K内のほぼ重複クラスタを排除)。mmr_lambdaは0〜1、デフォルトは0.7。category_mode: "boost"(デフォルト)は、カテゴリが一致するエントリに1.25倍のスコア乗数を適用し、非一致を除外しません。ハードフィルタ動作には"filter"を指定します。explain: trueはすべてのナレッジヒットにscore_components: {bm25, decay, maturity, confidence, category_boost, mmr_penalty}を付加します。
セッション
ツール | アクション | 説明 | パラメータ |
|
| メタデータ付きでセッションを一覧表示 |
|
| 完全なセッション会話を取得 |
| |
| セッションの要約(トピック、ツール、ファイル) |
|
ナレッジグラフ
ツール | アクション | 説明 | パラメータ |
|
| エントリ間のエッジを作成・更新 |
|
| エントリ間のエッジを削除 |
| |
| エッジを期限切れとしてマーク(valid_toを設定) |
| |
| エッジを一覧表示 |
| |
| エントリからの有向BFSトラバーサル |
| |
| エッジを一括作成(コードグラフ取り込み) |
| |
| オリジン別にすべてのエッジを削除 |
|
ナレッジタイプ: related_to, supersedes, depends_on, contradicts, specializes, part_of, alternative_to, builds_on
コード構造タイプ: calls, imports, inherits
トラバース方向: outbound(source→target)、inbound(target→source)、both(デフォルト、無向)
分析
ツール | アクション | 説明 | パラメータ |
|
| ほぼ重複するエントリを検出 |
|
| リンク対象の未接続エントリを検出 |
| |
| 最も接続数の多いエントリ(次数中心性) |
| |
| カテゴリ間コネクタ(媒介中心性) |
| |
| 成熟度別の孤立エントリ(0〜1エッジ) |
| |
| キャッシュ済み約200トークンのナレッジベース要約 | -- |
管理
ツール | アクション | 説明 | パラメータ |
|
| ベクターストアの統計 | -- |
| 設定の表示または更新 |
| |
| すべてのナレッジエントリを再エンベッド(プロバイダー切替時に有用) | -- | |
| ディスク上に存在しないセッションのエンベディングを削除 |
| |
| ベクターストアの空きページを再利用 | -- | |
| スコアリング + ゲート付きプロモーター |
|
スコアリング付きプロモーター
プロジェクトレベルの各候補は6つのシグナル(関連性0.30、頻度0.24、クエリ多様性0.15、新しさ0.15、統合性0.10、概念豊富さ0.06)でスコアリングされ、minScore ≥ 0.5、minRecallCount ≥ 2、minUniqueQueries ≥ 2 のゲートで制御されます。3つのゲートすべてを通過する必要があります。バックグラウンドでの自動プロモーションは同じ auto_distill 設定フラグで制御されます。オンデマンドで knowledge_admin(action: "promote") を呼び出します。
promote_mode: "explain"(デフォルト)— 候補のスコアリング + ゲート判定、日記の書き込み、KBには一切触れません。promote_mode: "apply"— ゲートを通過した候補をプロモートし、日記を書き、gitコミットします。実行のたびに
~/agent-knowledge/.dreams/YYYY-MM-DD.mdに候補ごとのシグナル内訳とゲート結果を出力します。.で始まるディレクトリはgit追跡されますが、一覧・検索からは除外されます。根拠に基づく再水和: ソースセッションファイルがディスク上に存在しない候補はスキップされます(削除されたコンテンツのプロモートを防止)。
evergreen: trueフロントマターを持つエントリは、プロモーションによって上書きされることはありません — アクティビティは追記されます。
書き込みベンチハーネス: npm run bench:promote — 「後続セッションで参照された」による自動ラベリング付きオフラインリプレイ。ゲート付きプロモーターをナイーブな「すべて出荷」ベースラインと比較し、precision / recall / F1 を報告します。シグナル重みや閾値の変更をロールアウトする前に、これを使って検証してください。
REST API
メソッド | エンドポイント | 説明 |
GET |
| ナレッジエントリの一覧表示 |
GET |
| ナレッジベースの検索 |
GET |
| 特定のエントリの読み込み |
GET |
| 最も接続数の多いエントリ |
GET |
| カテゴリ間コネクタ |
GET |
| 孤立エントリ |
GET |
| ナレッジベースの要約 |
GET |
| セッションの一覧表示 |
GET |
| セッションの検索(TF-IDF) |
GET |
| スコープ付きリコール |
GET |
| セッションの読み込み |
GET |
| セッションの要約 |
POST |
| エントリの書き込み(HTTPクライアント用) |
GET |
| ヘルスチェック |
アーキテクチャ
graph LR
subgraph Storage
KB[(Knowledge Base<br/>~/agent-knowledge<br/>Git Repository)]
end
subgraph Session Sources
CC[(Claude Code<br/>JSONL)]
CU[(Cursor<br/>JSONL)]
OC[(OpenCode<br/>SQLite)]
CL[(Cline<br/>JSON)]
CD[(Continue.dev<br/>JSON)]
AI[(Aider<br/>MD / JSONL)]
end
subgraph agent-knowledge
KM[Knowledge Module<br/>store / search / git]
AD[Session Adapters<br/>auto-discovery]
SE[Search Engine<br/>TF-IDF + Fuzzy]
DS[Dashboard<br/>:3423]
MCP[MCP Server<br/>stdio]
end
subgraph Clients
AG[Agent Sessions]
WB[Web Browser]
end
KB <-->|git pull/push| KM
CC --> AD
CU --> AD
OC --> AD
CL --> AD
CD --> AD
AI --> AD
AD --> SE
KM --> MCP
SE --> MCP
KM --> DS
SE --> DS
MCP --> AG
DS --> WBナレッジグラフ
エントリとコードシンボルは、専用の edges SQLiteテーブルに保存された型付き・重み付きエッジを介して接続できます。11種類のリレーションシップタイプがサポートされています — ナレッジエッジ用に8種類、コード構造用に3種類です:
ナレッジ: related_to, supersedes, depends_on, contradicts, specializes, part_of, alternative_to, builds_on
コード構造: calls, imports, inherits
knowledge_graph(action: "link")はエッジを作成・更新します(オプションで強度0〜1を指定可能)knowledge_graph(action: "unlink")はエッジを削除します(タイプでフィルタリング可能)knowledge_graph(action: "list")はエントリまたはリレーションシップタイプのエッジを一覧表示しますknowledge_graph(action: "traverse")は開始エントリから有向BFSトラバーサルを実行します。direction(outbound、inbound、both)とrel_typeフィルターをサポートしますknowledge_graph(action: "bulk_link")は単一トランザクションでエッジを一括作成します(コードグラフ取り込み用)knowledge_graph(action: "unlink_by_origin")は特定のオリジンを持つすべてのエッジを削除します(再取り込み前に古いコードエッジをクリアするため)
コードグラフ
コード構造エッジは、コードベース取り込み中に knowledge-ingest スキルによって作成されます。code: プレフィックス付きのノードIDを使用します:
code:src/auth/middleware.ts # file node
code:src/auth/middleware.ts::validateToken # symbol nodeクエリ例:
# Who calls validateToken?
knowledge_graph({ action: "traverse", entry: "code:src/auth.ts::validateToken", direction: "inbound", rel_type: "calls", depth: 3 })
# What breaks if I change this function?
knowledge_graph({ action: "traverse", entry: "code:src/auth.ts::validateToken", direction: "inbound", rel_type: "calls", depth: 5 })
# Combined: callers + knowledge context (decisions, design rationale)
knowledge_graph({ action: "traverse", entry: "code:src/auth.ts::validateToken", depth: 2 })自動リンク
knowledge の action: "write" がエントリを作成・更新すると、コサイン類似度によって既存エントリの上位3件の類似エントリを自動的に検索し、0.7を超えるスコアのペアに対して related_to エッジを作成します。
信頼度 & 減衰スコアリング
各ナレッジエントリには、entry_scores SQLiteテーブルで追跡される信頼度スコアがあります。検索結果は以下を使用してランキングされます:
finalScore = baseRelevance * 0.5^(daysSinceLastAccess / 90) * maturityMultiplierエントリはアクセス数に基づいて自動的に成熟します:
ステージ | アクセス数 | 倍率 |
| < 5 | 0.5x |
| 5-19 | 1.0x |
| 20+ | 1.5x |
頻繁にアクセスされるエントリは検索ランキングで上位に表示され、古いエントリは時間の経過とともに減衰します。
検索機能
TF-IDFランキング -- 結果はTF-IDF(Term Frequency-Inverse Document Frequency)でスコアリングされます。希少な用語ほど関連性が高まります。グローバルインデックスは60秒間キャッシュされます。
ファジーマッチング -- スライディングウィンドウ方式のレーベンシュタイン編集距離。しきい値は設定可能(デフォルト0.7)。
スコープ指定検索 -- knowledge_search の scope パラメータによる絞り込み:
スコープ | 一致対象 |
| スタックトレース、例外、失敗したコマンド |
| アーキテクチャ、TODO、実装手順 |
| 設定、環境変数、設定ファイル |
| MCPツール呼び出し、CLIコマンド |
| ファイルパス、変更内容 |
| トレードオフ、根拠、選択した判断 |
統合
REST書き込みエンドポイント
POST /api/knowledge は { category, filename, content } を受け付け、完全な書き込みパイプライン(git pull → ファイル書き込み → 埋め込みインデックス → 自動リンク → git push → 重複チェック)を実行します。ステータス201で { path, autoLinks?, duplicateWarnings?, git } を返します。
これにより、MCP接続なしで他のサービスからHTTPベースの書き込みが可能になります。
agent-tasks KnowledgeBridge
agent-tasks には組み込みの KnowledgeBridge があり、タスク完了時に learning および decision アーティファクトを agent-knowledge に自動プッシュします。エントリはフロントマタータグ(agent-tasks、プロジェクト名、アーティファクトタイプ)付きで decisions/ に配置され、埋め込みで自動インデックス化され、類似エントリに自動リンクされます。設定は不要です。agent-knowledge が localhost:3423 で実行されていれば動作します。
テスト
npm test # 563 tests across 35 files
npm run test:watch # Watch mode
npm run lint # ESLint on src/ and tests/
npm run typecheck # tsc --noEmit
npm run check # typecheck + lint + format + test環境変数
すべての環境変数は AGENT_KNOWLEDGE_* プレフィックスの下にあります。ホスト名はハードコードされておらず、アダプタレジストリがインストール済みのAIコーディングホスト(.claude、.cursor、.codex、.aider、.continue、OpenCode)を設定なしで自動検出します。
コア
変数 | デフォルト | 説明 |
|
| Git同期されたナレッジベースディレクトリ |
| -- | GitリモートURL(ディレクトリが存在しない場合は自動クローン) |
|
| セッションの洞察をナレッジベースに自動蒸留 |
|
| 生のセッションメッセージチャンクをベクターストアにインデックス化し、後から会話を取得可能にします。大規模なディスク節約のため |
| (プラットフォーム設定) | プライマリホストのデータルートを上書きします。通常は未設定のままにしてください。アダプタが |
| -- | 追加のセッションディレクトリ(カンマ区切り)。自動検出で見つかったものに追加されます。 |
|
| ダッシュボードのHTTP/WebSocketポート |
埋め込み
変数 | デフォルト | 説明 |
|
|
|
|
| TF-IDFとセマンティックのブレンド重み( |
| -- | プロバイダのデフォルトモデルを上書き |
|
| ローカルモデルをアンロードするまでの秒数( |
| (自動) | ローカルプロバイダ用のONNX / OMPスレッド数 |
APIキー
プロジェクトスコープの上書きは標準キーより優先されます。どちらかを設定してください。スコープ付きの形式を使用すると、環境の他の部分とは異なるキーで agent-knowledge を実行できます。
変数 | フォールバック | 説明 |
|
| OpenAI埋め込み |
|
| Claude / Voyage埋め込み |
|
| Gemini埋め込み |
フック
変数 | デフォルト | 説明 |
|
|
|
|
| ウェイクアップバンドルのトークン数 |
|
| 最初のユーザープロンプトに対して対象を絞った |
|
| 最初のプロンプト注入のトークン数( |
|
| 最初のプロンプトに添付されるナレッジヒットの最大数( |
|
| プリコンパクションの前に、 |
外部ツールの上書き
変数 | デフォルト | 説明 |
|
| OpenCodeのセッションDBの場所を上書きします(OpenCode自身の環境変数で、当アダプタが尊重します) |
ドキュメント
セットアップガイド — インストール、クライアント設定(Claude Code、OpenCode、Cursor、Windsurf)、フック、スキル
取り込みガイド — コードベース取り込みスキル、tree-sitter抽出、増分更新
アーキテクチャ — ソース構造、設計原則、データベーススキーマ
ダッシュボード — Web UIのビューと機能
ライセンス
Available Tools
6 toolsknowledgeA
Knowledge base CRUD, sync, and session-start hydration. Actions: "list" (browse entries), "read" (get entry content), "write" (create/update entry, auto git sync), "delete" (remove entry, auto git sync), "sync" (manual git pull + push), "wakeup" (return token-budgeted section-priority context bundle — identity, active_tasks, recent_decisions, known_gotchas, last_session_summary, top_weighted, semantic_fallback — call once at session start).
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Filter by tag (action=list) | |
| path | No | Relative path to the entry, e.g. 'projects/my-project.md' (action=read, delete) | |
| action | Yes | Action to perform | |
| content | No | Full markdown content for the entry (action=write) | |
| category | No | Category (action=list: filter; action=write: target directory). One of: projects, people, decisions, workflows, notes | |
| filename | No | Filename with or without .md extension (action=write), e.g. 'my-project.md' | |
| sections | No | [wakeup] Comma-separated, ordered section list. Valid: identity, active_tasks, recent_decisions, known_gotchas, last_session_summary, top_weighted, semantic_fallback. Default: all seven in that order. Omit to preserve v1.8.0 behaviour. | |
| token_budget | No | [wakeup] Max tokens to render (chars/4 estimate, default 800) | |
| section_budgets | No | [wakeup] Per-section token-budget overrides, e.g. {"identity": 200, "top_weighted": 400}. Unspecified sections split the remainder evenly. Unused budget redistributes to later sections. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden — and it does disclose meaningful side effects: write/delete trigger auto git sync, sync is a manual git pull+push, and wakeup returns a token-budgeted section-priority bundle. This is solid disclosure for a mutation-capable tool; it only omits reversibility (e.g., whether delete is recoverable from git history) and confirmation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the content is dense and informative, but it is presented as one long run-on sentence without line breaks or structural separation, making the six actions and their caveats harder to parse at a glance. Fewer words could be used; the parentheticals are useful but poorly delimited.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-complexity tool (9 params, 6 actions, enums, nested objects) with no output schema, the description explains wakeup's return bundle but not the return values for the other five actions (e.g., what list returns, what read returns on success/failure). The schema covers parameter semantics well, but the absence of output descriptions for the remaining actions leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema already documents all nine parameters with action-scoped descriptions. The description adds value on top by explaining wakeup semantics — section ordering, defaults, budget behavior — but does not substantially enrich the other parameters beyond what the schema states. A baseline of 3 is appropriate given the high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear purpose ('Knowledge base CRUD, sync, and session-start hydration') and enumerates six concrete actions with brief one-line definitions. It implicitly distinguishes from siblings (search, graph, analyze) by being the CRUD/sync/wakeup orchestrator, though it never names the siblings or their differing responsibilities explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is conveyed per-action ('call once at session start' for wakeup, 'auto git sync' for write/delete) and the verb definitions imply when each is appropriate. However, with five siblings present, there is no explicit when-to-use-versus-alternative guidance (e.g., when to prefer knowledge_search over this tool's list action), and no exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowledge_adminB
Admin operations: view vector store stats, view/update configuration, rebuild embeddings, prune orphan session embeddings, or VACUUM the database. Use action "status" for index stats, "config" to view or update settings, "rebuild_embeddings" to re-embed all knowledge entries (useful when switching providers), "prune_orphans" to delete embeddings for sessions no longer present on disk, "vacuum" to reclaim free pages.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action: status (vector store stats), config (view/update settings), rebuild_embeddings (re-embed all entries), prune_orphans (delete embeddings for missing sessions), vacuum (reclaim free pages), promote (run the scored promoter — see promote_mode) | |
| vacuum | No | Run VACUUM after pruning (action=prune_orphans, default true) | |
| git_url | No | Git remote URL (action=config). Set to empty string to remove. | |
| min_score | No | [promote] Minimum composite score to promote (default: 0.5). | |
| memory_dir | No | Local knowledge base directory (action=config). Empty to reset. | |
| auto_distill | No | Enable/disable scheduled promotion (action=config) | |
| force_vacuum | No | Run VACUUM even if no orphans were pruned (action=prune_orphans) | |
| promote_mode | No | action=promote mode (default: explain). "explain" returns score breakdowns without writing; "apply" promotes candidates that pass all gates. | |
| min_recall_count | No | [promote] Minimum recall count gate (default: 2). | |
| min_unique_queries | No | [promote] Minimum unique-query gate (default: 2). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, and it does disclose destructive effects for prune_orphans ('delete embeddings') and vacuum ('reclaim free pages'). However, it understates rebuild_embeddings' destructive rewriting of existing embeddings, and it completely omits the 'promote' action's behavior (apply vs explain modes, write behavior vs read-only). For a tool with several destructive operations, the disclosure is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core operations are front-loaded in the opening sentence, with each action's purpose expanded in a single subsequent sentence. The structure is efficient and scannable. Minor deduction for the slightly run-on single-sentence expansion and for leaving out promote, which makes the list feel incomplete rather than intentionally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex admin tool with 10 parameters, 6 actions, no output schema, and no annotations, the description should be comprehensive — but it covers only 5 of 6 actions and omits the entire promote workflow with its 4 dedicated parameters (promote_mode, min_score, min_recall_count, min_unique_queries). An agent reading only the description would never learn a whole callable mode exists, which is a significant completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all 10 parameters, giving a baseline of 3. The description adds marginal value by linking rebuild_embeddings to the provider-switching use case, but it adds no semantics beyond the schema for the config params (git_url, memory_dir, auto_distill) and leaves the promote-related parameters entirely unexplained in prose despite them being a substantial cluster of the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear purpose — administrative operations on the knowledge/vector store — and enumerates five concrete actions (status, config, rebuild_embeddings, prune_orphans, vacuum) with their effects. It clearly distinguishes itself from the read/search siblings. However, it silently omits the 'promote' action that exists in the schema enum, and the umbrella phrase 'Admin operations' is vague until the action list clarifies it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives actionable when-to-use context for rebuild_embeddings ('useful when switching providers') and explains what each action accomplishes, which implicitly routes the agent to the right action. But it provides no guidance for the 'promote' action (its dedicated params min_score, min_recall_count, min_unique_queries, promote_mode are never narrated), and it never states when NOT to use the tool or how it differs from siblings beyond 'admin' framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowledge_analyzeA
Analysis tools: find duplicates, unconnected entries, most-connected concepts (god nodes), bridge entries, knowledge gaps, zero-result search queries, stale-by-code-activity entries, or generate a compact knowledge brief. Actions: consolidate, reflect, god_nodes, bridges, gaps, brief, search_gaps, stale_by_code_activity.
| Name | Required | Description | Default |
|---|---|---|---|
| top_n | No | Number of results (action=god_nodes default: 10, action=bridges default: 5) | |
| action | Yes | Action: consolidate (find duplicates), reflect (find unconnected entries), god_nodes (most-connected entries), bridges (cross-cluster connectors), gaps (entries with 0-1 edges), brief (compact knowledge base summary), search_gaps (zero-result knowledge_search queries grouped by similarity — the single best signal for "what entries should I write next?"), stale_by_code_activity (entries whose referenced file paths were modified in recent sessions after the entry body was last edited — automatic staleness signal, v1.8.1). | |
| category | No | Scan only this category (omit for all) | |
| min_count | No | [search_gaps] Minimum occurrence count per merged group (default: 1). Raise to surface only repeated misses. | |
| threshold | No | Similarity threshold 0-1 (action=consolidate, default: 0.5) | |
| since_days | No | [search_gaps] Lookback window in days (default: 30). Only queries logged within this window are considered. | |
| max_entries | No | Max unconnected entries to include (action=reflect, default: 20) | |
| group_similarity | No | [search_gaps] Jaccard token similarity threshold for merging near-duplicate queries (default: 0.35, range 0-1). Low because short queries yield low Jaccard even when topically related. | |
| min_touching_sessions | No | [stale_by_code_activity] Minimum distinct sessions that must have modified one of the entry's referenced files for it to be flagged (default: 1). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full disclosure burden, yet it is internally contradictory on the consolidate action: the verb implies merging/mutation while the gloss '(find duplicates)' implies read-only discovery. There is no statement about whether any action mutates entries, what output shape results, or performance implications — a real gap for a multi-action analysis tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence and the whole description runs roughly 60 words with no filler. The trailing 'Actions:' enumeration is partially redundant with the schema enum but serves as a useful name→semantic mapping, earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool — 9 parameters, 8 actions, no output schema, no annotations. All action semantics are enumerated, but the description is silent on per-action return formats and on whether any action (notably consolidate) has side effects, both material for an analysis surface of this breadth.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema's parameter descriptions are unusually rich (per-action defaults, the Jaccard rationale for group_similarity, min_count semantics). The tool description adds little beyond re-listing action names, so the schema-carrying baseline of 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates eight distinct analyses with denotative glosses (duplicates, unconnected entries, god nodes, bridges, gaps, zero-result queries, stale-by-code-activity, brief), clearly binding the tool to knowledge-base entry analysis. This differentiates it from siblings like knowledge_search (querying) and knowledge_admin (admin actions) without needing to open a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Each action carries clear context, e.g., 'gaps (entries with 0-1 edges)', 'bridges (cross-cluster connectors)', and search_gaps is explicitly framed as 'the single best signal for what entries should I write next?'. Missing, however, are explicit when-not or alternative statements that route selection against sibling tools at the tool level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowledge_graphB
Knowledge graph operations with temporal validity and code structure support. Create/remove edges, traverse via directed BFS, bulk-import code graph edges. Relationship types: related_to, supersedes, depends_on, contradicts, specializes, part_of, alternative_to, builds_on, calls, imports, inherits. Code structure types (calls/imports/inherits) are created by knowledge-ingest and use "code:" prefixed node IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | No | ISO date — only return edges valid at this date (action=list/traverse, optional) | |
| depth | No | Max traversal depth in hops (action=traverse, default: 2) | |
| edges | No | Array of edges to create (action=bulk_link). Each: { source, target, rel_type, strength?, origin? } | |
| entry | No | Entry path for filtering (action=list) or BFS start (action=traverse) | |
| action | Yes | Action: link (create edge), unlink (remove edge), invalidate (set valid_to), list (list edges), traverse (directed BFS), bulk_link (batch-create edges), unlink_by_origin (delete all edges from a specific origin) | |
| origin | No | Edge origin to delete (action=unlink_by_origin). E.g. "tree-sitter" to clear code graph before re-ingest. | |
| source | No | Source entry path (action=link/unlink/invalidate), e.g. 'projects/my-project.md' | |
| target | No | Target entry path (action=link/unlink/invalidate), e.g. 'decisions/architecture.md' | |
| rel_type | No | Relationship type (required for link, optional filter for unlink/invalidate/list) | |
| strength | No | Edge strength 0-1 (action=link, default: 0.5) | |
| valid_to | No | ISO date the fact stopped being true (action=link/invalidate). For invalidate, defaults to today. | |
| direction | No | Traversal direction (action=traverse, default: both). outbound: follow source→target (what does X call?). inbound: follow target→source (who calls X?). both: undirected (default, preserves legacy behavior). | |
| valid_from | No | ISO date the fact became true (action=link, optional). Null/omitted = unbounded. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses temporal validity and that code structure edges are created by knowledge-ingest, which is useful. However, it does not warn about destructive side effects of unlink/invalidate or the scope of bulk operations, leaving behavioral uncertainty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably concise, using three sentences to cover operations, relationship types, and code structure nuance. It could tighten by omitting the redundant relationship list from the enum, but it remains front-loaded and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is present, and the description does not describe return values for actions like list or traverse. It also omits details about state mutations (e.g., irreversibility of unlink). Given the tool's complexity and no annotations, this is a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds minimal value: it re-lists relationship types (already in the enum) and notes the 'code:' prefix for node IDs. It does not explain parameter interactions beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs knowledge graph operations: create/remove edges, traverse via BFS, bulk-import code edges. It also lists relationship types and code structure specifics. However, it does not explicitly contrast with sibling tools like knowledge_search or knowledge_analyze, so differentiation relies on the implicit 'graph' focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus siblings. It does not mention when not to use it, nor does it reference alternative tools. The code structure note implies a use case, but there is no clear routing or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowledge_searchA
Search across sessions AND knowledge entries. Returns {mode, sessions, knowledge}. General mode (no scope): hybrid TF-IDF + semantic over both sources, with optional MMR diversity and category boost. Scoped mode (scope set): sessions-only filtered recall for a specific domain (errors, plans, configs, tools, files, decisions).
| Name | Required | Description | Default |
|---|---|---|---|
| mmr | No | Apply Maximal Marginal Relevance re-ranking to knowledge results (default: false). Trades a small amount of top-1 relevance for diversity in the top-K. | |
| role | No | Filter by message role (default: all, ignored when scope is set) | |
| query | Yes | Search query -- supports keywords and phrases | |
| scope | No | Search scope (optional): errors (stack traces), plans (architecture, TODOs), configs (settings, env vars), tools (MCP tool calls), files (file paths, code refs), decisions (trade-offs, choices), all (no filter). When set, response mode switches to "scoped" and results are sessions-only. | |
| ranked | No | Use TF-IDF ranking (default: true, ignored when scope is set). Set false for regex mode. | |
| explain | No | When true, each knowledge hit carries `score_components` (bm25, decay, maturity, confidence, category_boost, mmr_penalty). | |
| project | No | Restrict search to sessions from this project | |
| category | No | Knowledge category hint (optional). By default applied as a boost (non-matching kept, matching +25%). Pass category_mode="filter" for the legacy hard-filter behavior. | |
| semantic | No | Blend semantic vector similarity with TF-IDF (default: true). Falls back to pure TF-IDF if embeddings unavailable. | |
| mmr_lambda | No | MMR tradeoff 0-1 (default: 0.7). 1.0 = pure relevance; 0.0 = pure diversity. | |
| max_results | No | Maximum number of results to return (default: 20) | |
| category_mode | No | How `category` is applied to knowledge results (default: "boost"). "boost" keeps all entries but gives matching-category entries a 25% score boost; "filter" restricts to matching category only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, and it excels. It reveals the return shape ({mode, sessions, knowledge}), explains the hybrid ranking (TF-IDF + semantic), discloses fallback behavior (pure TF-IDF if embeddings unavailable), details the boost/filter semantics of category, and even mentions the 'score_components' breakdown when explain=true. This is comprehensive transparency for a read-only 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-organized: it leads with the core action and return format, then systematically explains the two modes and key behaviors. Every sentence adds distinct information (modes, ranking, fallback, category handling) with no filler. It is long, but each phrase earns its place given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 12 parameters, 4 enums, and no output schema, the description covers the critical decision points: mode selection, source scope, ranking approach, category application, and MMR parameter meaning. It explains the return envelope and the score breakdown for explain mode. No essential usage context appears missing; the schema handles parameter-level details, and the description supplies the higher-level orchestration model.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter is already described. The description adds meaningful context beyond the schema by explaining how scope switches modes, how category boost/filter interacts with category_mode, the MMR tradeoff (lambda 1.0 = pure relevance, 0.0 = diversity), and that 'role' is ignored in scoped mode. This is valuable semantic glue, though it doesn't cover every parameter explicitly – some are only in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Search across sessions AND knowledge entries.' It immediately clarifies the dual-source nature and then distinguishes two modes (general vs. scoped) with clear scope semantics. This cleanly differentiates it from sibling tools like knowledge_session or knowledge_graph, which are likely more specialized.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use general mode (no scope) vs. scoped mode ('scope' set), including that scoped mode is sessions-only and filtered by domain. It mentions the behavior of parameters like 'role' being ignored when scope is set. However, it does not name any sibling tools as alternatives or give exclusion conditions, so the guidance is strong but not complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowledge_sessionA
Session operations: list sessions, get a full conversation, or get a summary. Use action "list" to browse sessions, "get" to retrieve messages, "summary" for a quick overview.
| Name | Required | Description | Default |
|---|---|---|---|
| tail | No | Only return the last N messages (action=get) | |
| limit | No | Max sessions to return (action=list, default: 20, max: 500) | |
| action | Yes | Action to perform | |
| offset | No | Skip first N sessions (action=list, default: 0) | |
| project | No | Filter by project name (substring match) | |
| session_id | No | Session UUID (required for get, summary) | |
| include_tools | No | Include tool_use and tool_result messages (action=get, default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It states the actions but does not mention whether operations are read-only, side effects, required permissions, error behavior (e.g., invalid session_id), or any rate limits. For a tool with three read-like actions, this is a notable gap; the agent is left to infer safety and failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with zero waste. It front-loads the core concept 'Session operations' and immediately explains the three actions. Every sentence contributes to understanding the tool, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides enough to invoke the tool correctly for the three actions, but it omits the response format entirely. Since there is no output schema, the agent is unaware of what each action returns (e.g., list returns an array, get returns messages). For a multi-action tool, this is a moderate gap, though the actions are simple enough that an agent might infer typical behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All seven parameters are fully described in the schema (100% coverage), so the schema carries the heavy lifting. The description adds context for how the action parameter drives behavior (list vs get vs summary) and clarifies the purpose of some parameters indirectly (e.g., tail for get, limit for list), but it does not add new semantic detail beyond the schema. This aligns with the coverage baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Session operations: list sessions, get a full conversation, or get a summary.' It identifies three distinct actions (list, get, summary) and explicitly differentiates from sibling tools by focusing on session operations, which none of the sibling names (knowledge, knowledge_search, knowledge_admin, knowledge_graph, knowledge_analyze) cover.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides per-action guidance: 'Use action list to browse sessions, get to retrieve messages, summary for a quick overview.' This clarifies when to use each action, but it does not mention when to favor this tool over siblings such as knowledge_search or knowledge_analyze. There is no explicit exclusion or alternative routing at the tool level, though the action-level guidance is useful.
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.
6 tool updates
v1.9.7- First observed
knowledge - First observed
knowledge_admin - First observed
knowledge_analyze - First observed
knowledge_graph - First observed
knowledge_search - First observed
knowledge_session
TDQS
Scored across 6 tools
Each tool targets a distinct functional domain: CRUD operations, cross-source search, session management, admin/maintenance, graph relationships, and analysis/insights. The action-based sub-operations are clearly scoped, and there is no meaningful overlap between tools.
All tool names follow the consistent pattern `knowledge_<verb_noun>` using snake_case throughout. The naming convention is uniform, with descriptive suffixes (search, session, admin, graph, analyze) that clearly differentiate purposes.
Six tools is an ideal count for a knowledge-management server. Each tool encapsulates a distinct set of related operations (CRUD, search, sessions, admin, graph, analysis), providing comprehensive functionality without overwhelming the agent.
The toolset covers the full lifecycle of a knowledge base: creating/reading/updating/deleting entries, searching across sessions and entries, managing session history, performing administrative tasks (embeddings, vacuum), maintaining knowledge graph relationships, and deriving analytical insights. No obvious gaps exist; even advanced features like bulk graph import and orphan pruning are included.
Maintenance
Related MCP Connectors
Shared memory for coding agents. Stop re-explaining your codebase every session.
- EngramOAuthtools.engram
Memory for AI agent teams across tools, sessions, repositories, and teammates.
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Persistent memory and knowledge graphs for AI agents. Hybrid search, context checkpoints, and more.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceProvides persistent memory for AI coding assistants, storing and retrieving architectural decisions, patterns, and solutions across sessions using semantic search, while also offering git integration for commit messages and code expertise mapping.MIT- AlicenseAqualityDmaintenanceProvides persistent memory for AI agents using hybrid search (vector embeddings + BM25) with neural reranking, enabling storage and retrieval of insights, debugging solutions, and patterns across coding sessions.8MIT
- AlicenseNot gradedqualityDmaintenanceProvides AI coding assistants with persistent, context-rich memory of a codebase, including documentation and git history, enabling recall across sessions.105Apache 2.0
- AlicenseNot gradedqualityBmaintenanceProvides persistent, searchable memory and knowledge capture for AI-assisted development, enabling agents to retain decisions, bugs, and patterns across sessions and projects.MIT