Datumline Agent Guard について
Datumline Agent Guardは、AIエージェントの完了宣言と、マニフェストに記載されたファイルやURLを独立して照合します。エージェントのワークフローやCIのゲートに使え、成果物が欠けていれば検証済みではなくFALSE_DONEと判定します。
主な機能
- 01ファイル、JSONキー、URLの検証
- 02サイズ、内容、ステータス、ハッシュの確認
- 03FALSE_DONEと他の判定の区別
- 04コマンドラインとPythonライブラリ
- 05GitHub Actionによるワークフロー制御
- 06完了確認用MCPツール
活用シーン
- 01出力が欠けたエージェントの申告を拒否
- 02CIで成果物検証をゲートに設定
- 03作業完了を受け入れる前にマニフェストを確認
- 04MCPクライアント経由で成果物を検証
MCP 対応
verify_completion_claimツールをMCPクライアントに提供します。マニフェストまたはそのパスを受け取り、指定されたファイルとURLを確認して検証レシートを返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
1掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| manifest | object | いいえ | マニフェスト:{job, claimed_status, artifacts:[{type, path|url, ...checks}]} |
| manifest_path | string | いいえ | 'manifest' の代わりに指定するマニフェスト JSON ファイルのパス。 |
詳細
datumline-agent-guard
AI エージェントの作業を独立して検証します。エージェントがジョブを COMPLETED と報告すると、agent-guard は生成したと主張する成果物を確認し、判定を返します。成果物が欠けている完了報告は、合格ではなく FALSE_DONE として報告されます。
標準ライブラリのみを使用し、依存関係はありません。監査対象のランタイムから何もインポートしないため、そのランタイムの判断に反する結果を出すことができます。
インストール
pip install datumline-agent-guard
CLI
agent-guard manifest.json # human-readable receipt
agent-guard manifest.json --json # machine-readable receipt
終了コードが 0 になるのは VERIFIED の場合のみです。それ以外の判定では 1(入力不正の場合は 2)で終了するため、CI やエージェントのループのゲートとして使用できます。
マニフェスト
{
"job": "WO-123",
"claimed_status": "COMPLETED",
"artifacts": [
{"type": "file", "path": "out/report.md", "min_bytes": 200, "must_contain": ["## Findings"]},
{"type": "json", "path": "out/feed.json", "required_keys": ["last_marked", "entries"]},
{"type": "url", "url": "https://example.com/feed.json", "status": 200, "must_contain": ["last_marked"]},
{"type": "file", "path": "out/data.parquet", "sha256": "<hex>"}
]
}
相対パスは、現在の作業ディレクトリを基準に解決されます。
判定
| 判定 | 意味 |
|---|---|
VERIFIED | すべての成果物が存在し、すべてのチェックに合格しています |
FAILED | 成果物は存在しますがチェックに失敗したか、完了報告がない状態で成果物がありません |
FALSE_DONE | claimed_status が COMPLETED / COMPLETE / DONE / VERIFIED であり、少なくとも 1 つの成果物がありません |
UNVERIFIABLE | マニフェストに成果物がないと記載されています。フェイルクローズで、決して合格にはなりません |
ライブラリ
from datumline_agent_guard import verify, verify_file
receipt = verify({"claimed_status": "COMPLETED", "artifacts": [{"type": "file", "path": "out/report.md"}]})
if receipt["verdict"] != "VERIFIED":
raise SystemExit(receipt["verdict"])
GitHub Action
エージェントの「完了」が実際に確認できない場合に、ワークフローを失敗させます。
- uses: datumline/[email protected]
with:
manifest: agent-output/manifest.json # what the agent claims it produced
# fail-on: false-done # only fail on FALSE_DONE (default: anything but VERIFIED)
このステップは、Action 自体のソースからこのパッケージをインストールし(ネットワークからの取得はありません)、レシートをジョブのサマリーに書き込み、verdict と receipt の出力を設定します。また、判定が VERIFIED でない場合は、0 以外の終了コードで終了します。ランナーには python3 3.9 以降が必要です。GitHub ホステッドランナーにはインストールされています。
MCP サーバー
Claude、ChatGPT、Copilot、Cursor、その他の MCP クライアント向けに、同じ検証機能を verify_completion_claim MCP ツールとして提供します。標準ライブラリのみを使用し、stdio トランスポートで動作します。
{
"mcpServers": {
"agent-guard": { "command": "uvx", "args": ["datumline-agent-guard"] }
}
}
または pip install datumline-agent-guard を実行して datumline-agent-guard(別名 agent-guard-mcp)を起動します。このツールは manifest(オブジェクト)または manifest_path(文字列)を受け取り、レシートを返します。"verdict": "VERIFIED" 以外は、完了していないことを意味します。マニフェストに記載されたファイルを読み取り、URL にアクセスします。それ以外の場所にデータを送信することはありません。
LangChain
pip install "datumline-agent-guard[langchain]"
from datumline_agent_guard.langchain_tool import AgentGuardTool
tool = AgentGuardTool() # name: agent_guard_verify
tool.invoke({"manifest": {"claimed_status": "COMPLETED", "artifacts": [{"type": "file", "path": "out/report.md"}]}})
# -> JSON receipt; anything other than "verdict": "VERIFIED" means not done
エージェントにツールとして渡すか、エージェントの「完了」を受け入れる前に自分で呼び出してください。manifest の代わりに manifest_path も指定できます。LangChain の標準ツールテスト(langchain-tests)に合格します。Python 3.10 以降が必要です。コアパッケージは 3.9 以降で動作し、依存関係はありません。
関連情報
同じ検証機能は、MIT ライセンスの無料の Receipted Operator Claude Code プラグインにも含まれています。このプラグインは、レシート台帳、正確なステータス、レシートのない「完了」を拒否するフックを追加します。Datumline は、有料のメソッドキットも datumlinehq.gumroad.com で公開しています。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。