world-model-mcp
World Model MCP
AIコーディングエージェント向けの永続メモリ+オプションの署名付き監査。
world-model-mcp は、AIコーディングエージェント向けの永続メモリに加え、耐量子署名付きでオフライン検証可能な監査証跡(FIPS 205 ハイブリッド Ed25519 + SLH-DSA)を提供します。MITライセンスで、完全にローカルで動作します。
world-model-mcp は、エージェントが毎ターン照会するローカル SQLite ナレッジグラフを同梱しています。ハルシネーションは検証可能になり、修正はセッションをまたいで定着し、リグレッションは本番に載る前に検出されます。監査チェーンを有効にすると、すべてのイベントが FIPS 205 ハイブリッド Ed25519 + SLH-DSA で署名され、オフラインで永久に検証できます。MITライセンス、完全ローカル動作、Claude Code、Cursor、Codex、Continue、Cline、Windsurf、GitHub Copilot Chat、pi、OpenClaw、Hermes Agent を含む10以上のAIコーディングエージェントに対応しています。
最新: v0.16.2。
world-model demoは、最後にライブの公証ビートを実行します: 3つのサンプル決定が実際のハイブリッド署名エポック(Ed25519 + SLH-DSA-SHA2-128f、FIPS 205)に署名され、VALID と検証され、1バイトを変更してタンパー検出がライブで作動することを証明し(INVALID)、その後復元されます。サインアップ不要、トークン不要、ネットワーク不要。カレントディレクトリにworld-model-demo-receipt.jsonを出力し、コピー&ペースト用のetch.systems/verify#<manifest>URL を表示します。v0.16.1 では、ローカルの liboqs ビルドが SLH-DSA なしでコンパイルされた場合に(デモをクラッシュさせる代わりに)グレースフルにスキップするようになりました。完全なバージョン履歴は CHANGELOG.md にあります。
10秒で試す
pip install -U world-model-mcp && world-model demo3つのサンプル決定がタンパー検出可能なエポックに署名され、その後デモが1バイトを変更して再検証し、タンパーが即座に検出されること(INVALID)を証明し、その後復元して再検証します(再びVALID)。オフライン、アカウント不要、ネットワーク不要です。world-model-demo-receipt.json がカレントディレクトリに出力され、共有可能な etch.systems/verify#… URL が表示されるので、誰でもブラウザで同じレシートを確認できます。
mcp-name: io.github.SaravananJaichandar/world-model-mcp
Related MCP server: Scrooge
マネージドホステッド版をお好みですか?
OSSサーバーを自分で運用せずに同じ署名付き監査チェーンを利用したい場合は、etch.systems がこのパッケージをオフライン参照検証器として使用するマネージド版を提供しています。
運用するインフラは不要(サインアップなしで30秒で最初のイベントをPOST)
SR 11-7、EU AI Act 第12条、ISO 42001、NIST AI RMF、SOC 2 CC7 へのコンプライアンスフレームワーク対応
エンドツーエンドで提供される外部アンカリング(Sigstore Rekor + Bitcoin OpenTimestamps)
MCPクライアントツール(Claude Code、Cursor、Continue、Cline、Codex)間での鍵ローテーションと委任を備えたポータブルなエージェント単位のアイデンティティ
オフライン検証器は同じまま:
pip install world-model-mcp && etch-verify manifest.jsonは、ホステッドサービスがオンラインであることに依存せず、固定された公開鍵に対してホステッドチェーンを検証します
curl -X POST https://etch.systems/v1/your-projectベアラートークンと、任意のMCP互換クライアントを接続できるMCPエンドポイントを返します。完全なドキュメントは etch.systems にあります。
FAQ
world-model-mcp とは何ですか? world-model-mcp は、AIコーディングエージェント向けの永続メモリに加え、耐量子署名付きでオフライン検証可能な監査証跡を提供し、エージェントが毎ターン照会するMCPサーバーとして公開されます。完全にローカルで動作し、MITライセンスのPython+10以上のAIコーディングエージェント向けのオプションのアダプタとして提供されます。
Mem0、Letta、その他のエージェントメモリツールとは何が違うのですか?
world-model-mcp は、メモリと並行してハイブリッド耐量子署名付き監査チェーン(FIPS 205 Ed25519 + SLH-DSA-SHA2-128f)を提供し、オフライン参照検証器(etch-verify)と、ホステッドの etch.systems コンパニオン経由で利用可能な二重外部アンカリング(Sigstore Rekor + Bitcoin OpenTimestamps)を備えた、唯一のエージェントメモリツールです。同種のツール(Mem0、Letta、agentmemory)は、署名付き監査チェーンなしでメモリのみを提供します。メカニズム別の内訳は下の「比較」表を参照してください。
監査証跡は耐量子セキュリティを備えていますか? はい。閉じられた各エポックにはハイブリッド署名が付与されます: Ed25519(古典)+ SLH-DSA-SHA2-128f(FIPS 205 ステートレスハッシュベース耐量子署名)。将来、Ed25519だけを破る量子敵対者でも、同じペイロードに対するSLH-DSA署名に直面することになります。チェーンを偽造するには両方の署名を偽造する必要があります。
アカウントなしでオフラインのレコードを検証するにはどうすればよいですか?
pip install -U world-model-mcp && world-model demo を実行してください。デモは3つのサンプル決定を実際のハイブリッド署名エポックに署名し、etch-verify CLI が読み取るのと同じマニフェスト形式をエクスポートして VALID と検証し、1バイトを変更してタンパー検出がライブであることを証明し(INVALID)、その後復元して再検証します。world-model-demo-receipt.json がカレントディレクトリに出力され、誰でもブラウザでレシートを確認できる etch.systems/verify#… URL が表示されます。サインアップ不要、ネットワーク不要です。
対応しているAIコーディングエージェントはどれですか?
Claude Code、Cursor、Codex、Continue、Cline、Windsurf、GitHub Copilot Chat、pi、OpenClaw、Hermes Agent です。それぞれに github.com/SaravananJaichandar/world-model-mcp-<agent>-starter の下に専用のスターターレポジトリがあります。MCPワイヤーフォーマットは標準なので、MCP対応クライアントなら同じツールを利用できます。
このOSSパッケージとホステッドの etch.systems サービスのどちらを使うべきですか?
独自のインフラで監査チェーンを運用したい場合や、社内ツールに署名付きメモリを追加したい場合は、このOSSパッケージ(MITライセンス、完全ローカル)を使用してください。同じ監査チェーンを、コンプライアンスフレームワーク対応(SR 11-7、EU AI Act 第12条、ISO 42001、NIST AI RMF、SOC 2 CC7)とMCPクライアントツール間のポータブルなエージェント単位のアイデンティティを備えたマネージドサービスとして利用したい場合は、etch.systems を使用してください。オフライン参照検証器はどちらの場合も同じです: pip install world-model-mcp && etch-verify manifest.json は、OSS生成またはホステッド生成のいずれのマニフェストも、固定された公開鍵に対して検証します。
他のエージェントメモリ+エージェント監査プロジェクトとの比較
エージェントメモリ領域が収束しつつある監査/署名/アンカリングの各次元について、名前を挙げた8つの競合製品との直接比較のポジショニングです。world-model-mcp の各セルには来歴フラグが付いています: own = 出荷製品で測定/観察されたもの、cited = 競合他社自身の公開ランディングページ、リポジトリ、またはプレスから取得したもの。
この表のソース・オブ・トゥルースはホステッドサービスのリポジトリにあります: world-model-mcp-hosted/src/etch/competitor_matrix.py。どちらかを変更した場合は両方の場所で更新してください。
world-model-mcp (このリポジトリ) + Etch (ホステッド) | Mem0 | Letta | agentmemory | Unicity AOS | Repowise | Trinitite | Caura | FailproofAI | |
署名方式 | Ed25519 + SLH-DSA-SHA2-128f (ハイブリッド) | なし(保存時暗号化のみ) | なし | なし | BLAKE3 ハッシュチェーン | 決定論的シグナル(署名なし) | 署名 + ハッシュチェーン(アルゴリズム非開示) | なし | 開示なし |
ポスト量子対応 | はい(SLH-DSA、NIST FIPS 205) | いいえ | いいえ | いいえ | いいえ(BLAKE3 ハッシュのみ) | いいえ | 非開示 | いいえ | いいえ |
オフライン参照検証ツール | etch-verify CLI、ストリーミング、PyPI パッケージに同梱 | いいえ | いいえ | いいえ | 非開示 | いいえ(SaaS のみ) | ブラウザベースの検証ツール | いいえ | いいえ |
アテステーション周期の強制 | 定期実行 systemd タイマー + オンデマンド検証 | いいえ | いいえ | いいえ | 非開示 | いいえ | 定期アテステーション実行 | いいえ | いいえ |
フレームワーク対応(条項 / 管理策 ID) | EU AI Act Art. 12-15, SOC 2 CC6.6/7.2/7.3, ISO 27001 A.12.4/A.14.2 | SOC 2 + HIPAA(バッジのみ、管理策ごとの対応なし) | 非開示 | いいえ | 非開示 | EU AI Act(ネガティブスペースによる主張) | 条項ごとの引用(EU AI Act、SOC 2、SR 11-7) | SOC 2 取得中バッジ | SOC 2 エンタープライズ層のみ |
ドリフト検出 | エポックごとのチェーン整合性 + アテステーション傾向 | いいえ | 成功率 + エラー追跡 | いいえ | 非開示 | コードヘルススコアの差分 | 決定論的リプレイ + リスクスコアの差分 | いいえ | 評価器スコアの差分 |
アノテーションサポート(チェーン内の署名付き人間メモ) | pin_annotation MCP ツール、同じチェーンに署名 | いいえ | いいえ | いいえ | 非開示 | いいえ | 非開示 | いいえ | いいえ |
ブラウザ検証ツール | はい、/auditor/<slug> のチェーン整合性ウィジェット | いいえ | いいえ | いいえ | 非開示 | いいえ | はい | いいえ | いいえ |
共有リンク(監査人アクセス、ログイン不要) | はい、期限付き共有トークン(bs_ プレフィックス、最大30日) | いいえ | いいえ | いいえ | 非開示 | いいえ | はい、期限付き監査人アクセス | いいえ | いいえ |
外部アンカー(独立証人ログ) | 二重:Sigstore Rekor + Bitcoin OpenTimestamps(公開、プロジェクトごとにオプトアウト) | いいえ | いいえ | いいえ | 内部ハッシュチェーンのみ(外部ログなし) | いいえ | 非開示 | いいえ | いいえ |
OSS ライセンス | MIT(world-model-mcp) | Apache 2.0 | Apache 2.0 | Apache 2.0 | 非開示 | AGPL v3(コア) | OSS なし | Apache 2.0 | OSS なし |
GitHub スター数 | etch.systems/api/oss-stats 経由のスナップショット | 61.6k | 23.9k | 24.9k | 7.1k | 4.2k | 公開リポジトリなし | 373 | 公開リポジトリなし |
公開資金調達 | 自己資金 | $24.5M | $10M | 非開示 | $3M シード 2026年2月 | 非開示 | 非開示 | 非開示 | 非開示 |
コンプライアンス体制(ランディングページでの主張) | SOC 2 Type I 取得中(2026年8月目標) | SOC 2 + HIPAA(トラストサブドメインにバッジ) | 非開示 | コンプライアンス体制なし | コンプライアンス体制なし | SOC 2 なし、EU AI Act のネガティブスペースによる主張 | 条項ごとのコンプライアンス枠組み | SOC 2 取得中バッジ | SOC 2 エンタープライズ層 |
この表の読み方:
太字のセルは、このリポジトリ(OSS)またはホステッドサービス(etch.systems)で提供されるメカニズムを示します。
競合他社のセルは、各競合の公開ランディングページ / リポジトリ / プレスから引用したものです。当社による測定ではありません。
world-model-mcpセルにある[own]は、当社自身がそのメカニズムを測定・観察したことを意味します。[cited]は、その値が第三者ソースからのものであることを意味します。この表には、監査 / 署名 / アンカリングの側面のみが含まれます。一般的なメモリ機能(検索精度、アダプタの幅、LLM サポート)については、下記の機能セクションで説明します。
数値
ベンチマーク | スコア | 詳細 |
単一試行の上限として +10.2 ポイント(49 のペアインスタンスで 67.3% → 77.6%);マルチシード平均効果は インスタンスあたり +0.24、95% CI [0, 0.47] | 事前登録済み、Claude Code 2.1.177 ヘッドレス、Zenodo DOI 10.5281/zenodo.21076824。ドメイン内 +15.0 ポイント、クロスドメイン +6.9 ポイント、単一試行分割では回帰ゼロ。 | |
100.0%( | 105 ペア × 19 カテゴリ、決定論的(LLM なし)。v0.11.0 から出荷。 | |
100.0% 完全一致 | 12 の手動ラベル付きペア(4 件が根拠あり、4 件が部分的、4 件が幻覚)。独立した Coach LLM によるレイヤー 3 の敵対的検証。v0.12.12 から出荷。 |
SWE-bench の数値が主要な実証的主張です。他の 2 つは、出荷済みコンポーネントの内部正確性ベンチマークです。再現スクリプトは各ベンチマークディレクトリまたはリンク先リポジトリにあります。
テスト
1,494 のユニットテスト + 統合テスト + ファズテスト(出荷済みコードベース全体)。カバレッジ下限は 71% / 66% にゲートされています(liboqs に SLH-DSA を含む CI ランナーと含まない CI ランナー向けの 2 段階)。
# Run tests
pytest -q
# With coverage
pytest --cov=world_model_server --cov-report=term-missing
# Fuzz targets (Atheris, requires Clang / libFuzzer)
python fuzz/fuzz_verify_manifest.py fuzz/corpus/ -max_total_time=60
# Non-Atheris smoke fuzz (runs in every CI pass, no system deps)
pytest tests/test_fuzz_smoke_verify.py -q特筆すべきテストスイート:
FIPS 205 SLH-DSA 既知回答テスト(
tests/test_fips_205_slh_dsa_kat.py):SLH-DSA-SHA2-128f のパラメータサイズを固定(公開鍵 = 32 バイト、秘密鍵 = 64 バイト、署名 = 17,088 バイト)、誤った鍵 + 誤ったメッセージ + 変異した署名の拒否を含む署名/検証ラウンドトリップ、さらに恒久的に true を検証しなければならない固定 KAT ベクターフィクスチャ(tests/fixtures/slh_dsa_kat_vectors.json)。ストリーミング検証ツールのバイトパリティ(
tests/test_etch_verify_streaming.py):インメモリエクスポーターとストリーミングエクスポーターの間でバイト単位で同一の出力を固定します。これにより、監査人がマニフェストを記録の成果物としてハッシュ化した場合、オペレーターがどちらのエクスポーターを使用したかに関係なく、同じmanifest_sha256が得られます。矛盾ベンチマーク(
benchmarks/contradictions-200/):105 ペア × 19 カテゴリ、決定論的。すべてのコミットでauto戦略を 100% に固定します。
CI はすべてのプッシュでカバレッジ下限と完全なテストスイートをゲートします。.github/workflows/pytest.yml を参照してください。
認証済み監査チェーン(v0.13+、オプトイン)
監査証跡を暗号的に検証可能にする必要があるデプロイメント(SOC 2、HIPAA、EU AI Act、または自社の内部管理策リスト)向け:
export WORLD_MODEL_AUDIT_LOG=on
# then start the world-model-mcp server as normal初回のオプトイン起動時に、サーバーは既存のaudit.dbファイル内に2つの新しいSQLiteテーブル(tamper_evident_logとtamper_evident_epochs)を作成し、最初のエポック終了時に新しいハイブリッド鍵ペアを生成します。以降のすべてのイベントはSHA-256マークルチェーンに追記されます。エポックが終了するとき(デフォルト: 1024イベント)、チェーンルートはハイブリッドなEd25519 + SLH-DSA-SHA2-128fエンベロープで署名されます。古典暗号+耐量子暗号の組み合わせにより、仮に楕円曲線暗号が破られたとしても、監査証跡は無傷のまま残ります。
オフラインで永久に検証可能。
etch-verifyCLIはPyPIパッケージに同梱されています。監査人は自分のラップトップで実行するだけで、初期ダウンロード後はネットワークアクセスは不要です。署名は順序だけでなく作者を証明します。 ハッシュチェーン方式では改ざんされていないことは証明できても、誰が署名したかを証明することはできません。このチェーンはその両方を満たします。
ダッシュボード不要、サインアップ不要、外部サービス不要。 ローカルSQLiteに対してプロセス内で完全に動作します。
詳細はdocs/AUDIT_LOG.mdをご覧ください。
KMSバックアップ鍵、公開透過性ログ、Sigstore Rekor + Bitcoin OpenTimestampsへの外部アンカリング、コンプライアンス向けオペレーターダッシュボードを追加したホステッド版については、Etchコンパニオンを参照してください。
クイックスタート
最も一般的な3つのインストール方法です。その他の対応クライアント(Cursor、Cline、Codex、Continue、Copilot、Windsurf、Goose、pi、OpenClaw、Hermesなど)については、etch.systems/docs/installを参照してください。
オプション1: Claude Desktop(ワンクリック)
Releasesから最新の.mcpbをダウンロードし、Claude Desktopにドラッグ&ドロップします。フック、MCPサーバー設定、依存関係が自動インストールされます。
オプション2: Claude Code / IDEプラグイン(pip install)
# 1. Install the package
pip install world-model-mcp
# 2. Set up in your project (auto-seeds the knowledge graph from existing code)
cd /path/to/your/project
python -m world_model_server.cli setup
# 3. Restart Claude Code
# Done. The world model is pre-populated and active.次のステップ(任意): ローカルの署名付き監査ログを、ホステッドのEtchノータリーで監査人検証可能なチェーンに変換できます。KMSバックアップ鍵、公開透過性ログ、外部アンカリング、監査人向け共有リンクを備え、インフラの運用は不要です。ホステッドコンパニオン: Etchを参照してください。
オプション3: リモート / MCPトンネルデプロイ用のHTTPトランスポート
pip install 'world-model-mcp[http]'
python -m world_model_server.server --transport http --port 8000MCPをStreamable HTTP経由で公開し、リモートエージェントがネットワーク越しに接続できるようにします。認証、CORS、リバースプロキシ設定についてはdocs/http_transport.mdを参照してください。
その他のクライアント
OSS CLI経由でインストールします。各コマンドはそのクライアントに適した設定を書き込みます(デフォルトではsys.executableをインタープリターパスとして使用、クライアントごとのフォーマットに対応、--forceおよび--dry-runフラグによる上書き防止機能付き):
python -m world_model_server.cli install-cursor # Cursor
python -m world_model_server.cli install-cline # Cline
python -m world_model_server.cli install-codex # Codex
python -m world_model_server.cli install-continue # Continue (also --global)
python -m world_model_server.cli install-copilot # GitHub Copilot Chat (VS Code Insider)
python -m world_model_server.cli install-windsurf # Windsurf
python -m world_model_server.cli install-pi # pi
python -m world_model_server.cli install-openclaw # OpenClaw
python -m world_model_server.cli install-hermes # Hermes (MCP mode)
python -m world_model_server.cli install-hermes-provider # Hermes (Elixir-native provider)クライアントごとの完全なチュートリアル(検証コマンド+トラブルシューティング付き)はetch.systems/docs/installにあります。
機能概要
world-model-mcpは、AIコーディングエージェントとその作業の間に位置する時間的知識グラフです。コードベースから事実、エンティティ、制約を記録し、編集境界で学習済みの制約に対してすべてのコード変更を検証し、コンテキストウィンドウ圧縮後に関連コンテキストを再注入し、信頼度重み付けによる解決で矛盾を追跡し、独立したCoach LLMによる敵対的検証で取得結果を検証します。
機能
1. 幻覚防止。 記録されたすべての事実には来歴(asserted_by、confirmer、confirmation_state、evidence_type)が付与されます。エージェントが事実を照会すると、回答とともに信頼度スコアが返されます。2つの事実が矛盾する場合、新しい方/信頼度の高い方が優先され、敗れた方はsuperseded_byとして保持されます。エージェントは保存された事実が現在も有効かどうかを推測する必要がありません。
2. 修正からの学習。 エージェントを修正すると(record_correction)、その修正は関連エンティティを含むファーストクラスのイベントとして保存されます。次回エージェントがそれらのエンティティに関連する何かを照会すると、修正が最初に表示されます。修正はセッションをまたいで、コンテキスト圧縮をまたいで、エージェントの再起動をまたいで保持されます。
3. 回帰防止。 すべてのコード変更提案はvalidate_changeを通過します。これは制約グラフを走査し、編集が適用される前に違反を返します。制約はコードベースから自動的に学習され(seed_project)、PRレビューコメントによって強化され(ingest_pr_reviews)、手動で作成されます(record_event)。エージェントは違反、提案、制約の出典を確認できます。
4. Coach-Player敵対的検証。 Playerエージェントが決定を起草します。独立したCoachエージェントがグラフを再照会して先例を探し、マークル証明を検証し、ハイブリッド署名を確認してから承認します。CoachはPlayerの要約を決して信頼せず、毎回署名済み台帳に対して再検証します。12組の手動ラベル付きペアで100%完全一致。
完全な技術アーキテクチャはdocs/ARCHITECTURE.mdにあります。
MCPツール
8つのツールが同梱されています。1行の概要です。各ツールのシグネチャと例についてはdocs/mcp/の各項目をクリックしてください。
ツール | 機能 |
| 来歴+信頼度+出典付きで保存済みの事実を取得 |
| 監査チェーンにイベントを追記( |
| 学習済み制約に対してコード変更提案をチェックし、違反+提案を返す |
| エンティティまたはファイルパターンに一致するすべての制約を一覧表示 |
| ユーザーの修正を保存し、次回の関連クエリで再表示させる |
| 指定ファイルに影響するバグ+ファイルごとのリスクスコアを取得 |
| 既存のコードベースを知識グラフに一括取り込み |
| 最近のPRレビューコメントを制約に変換 |
完全なツールドキュメントはdocs/mcp/にあります。
ホステッドコンパニオン: Etch
world-model-mcpをローカルで実行していますか?Etch (etch.systems)は、同じOSSコア上に構築されたホステッドガバナンスプレーンであり、コンプライアンスチームが本番利用を承認するために必要な機能を追加します:
KMS暗号化署名鍵(保存時は平文にしない)
署名付きヘッドを持つ公開透過性ログ(分割ビュー耐性)
Sigstore Rekor + Bitcoin OpenTimestampsへの外部アンカリング(二重独立証人)
セッショントレース、チェーン整合性ビュー、PIIスキャン、クライアント回答PDFエクスポートを備えたオペレーターダッシュボード
スタンドアロン監査CLI+
/auditor/<slug>のブラウザ検証ツール無料ティア、それを超えると従量課金
同じ暗号プリミティブ、同じ監査ログスキーマ、同梱OSSへのソース変更ゼロ。スタンドアロンで実行している場合はスキップしてください。
どちらが自分に適しているか?
状況 | ルート |
ローカルのAIコーディングエージェント用に永続メモリが欲しい |
|
6ヶ月後に規制当局にエージェントの決定を証明したい | |
裁判所が自己認証できる署名付き証拠バンドルが欲しい | |
署名付き監査履歴のチーム間・ベンダー間連携が欲しい | |
両方試してみたい | ローカルで |
仕組み
world-model-mcpは、SQLiteをバックエンドとする時間的知識グラフを公開するMCPサーバー(stdioまたはStreamable HTTP)です。エージェントの各ターンはグラフを照会し、各コード変更や修正は書き戻されます。起動時にサーバーは既存のコードベースから自動シードし、シャットダウン時にクリーンにフラッシュします。
.claude/world-model/配下の6つのデータベース:
entities.db: ファイル、関数、クラス、シンボルfacts.db: 来歴+信頼度付きの意味的事実relationships.db: 依存関係、呼び出し、インポートconstraints.db: エージェントが尊重すべき学習済みルールsessions.db: セッションごとのコンテキスト追跡events.db: 不変イベントログ(オプトイン時の監査チェーン)
図解付きの完全なアーキテクチャはdocs/ARCHITECTURE.mdにあります。
設定
環境変数(すべて任意):
変数 | 目的 | デフォルト |
| 署名付き監査チェーンを有効化 |
|
| SQLiteデータベースディレクトリを上書き |
|
| 匿名OSSテレメトリーにオプトイン(プライバシーを参照) |
|
| オプションのLLMバックアップ機能を有効にする場合のみ使用 | なし |
完全な設定リファレンスはdocs/CONFIGURATION.mdにあります。
プライバシーとセキュリティ
テレメトリーはデフォルトでオフ。
WORLD_MODEL_TELEMETRY=onでオプトインすると、集計されたインストールレベルのメトリクスがetch.systems/api/telemetry/ingestに送信されます(エンドポイントURLのみ、ソースコードなし、プロンプトなし、PIIなし)。DELETE /api/telemetry/install/{install_id}による消去権に対応。コア操作に
ANTHROPIC_API_KEYは不要。 一部のオプション機能(Coach-Playerレイヤー3検証、LLMバックアップ再ランキング)は、キーが提供された場合にAPIを使用します。キーがなくても、その他すべては動作します。セキュリティ問題の報告: security@etch.systemsまでメールしてください。PGPキーはリクエストに応じて提供します。
完全な詳細はdocs/PRIVACY.mdにあります。
コントリビューション
コントリビューションを歓迎します。開発環境のセットアップ、コーディング標準、言語サポートの追加、テストの作成、PRの提出についてはCONTRIBUTING.mdを参照してください。
特に支援が求められている分野:
言語パーサー(Go、Rust、Java、C++)
追加のMCPクライアントアダプター
フレームワーク統合(LangGraph、CrewAI、AutoGen、LlamaIndex。スターターシムはホステッドリポジトリにあります)
benchmarks/へのベンチマーク貢献
最初のPRの前にCLA.mdをお読みください。
ライセンス
MITライセンス。商用・個人利用ともに無料です。
リンク
完全なバージョン履歴: CHANGELOG.md
ドキュメント: docs/
ホステッドサービス: etch.systems
ベンチマーク: benchmarks/ + coding-agent-memory-benchmark
サポート: support@etch.systems
Zenodo(正式引用): DOI 10.5281/zenodo.20834508
Available Tools
31 toolsexport_claude_mdB
Generate a CLAUDE.md document from the knowledge graph (top constraints, recent decisions, known bug regions, co-edit patterns).
| Name | Required | Description | Default |
|---|---|---|---|
| max_constraints | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It states it generates a document but does not clarify whether it writes to a file, returns content, or has side effects. It also fails to mention any permissions, limits, or output format, leaving key behavioral aspects ambiguous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with a clear verb and object, followed by a parenthetical list of content categories. It is concise and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description should explain return values, side effects, and parameter behavior. It only covers purpose and content categories, leaving critical operational details absent for an export tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the only parameter, max_constraints. The description broadly references 'top constraints' but does not explain that max_constraints limits that section, nor its units or effect on other sections. The parameter semantics are only indirectly inferable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Generate') and identifies the resource ('CLAUDE.md document from the knowledge graph'), and it lists the included content categories (top constraints, recent decisions, known bug regions, co-edit patterns), distinguishing it from sibling tools that query individual aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for producing an aggregated CLAUDE.md from knowledge graph data, but it does not explicitly state when to use this tool versus querying individual components via siblings like get_constraints or get_decision_log. It lacks explicit exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_contradictionsC
Find pairs of facts that contradict each other based on similarity and status differences
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It doesn't state whether the tool is read-only, what the output looks like, or any side effects. The hint about 'similarity and status differences' is the only behavioral clue, but it's insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise and front-loaded, but it sacrifices necessary detail. It's not bloated, but it's under-specified. The brevity doesn't earn its place because it lacks critical information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has two parameters, no output schema, and no annotations. The description provides no information about return values, parameter usage, or behavioral context. It is far from complete even for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has two parameters (limit, query) with zero descriptions, and the description doesn't mention them at all. Since schema coverage is 0%, the description fails to compensate, leaving the agent with no understanding of what these parameters do.
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 finds pairs of contradicting facts, using a specific verb ('Find') and resource. It adds a hint of the method ('similarity and status differences'), but doesn't explicitly differentiate from sibling tools like resolve_contradiction, though the distinction is evident from the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. It doesn't mention any exclusions or prerequisites, leaving the agent to infer usage solely from the vague description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agents_md_constraintsA
Parse AGENTS.md / CLAUDE.md / GEMINI.md / .agents/skills/*.md in the project and return declarative constraints. Mixed into PreToolUse enforcement automatically; this tool exposes the same data for inspection.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | No | ||
| project_dir | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It explains the parsing action and its role in enforcement, but does not mention whether it performs a read-only operation, how missing files are handled, or any potential side effects. The context about automatic enforcement adds value but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main action and scoped to specific files. Every phrase contributes meaning, and the inspection/enforcement contrast adds valuable context without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose and its relationship to PreToolUse enforcement, giving useful context. However, it omits parameter semantics and the exact return format (beyond 'declarative constraints'), which is especially important since there is no output schema. The lack of detail on expected inputs and outputs leaves gaps for an agent trying to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has two parameters (file_path and project_dir) with no descriptions and 0% coverage. The description does not mention either parameter, leaving their specific purpose and format ambiguous. For example, it is unclear if file_path is optional or relative to project_dir. The description fails to compensate for the complete lack of schema guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it parses AGENTS.md / CLAUDE.md / GEMINI.md / .agents/skills/*.md and returns declarative constraints. This specific verb+resource distinguishes it from the sibling tool get_constraints, which likely covers broader constraint sources.
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 notes that the data is 'Mixed into PreToolUse enforcement automatically' and that this tool 'exposes the same data for inspection,' implying it is intended for inspection/debugging rather than direct enforcement. It provides clear context but does not explicitly name alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audit_log_headA
v0.13 tamper-evident audit log. Return the current head state (last log entry seq, last closed epoch seq, unclosed-entry count) plus the full closed-epoch chain with hybrid signature envelopes. Compliance auditors call this periodically to verify no operator misbehavior has occurred since the last check. Requires WORLD_MODEL_AUDIT_LOG=on at server startup.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the tamper-evident nature, the return content, and a runtime prerequisite (WORLD_MODEL_AUDIT_LOG=on). It adds meaningful operational context beyond a simple 'get' but stops short of stating read-only semantics explicitly.
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 only two sentences but packs in the purpose, return value details, use case, and a critical prerequisite. Every clause earns its place with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, read-only operation with no annotations or output schema, the description covers all essential aspects: what it does, what it returns, when to use it, and what server configuration is required. An agent has enough to deploy it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the schema is empty. The description explains what the tool returns, which is the only meaningful semantic content in this case. Baseline 4 applies since there are no parameters to describe.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Return' and names the resource 'audit log head state' plus the 'closed-epoch chain', clearly defining what the tool does. This differentiates it from other audit-related siblings like get_compaction_audit.
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?
It explicitly states a use case: 'Compliance auditors call this periodically to verify no operator misbehavior has occurred since the last check.' This gives clear context on when to use it, but it does not mention alternatives or exclusions, so it misses the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_co_edit_suggestionsB
Get files commonly edited alongside the given file based on historical patterns
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It mentions 'based on historical patterns' which adds some context, but it does not describe whether the operation is read-only, how suggestions are ranked, what format the results take, or any potential side effects. This is insufficient for full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the action and resource. Every word earns its place, and there is no superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with two parameters, but the description leaves major gaps: no usage guidance, no parameter details, and no mention of return values (no output schema). For an agent to use this correctly, it needs more context about how suggestions are generated and what to expect from the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero description coverage (0%) for its parameters, and the description does not compensate. It references 'the given file' (mapping to file_path) but does not clarify the expected format, the meaning or usage of 'limit', or any constraints. The description adds minimal value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'files commonly edited alongside the given file', with the basis 'historical patterns'. It is specific and distinguishes itself from the sibling tools, none of which share a similar focus on co-edit suggestions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention any exclusions, prerequisites, or conditions, leaving the agent without context for selecting it among the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_compaction_auditA
List recent compaction audit entries, most-recent first. Filter by session_id or limit count.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| session_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It discloses the ordering (most-recent first) and the available filters (session_id, limit), which is useful. However, it does not mention whether the operation is read-only, whether limit has a default, or describe the return format or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that delivers all key information without redundancy. Every clause adds functional value, and there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list/filter tool, the description covers the essential purpose and options. However, with no output schema and no annotations, the agent is left without knowledge of the returned fields, default limit behavior, or error cases. This is adequate for simple use but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must add meaning. It does clarify that session_id filters and limit controls the count, which is helpful. However, the semantics are shallow: it does not specify whether limit is mandatory, its maximum/default value, or whether session_id requires exact or partial matching.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists compaction audit entries in reverse chronological order. It names the specific resource (compaction audit entries) and the action (list), which differentiates it from write-oriented siblings like record_compaction_audit. However, it does not explicitly distinguish from the similar get_audit_log_head tool, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for inspecting compaction audit history, and the mention of filtering suggests relevant scenarios. However, it provides no explicit guidance on when to prefer this over alternatives like get_audit_log_head, and there are no exclusions or prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_constraintsA
Get constraints (linting rules, patterns, conventions) for a file
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| constraint_types | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It implies a read-only operation ('Get') but does not disclose potential behaviors such as error handling for missing files, whether it searches the entire repository, or if any filtering is applied beyond the optional constraint_types parameter. The description adds some clarity by defining constraints, but does not reveal side effects or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently communicates the tool's purpose without extraneous words. It earns a high score for being concise and structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (read operation, 2 parameters, no output schema), the description is mostly complete. It states what the tool does and the schema covers parameter details. However, it does not specify the return format or behavior when no constraints are found, which could leave some ambiguity for the agent. Still, for a straightforward getter, it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must compensate. It does so by explaining that constraints include 'linting rules, patterns, conventions', which helps interpret the constraint_types enum. However, it does not explicitly map parameters or explain the file_path semantics beyond the name. The schema itself provides the enum values, offering adequate baseline 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 clearly states the tool retrieves constraints for a file, using the verb 'Get' and specifying the resource and scope. It also clarifies what constraints are (linting rules, patterns, conventions). However, it does not explicitly distinguish from the sibling tool 'get_agents_md_constraints', which may overlap in purpose for specific files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when constraints for a file are needed, but provides no explicit guidance on when to use this tool versus alternatives like 'get_agents_md_constraints' or when not to use it. It lacks exclusions and alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_context_for_actionC
Pre-action context bundle: constraints, decisions, bugs, co-edits, related facts, and risk score for a file before editing
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| action_type | Yes |
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. It lists the content components but does not state whether the tool is read-only, how errors are handled, what the risk score means, or how the bundle is returned. This is a significant gap for a retrieval tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a concise noun phrase that front-loads the core purpose and lists contents, but it lacks a verb and reads more like a label than a full sentence. It is not overly verbose, yet it could be more structured with a clearer main clause.
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 two parameters, no annotations, and no output schema, the description is too sparse. It does not explain the output format, the meaning of the risk score, or how this bundle relates to the individual context tools. The description leaves significant gaps in understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage. The description mentions 'file' which maps to file_path, but action_type is only implied by 'editing' and not explicitly explained. The enum values (edit, create, delete, refactor) are not described, so the description adds minimal meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a pre-action context bundle for a file, listing specific content types such as constraints, decisions, bugs, co-edits, related facts, and risk score. This distinguishes it from sibling tools that target single context types. However, the phrase 'before editing' is slightly inconsistent with the action_type enum which includes create, delete, and refactor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this bundle versus the many sibling tools like get_constraints or get_related_bugs. It implies usage before an action, but there are no exclusions or alternative recommendations, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_decision_logC
Get decision traces showing agent proposals and human corrections
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| file_path | No | ||
| session_id | No | ||
| decision_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It implies a read operation via 'Get', but does not disclose behavior such as default limits, ordering, filtering effects, or whether it is purely read-only. The description focuses on content, not operational 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?
A single, front-loaded sentence with no wasted words. It efficiently states the purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has four parameters, no output schema, and no annotations, yet the description provides no details on return value, parameter usage, or edge cases. It is overly minimal for the tool's apparent complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description does not explain any parameters. It only hints at decision_type through 'corrections', but limit, file_path, and session_id are completely unaddressed.
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 retrieves 'decision traces' with specific content (agent proposals and human corrections), using a specific verb 'Get' that distinguishes it from sibling write tools like record_decision and record_correction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as get_audit_log_head or get_compaction_audit. There is no mention of scenarios, exclusions, or preferred contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_health_reportA
Memory health diagnostics: orphans, stale facts, contradictions, decay candidates, DB sizes
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. The term 'diagnostics' implies a read-only operation, and the listed categories provide concrete insight into what the tool examines. However, it does not explicitly state whether any state is modified or note any performance implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise phrase that effectively communicates purpose and scope without wasted words. It is front-loaded and every element adds value.
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 zero-parameter diagnostic tool with no output schema, the description provides sufficient context about the report's contents. It could be improved by noting the output format, but the current level is adequate for understanding the tool's purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description need not document inputs. The baseline of 4 is appropriate because no parameter information is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function as memory health diagnostics and enumerates specific areas it covers (orphans, stale facts, contradictions, decay candidates, DB sizes). This distinguishes it from narrower sibling tools like find_contradictions or get_compaction_audit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for overall health assessment, but it does not explicitly state when to prefer this tool over siblings or when not to use it. No alternative tools are mentioned, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_injection_contextB
Return a compact constraint+fact bundle for PostCompact / UserPromptSubmit hooks to re-inject after context loss.
| Name | Required | Description | Default |
|---|---|---|---|
| max_facts | No | ||
| event_type | Yes | ||
| project_hint | No | ||
| max_constraints | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It only says 'Return...' without disclosing whether this is a read-only operation, any side effects, how 'compact' is achieved (e.g., truncation, filtering), or what happens if parameters like max_facts are omitted. This lack of behavioral detail is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It is concise and easy to read, though it sacrifices substance for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 parameters, zero schema coverage, no annotations, and no output schema, the description is insufficiently complete. It gives a high-level purpose but lacks details on parameter behavior, return format, and how this tool fits with alternatives. More context is needed for an agent to use it reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it does not. It mentions two of the three event_type values but does not explain max_facts, max_constraints, project_hint, or the SessionStart event. The term 'compact' weakly implies size limits, but no explicit parameter meaning is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a 'compact constraint+fact bundle' for specific hooks (PostCompact/UserPromptSubmit), which distinguishes it from sibling tools like query_fact or get_constraints. However, it could be more explicit about what 'context loss' entails or how it differs from get_context_for_action.
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?
It names specific trigger events (PostCompact/UserPromptSubmit) and the goal of re-injecting after context loss, giving clear context for when to use the tool. It does not explicitly mention alternatives or when not to use it, but the event-specific framing provides adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_pr_reviewsA
Pull GitHub PR review comments and convert them into learned constraints in the knowledge graph
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | GitHub repo (owner/repo). Auto-detected from git remote if omitted. | |
| count | No | Number of recent PRs to scan (default 10, max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the tool converts PR comments into learned constraints, indicating a write operation to the knowledge graph. However, it does not mention idempotency, overwrite behavior, permissions, or any side effects beyond the conversion, which is minimal for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that directly states the action and outcome with no filler. Every word contributes to the meaning, making it highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has only two optional parameters and no output schema, so minimal description might suffice. However, because it is an ingest operation affecting the knowledge graph, a bit more context about result expectations or side effects would improve completeness. It is adequate but not fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds no extra parameter-specific meaning beyond what the schema already provides (repo auto-detection, count default/max). It does not compensate for any missing details, but none are missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('Pull' and 'convert') and identifies the resource ('GitHub PR review comments') and target ('knowledge graph'). It clearly distinguishes itself from sibling tools like get_constraints or record_event by describing a unique ingest-and-transform workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you want to bring PR review comments into the knowledge graph, but it does not explicitly state when to prefer this over alternatives or provide exclusions. Sibling tools like record_correction or validate_change serve different purposes, yet no direct comparison is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pin_annotationA
Attach a signed human annotation (note, override rationale, or intervention record) to a span of agent events. Persists into the annotations table and chains into the same Merkle audit log as agent writes (v0.15.0, ADR-0001). Rationale limited to 8 KB.
| Name | Required | Description | Default |
|---|---|---|---|
| author | Yes | Author identity. Self-asserted in OSS; KMS-verified in Etch hosted. | |
| rationale | Yes | Human rationale text (UTF-8). Max 8192 bytes. | |
| session_id | Yes | Session containing the annotated events. | |
| annotation_type | Yes | ||
| event_range_end | Yes | Last event_id in the annotated span. Equals event_range_start for a single-event annotation. | |
| event_range_start | Yes | First event_id in the annotated span. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and exceeds expectations by disclosing persistence ('Persists into the annotations table'), audit integration ('chains into the same Merkle audit log as agent writes'), version/ADR references, and the rationale size limit. This gives the agent a clear behavioral model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action, and includes only essential extra context (persistence, audit log, limit). Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 required parameters, no output schema, and no annotations, the description provides solid context for a write operation: it explains persistence and audit chaining. It lacks explicit error handling or return behavior, but that is not critical for a basic mutation tool. The description is largely complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 83% coverage (5 of 6 parameters have descriptions), so the baseline is 3. The description adds little beyond the schema; it mentions the 8 KB rationale limit (already in schema) and does not elaborate on parameter meanings or relationships. The schema itself is well-documented, so a baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Attach') and object ('a signed human annotation to a span of agent events'). It distinguishes from siblings like record_event by emphasizing human annotation vs agent events and mentions specific annotation types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case of attaching human notes or overrides to event spans, but provides no explicit guidance on when to choose this tool over alternatives such as record_correction or record_decision. The context is clear but lacks exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
predict_regressionA
Score regression risk for a proposed change to a file based on past bugs, test failures, and constraint violations
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| change_description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses what the tool uses (past bugs, test failures, constraint violations) but does not state whether it has side effects, permissions requirements, or what the output looks like. The methodology hint adds some behavioral context, but safety and operational traits remain undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the tool's purpose and key inputs.
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 two simple parameters and no output schema, the description is adequate for tool selection but does not fully prepare the agent for invocation. It lacks details on input semantics and return value format, though the simplicity and sibling context make it acceptable but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions 'proposed change to a file' which loosely maps to file_path and change_description, but it does not clarify parameter formats, required fields, or examples. The description adds minimal meaning beyond what the property names already imply.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Score') and resource ('regression risk') with the basis ('past bugs, test failures, and constraint violations'). It clearly distinguishes from siblings like predict_test_failures (which targets test failures specifically) and simulate_change (which simulates changes).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for assessing regression risk of a proposed change to a file, but it does not explicitly state when to prefer this tool over alternatives or provide exclusions. Sibling tools like predict_test_failures or validate_change could overlap, and no guidance is given on choosing among them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
predict_test_failuresA
Surface tests likely to fail given a set of edited files
| Name | Required | Description | Default |
|---|---|---|---|
| file_paths | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden for behavioral transparency. It only states the core action without disclosing whether the operation is read-only, what data it relies on, what output format to expect, or any limitations. The description is minimal and leaves the agent without important contextual cues.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action and avoids redundancy. Every word contributes to the core purpose, making it highly concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple (one parameter, no output schema, no annotations), but the description is thin. It communicates the essential purpose, but does not explain what the tool returns (e.g., a list of test names) or provide operational boundaries. It is minimally complete for selection but not fully adequate for invocation without further inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no descriptions for the parameter file_paths (0% coverage). The description adds semantic value by indicating these are 'edited files', clarifying the parameter's intent. However, it does not specify path format, file existence requirements, or other constraints that would be useful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Surface' with a clear resource ('tests likely to fail') and a scope condition ('given a set of edited files'). This distinguishes it from sibling tools like predict_regression and get_related_bugs, which address different aspects of change impact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'given a set of edited files' implies the primary use case, but the description does not explicitly state when to use this tool over alternatives or provide any exclusions. It lacks guidance on how to compare with similar tools like predict_regression.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
promote_constraintB
Promote a constraint from this project to all other registered projects
| Name | Required | Description | Default |
|---|---|---|---|
| constraint_id | Yes | ||
| target_projects | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals the action 'promote' but does not disclose side effects, permissions required, reversibility, or the fact that it likely mutates multiple projects. This leaves significant 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 a single, concise sentence that front-loads the verb and object. It contains no filler or unnecessary detail, making it easy to parse and understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, and the description is minimal. It lacks essential context about the promotion's effects, error conditions, prerequisites, and return values. For a cross-project mutation tool, this is insufficient for an agent to use safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning. It implies constraint_id identifies the constraint, but it does not explain target_projects, its optionality, or how it interacts with the default 'all other registered projects'. The description adds minimal meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'promote' with a clear resource, 'constraint', and a clear scope, 'from this project to all other registered projects'. This distinguishes it from sibling tools like get_constraints (retrieval) and validate_change (validation), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not mention when to use this tool versus alternatives, nor any prerequisites or conditions for promotion. It only states the action itself, leaving the agent without context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prove_entry_inclusionA
v0.13 tamper-evident audit log. Return a cryptographic inclusion-proof bundle for a persisted row_id (fact, constraint, event, or decision ID). Bundle includes the entry, the containing signed epoch (Ed25519 + SLH-DSA hybrid signature envelope), an RFC 6962 Merkle inclusion proof, and the full epoch chain from genesis. Requires WORLD_MODEL_AUDIT_LOG=on at server startup; returns an error object when opt-in is off, when the row_id is not found, or when the entry is in the unclosed backlog.
| Name | Required | Description | Default |
|---|---|---|---|
| row_id | Yes | ID of the fact / constraint / event / decision to prove inclusion for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the exact bundle components (entry, signed epoch, Merkle proof, epoch chain), required server flag, and all error cases, giving a thorough behavioral profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single information-dense sentence that front-loads the primary action ('Return a cryptographic inclusion-proof bundle') and then enumerates bundle contents and failure modes without unnecessary filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by listing the bundle components explicitly. It also covers prerequisites and error scenarios, making it complete enough for a single-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (row_id with description), but the description adds semantic value by specifying that row_id refers to fact, constraint, event, or decision ID, clarifying the expected input beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a cryptographic inclusion-proof bundle for a persisted row_id. It names the specific resource (audit log entries) and distinguishes it from siblings like get_audit_log_head or query_fact by focusing on inclusion proofs.
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 explains when to use it (to prove inclusion of an entry), prerequisites (WORLD_MODEL_AUDIT_LOG=on), and error conditions (opt-in off, row_id not found, unclosed backlog). It does not explicitly mention alternatives, but the scope 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.
query_factB
Query the knowledge graph for facts about entities (APIs, functions, classes, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The search query (e.g., 'User.findByEmail', 'JWT authentication') | |
| context | No | Additional context for the query | |
| entity_type | No | Optional filter by entity type | |
| content_type | No | Optional filter by content_type. Use 'procedure' to explicitly summon procedures (which are excluded from auto-injection by design). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It doesn't state whether the tool is read-only, what the response format is, or that it can retrieve 'rules' and 'procedures' despite being named 'facts'. The term 'facts' may mislead users into thinking only fact-type content is returned, leaving important behavior undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that is front-loaded with the action and resource. Every word contributes to the core purpose without fluff or repetition. It is appropriately 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 general-purpose query tool with no output schema and no annotations, the description is minimal but adequate. It does not explain return values, pagination, or how to decide between this and related sibling tools. The ambiguous scope of 'facts' (vs rules/procedures) is a notable gap, but the schema partially covers this via content_type descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100% with descriptive text for all parameters, so the baseline is 3. The tool description adds no parameter-level meaning beyond what the schema already provides; it only reiterates the general entity focus. The description does not compensate or enhance the schema's parameter docs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('Query') and resource ('knowledge graph') and specifies the object ('facts about entities'). It lists example entity types (APIs, functions, classes) which conveys scope. However, it doesn't distinguish itself from sibling tools like search_global that might also search the knowledge graph, so it lacks explicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance in the description about when to use this tool versus alternatives. The only usage hint ('Use "procedure" to explicitly summon procedures...') appears in the schema's content_type parameter, not the tool description, and it is parameter-level rather than tool-level. No when-not-to-use or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recall_transcript_rangeC
Hydrate a Claude Code session transcript by line range. Lets agents trace a fact back to the exact conversation that produced it.
| Name | Required | Description | Default |
|---|---|---|---|
| line_end | No | ||
| line_start | No | ||
| session_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Hydrate' without explaining whether the operation is read-only, what happens with invalid ranges, whether there are performance or memory implications, or what the response contains. This is a significant gap for a data-retrieval 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 two sentences and front-loaded with the core action. Each sentence contributes meaning: the first states the operational scope, the second provides the motivating use case. It is well-structured and free of fluff, though slightly vague.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a 0% parameter coverage, the description should provide more contextual information about return values, error handling, and when to choose this tool. The current description is insufficient for an agent to confidently invoke the tool correctly in all cases, even though the tool itself is relatively simple.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions 'by line range,' which somewhat clarifies line_start and line_end, but it does not explain session_id, the inclusive/exclusive nature of the range, defaults, or behavior when only one line parameter is provided. The description adds minimal semantic value beyond the schema fields.
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 hydrates a Claude Code session transcript by line range, with a specific use case of tracing facts to their source conversation. This distinguishes it from sibling tools like query_fact, which focus on facts rather than raw transcript retrieval. However, the verb 'hydrate' is somewhat jargon-heavy, and it lacks an explicit contrast with related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool ('Lets agents trace a fact back to the exact conversation that produced it'), which provides some context. However, it does not explicitly state when to prefer this over alternatives like query_fact or get_audit_log_head, nor does it give exclusions or prerequisites. The guidance is present but inferred rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_compaction_auditA
Record a context-compaction event with token counts and what was re-injected. Lets developers audit what was remembered across compaction boundaries.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | ||
| raw_summary | No | ||
| facts_injected | No | ||
| injection_event | No | ||
| pre_compact_tokens | No | ||
| post_compact_tokens | No | ||
| constraints_injected | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavioral traits. It states it records an event, implying a write operation, but does not mention side effects, whether data is appended or overwritten, permissions, or failure modes. This is a significant gap for a tool with no annotation coverage.
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 exactly two sentences, front-loaded with the core action and followed by the purpose. Every word adds value with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 optional parameters, no output schema, and no annotations, the description does not fully equip an agent to use the tool. It lacks information about expected return values, whether any parameters are required in practice, and how this differs from other record_* tools beyond the compaction focus. This is insufficient for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It mentions 'token counts' and 'what was re-injected,' which roughly maps to pre_compact_tokens, post_compact_tokens, facts_injected, and constraints_injected, but it does not explain parameters like injection_event, session_id, or raw_summary. This leaves meaningful ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Record' with the resource 'context-compaction event' and specifies token counts and re-injected content. It clearly distinguishes from siblings like get_compaction_audit (retrieval) and record_event (generic event) by focusing on compaction-specific auditing.
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 clear context: this is for recording compaction events for audit purposes. It does not explicitly mention alternatives or when not to use it, but the specialized language makes the use case evident. There are no exclusions or alternative references, but the context is strong enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_correctionC
Record a user correction to Claude's output (high-priority learning signal)
| Name | Required | Description | Default |
|---|---|---|---|
| reasoning | No | Inferred reason for the correction | |
| session_id | Yes | ||
| claude_action | Yes | What Claude did (tool, file, content) | |
| user_correction | Yes | How the user corrected it |
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. It only states the action is a 'high-priority learning signal', which hints at importance but does not describe side effects, persistence, reversibility, permissions, or any consequences of invoking the tool. This is a significant gap for a mutation-like recording tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, grammatically complete sentence of about ten words. It is front-loaded with the core verb and resource, and the parenthetical adds context without redundancy. Every word earns its place; there is no fluff or tail-heavy content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool involves nested object parameters, no annotations, and no output schema, yet the description stays at a high level. It does not explain how to structure claude_action or user_correction, what counts as a valid correction, or what the tool returns. This leaves an agent under-informed for correct invocation, especially given the complexity of the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, and the description adds no additional meaning beyond what the schema already provides. The phrase 'user correction to Claude's output' loosely maps to claude_action and user_correction but does not clarify their structure or relationships. The 'reasoning' and 'session_id' parameters are not addressed at all in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Record') and identifies the resource ('a user correction to Claude's output'), which clearly conveys the tool's function. The parenthetical '(high-priority learning signal)' adds useful context. However, it does not explicitly differentiate from sibling tools like record_event or record_decision, though 'correction' provides some distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when a user corrects Claude's output, but it gives no explicit 'when to use' vs. alternatives, no exclusions, and no prerequisites. Sibling tools with overlapping purposes (e.g., record_event, record_decision) are not referenced, leaving the agent without clear selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_decisionC
Record a decision trace: what the agent proposed and how the human responded
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | No | ||
| reasoning | No | ||
| tool_name | No | ||
| session_id | Yes | ||
| decision_type | Yes | ||
| agent_proposal | No | ||
| human_correction | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure. It explains what is recorded but not whether the operation is append-only, idempotent, permission-sensitive, or what happens on conflict. No mutation or safety details are given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that is front-loaded with the core action and object. No filler or redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters including nested objects and required fields, the description is far too minimal. It leaves the agent without guidance on required inputs, the decision_type enum, or the structure of nested objects, and there is no output schema to aid expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only hints at 'proposed' and 'human responded', which loosely map to agent_proposal and human_correction. It does not explain required parameters like session_id or decision_type, nor the enum values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's purpose: recording a decision trace with the agent's proposal and human's response. The verb 'record' and resource 'decision trace' are specific, though it doesn't explicitly distinguish from siblings like record_correction or record_event.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided for when to use this tool versus the many sibling tools (e.g., record_correction, record_event). The description does not mention contexts, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_eventC
Record a development event (file edit, test run, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| success | No | ||
| entities | No | Entity names/paths involved | |
| evidence | No | Tool inputs/outputs, file contents, etc. | |
| reasoning | No | ||
| event_type | Yes | ||
| session_id | Yes | ||
| description | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only says 'Record' implying a write operation, but doesn't explain persistence, idempotency, success/failure effects, or whether it appends to a log. This is insufficient for a mutation 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 one short sentence, which is concise, but it under-specifies the tool's behavior. While brevity is good, the sentence doesn't earn its place by providing necessary context, making it closer to under-specification than effective conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 7 parameters, no output schema, and no annotations, the description is far from complete. It doesn't explain required fields, return values, or how the event data is used. The description is only a high-level purpose statement, inadequate for safe and correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 29%, so the description must compensate for missing parameter details. It adds examples for event_type ('file edit, test run'), which is redundant with the enum, but it doesn't explain session_id, description, success, or reasoning. The description adds minimal semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the general action ('Record a development event') with examples, so it's more than a tautology. However, it's vague about what constitutes a 'development event' and doesn't distinguish from sibling record tools like record_test_outcome or record_correction, which likely overlap in purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternative record tools. The description doesn't mention any conditions, prerequisites, or exclusions, leaving the agent without direction for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_test_outcomeC
Record test results and link failures to recent code changes
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| test_results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies a write operation but does not disclose side effects of linking failures, whether it is idempotent, or if it requires an existing session. This lack of behavioral detail leaves the agent uncertain about the tool's impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler or unnecessary details. It efficiently conveys the main purpose and a secondary linking behavior, making it appropriately 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?
The tool has no annotations, no output schema, and a moderately complex input schema with a nested array. The description omits critical information about expected input formats, return behavior, and how the linking works. An agent would likely need additional schema inspection or external knowledge to use this tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not reference session_id or test_results at all. It fails to explain what session_id should be or how to structure the test_results array. The schema provides names/types, but the description adds no semantic value, making it insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the core action ('Record test results') and adds a distinguishing feature ('link failures to recent code changes') that separates it from sibling tools like record_event or record_decision. It is not a mere tautology because it specifies the linking behavior, though it could be more explicit about the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool vs alternatives. It does not mention prerequisites, exclusions, or contexts where other record tools would be more appropriate. The agent must infer usage from the name and minimal description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_contradictionC
Pick a winner between two contradicting facts using a confidence-weighted strategy (auto, keep_higher_confidence, keep_most_recent, keep_most_sources, supersede_a, supersede_b, manual).
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| strategy | No | ||
| fact_a_id | Yes | ||
| fact_b_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavioral traits. It only mentions the strategy selection and does not disclose side effects, persistence, reversibility, or what happens to the losing fact. This is a material gap for a tool that presumably modifies state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately states the primary action and enumerates strategies in a parenthetical list. Every element serves a purpose, with no fluff or redundant repetition of schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations, output schema, and any behavioral details, the description is far from complete. It fails to explain return values, the outcome of the resolution (e.g., which fact is updated), or any prerequisites. This is a mutation-like operation with substantial missing context, making the tool risky to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no descriptions (0% coverage), so the description must compensate. It lists possible strategy values, which adds some meaning, but it does not explain the semantics of each strategy (e.g., what 'auto' does) or describe the 'fact_a_id', 'fact_b_id', and 'notes' parameters beyond their schema names. The compensation is partial and insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Pick a winner' and identifies the resource as 'two contradicting facts,' clearly indicating the tool's purpose. It differentiates from sibling tools like find_contradictions by focusing on resolution rather than detection, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a contradiction exists between two facts and provides a list of strategies, which serves as guidance on how to resolve. However, it lacks explicit exclusions or directives about when not to use this tool versus alternatives, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_globalC
Search entities across all registered world-model projects
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
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 disclosing behavioral traits. It does not mention whether the operation is read-only, how results are returned, or any side effects, leaving significant ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no redundant words. It is efficiently phrased, though it lacks additional structured information that a more complete description might include.
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 search tool with no output schema and no annotations, the description is minimally sufficient but incomplete. It omits return format, pagination behavior, and the meaning of 'entities', leaving the agent without critical execution context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema includes 'query' and 'limit' with no descriptions, and the description adds no parameter-specific information. It does not explain what query syntax is expected or how limit affects results, failing to compensate for the 0% schema description 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 clearly states the action (search), the resource (entities), and the scope (across all registered world-model projects). It distinguishes itself from potential siblings by emphasizing the global scope, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like query_fact. The description only states what it does, leaving it to the agent to infer appropriate usage without any exclusions or comparative context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seed_projectA
Scan the project codebase and populate the knowledge graph with entities and relationships from existing code
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Re-seed already processed files | |
| project_dir | No | Project directory path (defaults to current) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states that the tool populates the knowledge graph but does not disclose whether the operation is idempotent, whether it modifies existing data, or any side effects. The 'force' parameter hints at re-seeding but this behavior is not explained in the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, direct, and front-loaded with the main action. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema or annotations, the description is the sole source of behavioral context. It covers the high-level operation but lacks guidance on prerequisites, idempotency, return values, or potential side effects of running a mutating operation.
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% for both parameters (force and project_dir), so the description does not need to compensate. The description itself adds no parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Scan the project codebase and populate the knowledge graph with entities and relationships from existing code'. It uses a specific verb (scan/populate) and resource (codebase, knowledge graph), distinguishing it from siblings like query_fact (query) or record_event (record).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the tool name 'seed_project' (initial population), but the description provides no explicit when-to-use guidance or alternatives. No mention of when to run this versus other ingestion tools like ingest_pr_reviews or record_event.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
simulate_changeC
Project blast radius and historical outcomes for a proposed change
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| change_description | Yes |
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. It only states what the tool projects but does not indicate whether it is read-only, whether it requires specific permissions, or what outputs to expect. The lack of any side-effect or limitation details is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the core action and object. Every word contributes meaning, and there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should explain what the tool returns or how the output should be interpreted. It does not, and it also omits any caveats or prerequisites. For a simulation tool, this leaves the agent without enough context to use it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the tool description adds no parameter-level detail. The parameter names 'file_path' and 'change_description' are somewhat self-explanatory, but the description does not clarify expected formats, relationships, or how they map to the 'proposed change' concept, so it fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Project') and resource ('blast radius and historical outcomes for a proposed change'), making the purpose clear. It does not explicitly distinguish from sibling tools like 'predict_regression' or 'validate_change', but the focus on blast radius and historical outcomes is distinctive enough for a 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of conditions like 'use when you need to assess impact before applying a change' or references to sibling tools, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_changeB
Validate a proposed code change against known constraints
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| change_type | Yes | ||
| proposed_content | Yes | The new content to validate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the validation intent but doesn't explain whether validation is read-only, what happens on failure, whether it modifies anything, or what 'known constraints' refers to. This lack of transparency for a tool that could have side effects is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence that gets to the point. However, at 8 words, it is extremely terse and could have expanded to include usage context without becoming verbose. It is efficient but slightly under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema and no annotations, the description should explain what the validation result looks like and when to use the tool. It only provides the core purpose, missing critical context about return values, behavior on constraint violation, and relationship to other constraint-related tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 33% of parameters with descriptions (only proposed_content). The tool description does not mention file_path, change_type, or explain the enum values. It adds no semantic value beyond the schema, leaving file_path and change_type under-specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'validate' with a clear object 'proposed code change' and scope 'against known constraints,' which distinguishes it from sibling tools like simulate_change (which implies running a simulation). It clearly states what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used for checking changes against constraints, but it does not explicitly state when to use it over simulate_change or how it relates to get_constraints. No alternatives are named, and no when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_retrievalA
Adversarially verify an answer is grounded in a specific set of facts. An independent Coach LLM call checks each material claim in the answer against the supplied source facts and returns confidence (HIGH / MEDIUM / LOW), verified + unverified claim lists, and per-claim source_pointers. Never raises; failures return LOW + error populated. v0.12.12.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The user query the answer responds to | |
| answer | Yes | The candidate answer under verification | |
| fact_ids | Yes | IDs of facts the caller believes ground the answer. Missing IDs are silently dropped. | |
| verification_model | No | Optional Coach model override. Defaults to config.verification_model (Haiku 4.5). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the independent Coach LLM call, the confidence levels (HIGH/MEDIUM/LOW), the verified and unverified claim lists, per-claim source_pointers, and that it never raises (failures return LOW with error populated). This is excellent behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose, followed by behavior and return details. The version tag 'v0.12.12' adds minor noise but does not detract significantly. Overall, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Since there is no output schema, the description fully explains return values (confidence, claim lists, source_pointers) and error behavior. It is complete for a verification tool, covering what the agent needs to know to invoke it correctly and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add parameter-specific semantics beyond what the schema already provides; it references 'supplied source facts' but leaves parameter details to the schema. This is adequate but not additive.
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+resource: 'Adversarially verify an answer is grounded in a specific set of facts.' It clearly distinguishes the tool from sibling tools like query_fact or validate_change by emphasizing adversarial verification against supplied source facts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use this tool: whenever an answer needs to be checked against a set of facts. It implies the use case without explicit exclusion or alternative reference, but the context is strong 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.15.5- Added
pin_annotation
2 tool updates
v0.13.0- Added
get_audit_log_head - Added
prove_entry_inclusion
1 tool update
v0.12.13- Added
verify_retrieval
1 tool update
v0.12.0- Changed
query_fact1 field changed- added
Input schema / properties / content_typeAdded value: +{ + "description": "Optional filter by content_type. Use 'procedure' to explicitly summon procedures (which are excluded from auto-injection by design).", + "enum": [ + "rule", + "fact", + "procedure" + ], + "type": "string" +}
1 tool update
v0.7.4- Added
get_agents_md_constraints
26 tool updates
v0.7.3- First observed
export_claude_md - First observed
find_contradictions - First observed
get_co_edit_suggestions - First observed
get_compaction_audit - First observed
get_constraints - First observed
get_context_for_action - First observed
get_decision_log - First observed
get_health_report - First observed
get_injection_context - First observed
get_related_bugs - First observed
ingest_pr_reviews - First observed
predict_regression - First observed
predict_test_failures - First observed
promote_constraint - First observed
query_fact - First observed
recall_transcript_range - First observed
record_compaction_audit - First observed
record_correction - First observed
record_decision - First observed
record_event - First observed
record_test_outcome - First observed
resolve_contradiction - First observed
search_global - First observed
seed_project - First observed
simulate_change - First observed
validate_change
TDQS
Scored across 31 tools
Several tools have poorly separated boundaries: validate_change, simulate_change, predict_regression, and predict_test_failures all appear to assess the impact of a proposed change, differing mainly in subtle emphasis. Similarly, query_fact, search_global, and get_context_for_action overlap heavily in fact retrieval, and record_correction, record_decision, and pin_annotation all capture human feedback. An agent would frequently struggle to select the right tool without reading every description.
Every tool follows a consistent snake_case verb_noun pattern, e.g., get_constraints, record_event, predict_regression, prove_entry_inclusion. Even the more unusual names like pin_annotation and seed_project fit the same imperative structure. This is a highly predictable and uniform naming convention.
31 tools is well beyond the 25+ threshold for a single server and will overwhelm tool selection, especially given the many overlapping prediction and retrieval tools. The server would be more coherent with roughly half the current surface area, consolidating related reads and writes into broader commands.
The domain is broadly covered: it supports knowledge-graph population and queries, event and decision recording, constraint ingestion and validation, regression prediction, audit-log integrity, compaction auditing, and context export. Minor gaps exist, such as no explicit fact/constraint update or delete lifecycle and no project listing tool, but the core workflows are well supported.
Maintenance
Related MCP Connectors
Shared project memory for AI coding agents: decisions, lessons, risks and tasks in one graph.
Codebase graphs, caller impact analysis, and recorded project context for AI coding agents.
Governance layer for AI coding agents: knowledge-graph grounding, session audit, policy controls.
Change-aware CI validation and affected-test guidance for coding agents.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceA temporal knowledge graph system that enables users to record and query architectural decisions, implementation patterns, and project failures. It integrates with Claude to provide hybrid search, timeline tracking, and automated knowledge gap detection using graph analysis.4MIT
- AlicenseNot gradedqualityDmaintenanceProvides AI coding agents with pre-edit situational awareness by combining structural call graphs and co-change history to prevent incomplete edits. It surfaces files that historically change together, reducing missed coupled modules.3MIT
- AlicenseNot gradedqualityBmaintenanceEnables coding agents to query a local, versioned knowledge graph of a software project, retrieving overviews, context packs, evidence, and explanations to make informed changes.MIT
- AlicenseAqualityBmaintenanceEnables AI agents to maintain a persistent knowledge graph of a project, providing dependency context, impact analysis, side-effect discovery, and session recording for more informed coding decisions.5MIT