AgenticRail Gate - sequence enforcement and verifiable audit receipts for AI agent compliance について
AgenticRail Gateは、AIエージェントの手順を決定論的に制御するMCPアダプターです。各手順の実行前に判定し、コンプライアンス監査向けに署名付きレシートと検証レポートを提供します。
主な機能
- 01実行前に手順を許可または拒否
- 02宣言された手順順序を強制
- 03スキップやリプレイを拒否
- 04署名付きシーケンスレシートを作成
- 05レシートチェーンの整合性を検証
活用シーン
- 01エージェントのワークフローで手順順序を強制
- 02スキップまたはリプレイ手順の実行を防止
- 03許可・拒否の判定を監査
- 04完了したシーケンスのレシートチェーンを検証
MCP 対応
`evaluate_step`と`verify_receipt`ツールを通じてAgenticRailの制御機能をMCPクライアントに提供します。ステートレスなStreamable HTTPエンドポイントを使用します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.agenticrail.nz/claude mcp add --transport http nz-agenticrail-gate https://mcp.agenticrail.nz/{"mcpServers":{"nz-agenticrail-gate":{"type":"http","url":"https://mcp.agenticrail.nz/"}}}Cursor で開く{"servers":{"nz-agenticrail-gate":{"type":"http","url":"https://mcp.agenticrail.nz/"}}}VS Code で開く{"mcpServers":{"nz-agenticrail-gate":{"type":"http","url":"https://mcp.agenticrail.nz/"}}}{"mcpServers":{"nz-agenticrail-gate":{"serverUrl":"https://mcp.agenticrail.nz/"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
2| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| step | string | はい | 試行するステップ。例:'intake' または 'review_and_sign'。これは説明ではなく NAME です。すべての呼び出しで同じ綴りを使い、step_order(カスタムシーケンスの場合)に含め、`function` と一致させる必要があります。gate はバイト単位で比較するため、対象によって変化する文は一致せず、UNKNOWN_STEP で拒否されます。人が読める文は `action` に記述してください。 |
| nonce | string | いいえ | リプレイ保護用の、ステップごとに一意な UUID(任意)。省略すると自動生成されます。 |
| action | string | いいえ | 操作を示す、人が読める任意のラベル。 |
| inputs | object | いいえ | ステップに関する任意の自由形式コンテキスト。レシートには保存されません。レシートに保持されるのはリクエスト全体の SHA-256 ハッシュのみです。証拠として保持する必要がある内容は `attestation` に記述してください(そのまま公開され、匿名デモ用レーンでは誰でも閲覧できます)。 |
| function | string | いいえ | デフォルトは `step` です。ルール step === function は常に成立します。 |
| step_order | array | いいえ | CUSTOM シーケンスのステップ名を完全な順序で指定したリストです。呼び出しのたびに必ず送信し、毎回同一にしてください。AgenticRail の組み込み MSMD spine を使用する場合に限り省略できます。シーケンスの最初の呼び出しでロックされます。後から異なるリストを指定すると STEP_ORDER_MISMATCH で拒否され、その拒否応答には、このシーケンスで固定されたリストである locked_step_order が返されます。このフィールドを省略してロックを解除しようとしないでください。MSMD spine が選択され、ステップは UNKNOWN_STEP になります。計画を変更するには、新しい sequence_id を開始してください。1 ステップも有効なシーケンスです。UNKNOWN_STEP による拒否では、ステップが含まれている必要があったリスト expected_step_order と、step_order_source('caller' または 'msmd_spine')が返されます。msmd_spine は、step_order を一切送信せず、組み込み spine が使われたことを意味します。 |
| action_type | enum | はい | このステップのアクションクラスです。使用できる値は次の 8 つだけで、それ以外は受け付けません:CHECK_STATE、CLARIFY_NEXT_STEP、SELECT_NEXT_STEP、RECORD_RESULT、WAIT_FOR_SIGNAL、VALIDATE_INPUT、PAUSE_CYCLE、REDUCE_STIMULUS。これらは実行クラスであり、ステップの動作説明ではありません。よくある誤った値は READ、QUERY、LOOKUP、SEARCH、EXECUTE、ANALYZE、TOOL_CALL で、いずれも拒否されます。検索、下書き、照会、分析を行うステップでも、状態を読み取るなら CHECK_STATE、結果を書き込むなら RECORD_RESULT です。各ステップが受け付けるのは、この 8 つの一部だけです。たとえば intake が受け付けるのは VALIDATE_INPUT、CHECK_STATE、CLARIFY_NEXT_STEP のみです。誤った値はステップの実行前に ACTION_NOT_ALLOWED で拒否され、拒否応答の allowed_action_types に、そのステップが受け付ける値だけが正確に列挙されます。推測せず、それを確認して再試行してください。拒否によってシーケンスが損なわれることはなく、何も実行されません。CHECK_STATE | CLARIFY_NEXT_STEP | SELECT_NEXT_STEP | RECORD_RESULT | WAIT_FOR_SIGNAL | VALIDATE_INPUT | PAUSE_CYCLE | REDUCE_STIMULUS |
| sequence_id | string | はい | このシーケンス実行の固定識別子です。同じシーケンスのすべてのステップで再利用してください。匿名呼び出しは 'demo-mcp-<your id>' に、認証済みのデモ呼び出しは 'demo-<your id>' に書き換えられます。レスポンスから id を取得し、以降はその値を使用してください。実行ごとに新しい id を指定してください。試行ごとではなく、実行ごとです。封印は取り消せず、共有デモレーンでは固定 id が他のユーザーとも共有されます。拒否されたステップによってシーケンスが損なわれたり、何かが実行されたりすることはないため、拒否を理由に新しいシーケンスを開始する必要はありません。呼び出しを修正してください。 |
詳細
agenticrail-mcp
あらゆる MCP クライアントに、稼働中のAgenticRail強制ゲートを 2 つのツールとして公開する Model Context Protocol サーバーです。
AgenticRail は、AI エージェント向けの決定論的な強制レイヤーです。宣言されたステップ順序をエージェントに厳守させ、再実行やステップのスキップを拒否し、完了した各シーケンスに署名済みレシートを封印します。このサーバーは、その手前に置かれる MCP アダプターです。
よくある問題の説明にならって言えば、AI エージェントのツール呼び出しに対するポリシー強制ポイントです。順序を無視したステップが実行される前に拒否することで、ステップのスキップや手順上の幻覚(実行されていないステップをエージェントが成功したと報告すること)を検出します。また、ALLOW、DENY のいずれの判断も、改ざんを検知できる監査証跡の記録になります。
エンドポイント: https://mcp.agenticrail.nz/(Streamable HTTP、ステートレス)
プロトコル: 2026-07-28 — initialize のやり取りと Mcp-Session-Id が廃止されたリビジョンです。このサーバーはどちらも使わないステートレス設計だったため、移行は不要でした。古いクライアント向けに、initialize には引き続き応答します。
レジストリ: 公式 MCP レジストリの nz.agenticrail/gate
ツール
| ツール | 機能 | 呼び出し先 |
|---|---|---|
evaluate_step | 単一のエージェントステップが実行される前に ALLOW/DENY を判定し、署名済みレシートを封印します | POST https://api.agenticrail.nz/v1/evaluate |
verify_receipt | シーケンスの検証レポートを取得し、レシートチェーンに問題がないことを確認します | POST https://report.agenticrail.nz/report |
シーケンスの各ステップを実行する前に evaluate_step を呼び出し、ゲートが DENY したステップは実行しないでください。
DENY には修正方法が示されます
拒否の応答エンベロープには、それぞれ修正方法が含まれます。これは署名されず、DENY の場合にのみ返されます。行われた判断ではなく、シーケンスの現在の状態を示すためです。
| 拒否 | 返される内容 |
|---|---|
ACTION_NOT_ALLOWED | allowed_action_types — このステップで受け付けられるアクションが正確に示されます |
SEQUENCE_VIOLATION | next_expected_step — シーケンスが待機しているステップです |
STEP_ORDER_MISMATCH | locked_step_order — このシーケンスの初回呼び出し時に固定された順序です |
UNKNOWN_STEP | expected_step_order + step_order_source(caller または msmd_spine) |
action_type はちょうど 8 つの値からなる列挙型で、各ステップが受け付けるのはその一部だけです。ツールスキーマ内の列挙型はヒントであり、制御ではありません。独自の引数を検証するクライアントに対してのみ制約として機能します。また、考案した動詞は、圧倒的に最もよくある最初の拒否理由です。READ、QUERY、TOOL_CALL、LOOKUP、EXECUTE などは、ステップをどれほど適切に表現していてもアクション型ではありません。制御を行うのはゲートです。拒否された場合、allowed_action_types にこのステップで受け付けられるアクションが返されます。
拒否された呼び出しによってロックが設定されることはありません。 シーケンスストアへの書き込み前に拒否への応答が返されるため、実行は損なわれません。間違っていたのは呼び出しであり、シーケンスではありません。拒否理由に示されたフィールドを修正し、ステップを再送信してください。 ロックは、許可された呼び出しで step_order を実際に送信した場合にのみ設定されます。その後はそのリストが強制され、異なるリストを送ると STEP_ORDER_MISMATCH で拒否されます。step_order を省略してもロックは設定されません。これは、この呼び出しが組み込みの MSMD スパインに照らして判定されるという意味にすぎません。そのステップ名は、おそらくお使いのものとは異なります。
そのため、独自のステップ名がある場合は、その名前を指定して step_order を送信してください。そうすれば、ゲートはその順序を代わりに強制します。1 ステップだけでも有効なシーケンスです。
接続
Claude Code の場合:
# zero config — uses the public demo key
claude mcp add --transport http agenticrail https://mcp.agenticrail.nz/
# with your own key
claude mcp add --transport http agenticrail https://mcp.agenticrail.nz/ \
--header "Authorization: Bearer <your-agenticrail-key>"
Streamable-HTTP 対応の MCP クライアントならどれでも使えます。URL を指定してください。
インストールせずに試す
BASE=https://mcp.agenticrail.nz/
curl -s -X POST "$BASE" -H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | jq .
# ⚠️ Use a sequence_id nobody else will pick. On the shared demo key the id is
# GLOBAL and sealing is PERMANENT — a fixed one in an example works once for one
# person on earth and returns SEALED_SEQUENCE for everyone after.
SEQ="mcp-smoke-$(date +%s)-$RANDOM"
curl -s -X POST "$BASE" -H 'content-type: application/json' \
-d "{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/call\",\"params\":{
\"name\":\"evaluate_step\",
\"arguments\":{\"sequence_id\":\"$SEQ\",\"step\":\"intake\",
\"action_type\":\"CHECK_STATE\"}}}" | jq .
Authorization ヘッダーがない場合は公開デモキーが使用され、sequence_id は demo-mcp-<your id> に書き換えられて返されます。demo- は公開レーン、mcp- は匿名 MCP トラフィックを示します。以降はレスポンスで返された ID を使用してください。送信した ID では解決されません。 これは意図した動作であり、情報漏えいではありません。
demo- シーケンスのレポートは、読み取りにキーが不要です。そのため、そこに送信する内容はすべて公開情報として扱ってください。
設計 — 変更前にお読みください
- プロトコルアダプターのみです。 このワーカーは内部シークレットを一切保持せず、強制適用コアへの特権パスもありません。外部の呼び出し元と同じ公開 API を呼び出すため、ツールのロジックは AgenticRail の内部実装からも MCP トランスポートのバージョンからも切り離されています。
- fetch ではなくサービスバインディングを使用します。
mcp.agenticrail.nzはapi.およびreport.と同じゾーンにあるため、通常のfetch()は同一ゾーン内のループバックとなり、Cloudflare エラー 1002 が発生します。バインディングは同一の公開ハンドラーを呼び出すものであり、内部バイパスではありません。 - ステートレスな Streamable HTTP です。
Mcp-Session-Idは発行も要求もされず、すべての POST はそれぞれ独立して完結します。トランスポートのシェルはhandleRpcとfetchハンドラーであり、仕様改訂で影響を受けるのはこの部分だけです。値を扱う呼び出し(callEvaluate/callVerify)は通常の HTTPS で行われ、変更されません。 GET /はディスカバリーカードを提供し、それ以外の GET パスはすべて 404 を返します。 クライアントがエンドポイント URL にパスを追加しても機能するよう、POSTは意図的に制限していません。/.well-known/oauth-*が 404 を返すのは正しい動作です。 これは MCP サーバーが認証不要であることを示す方法です。agent.json、agent-card.json、x402、ai-plugin.jsonはこのサーバーが実装していないプロトコルです。これらに応答すれば、対応していると主張することになります。
デプロイ
npx wrangler deploy
リンク
- ドキュメント — https://agenticrail.nz/docs/
- シーケンスを自分で検証 — https://report.agenticrail.nz/report
- OpenAPI — https://agenticrail.nz/openapi.json
- 強制適用仕様 — https://agenticrail.nz/spec/
TUARA KURI LIMITED(NZBN 9429053582867)が運営。所在地:ホキアンガ、アオテアロア・ニュージーランド。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。