エージェントのMCPツール呼び出しをゲートする
エージェントのツール呼び出しに対するIntralockの判定をMCPゲートウェイに尋ね、理由を読み取り、確認された呼び出し元を一覧します。
mcp.enforce
エージェントのツール呼び出しに対するIntralockの判定をMCPゲートウェイに尋ね、理由を読み取り、確認された呼び出し元を一覧します。
mcp.enforceエージェントがMCPサーバー上のツールを呼び出し、各呼び出しがツールに届く前に判定されるようにしたい場合です。ゲートウェイは、経路上にモデルを置かずに判定を返します。
コードはキーをINTRAMEDIAL_KEYから読み取ります。キーはシェルやシークレットストアに保管し、コミットするファイルには入れないでください。サインインした人が必要な呼び出しにはキーを使えず、コンソールが実行します。
エージェントのDIDとツール名を送ります。fs.writeのような変更を示す名前は、他に何が送られても書き込みとして許可されます。
mcp.enforcemcp-enforcecurl -sS -X POST https://api.intramedial.com/api/v1/acp/mcp/enforce \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"actorDid": "did:web:acme.example:agent:support",
"tool": "fs.write"
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/mcp/enforce", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
actorDid: "did:web:acme.example:agent:support",
tool: "fs.write",
}),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/mcp/enforce",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"actorDid": "did:web:acme.example:agent:support",
"tool": "fs.write",
},
timeout=30,
)
print(res.status_code, res.json())allowとreasonはIntralockの回答です。modeは保存されているゲートウェイのモードです。
{
"mode": "observe",
"shadow": false,
"event": { "actorDid": "did:web:acme.example:agent:support", "tool": "fs.write" },
"advise": null,
"allow": false,
"reason": "no_grant",
"action": "write",
"llm": false,
"protocolVersion": "2026-07-28"
}ゲートウェイを通るすべてのリクエストは、DID、ツール、モードを記したmcp.shadowイベントを台帳に追記します。このルートは最新の50件を返します。呼び出し元が登録済みかどうかは示さないため、呼び出し元をIDの一覧と突き合わせて、誰も登録していないものを見つけてください。
curl -sS https://api.intramedial.com/api/v1/acp/mcp/shadow \
-H "Authorization: Bearer $INTRAMEDIAL_KEY"const res = await fetch("https://api.intramedial.com/api/v1/acp/mcp/shadow", {
headers: { Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`, },
});
console.log(res.status, await res.json());import os, requests
res = requests.get(
"https://api.intramedial.com/api/v1/acp/mcp/shadow",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
timeout=30,
)
print(res.status_code, res.json())転載元の資料: /docs/mcp-enforce
instructionShapedフラグはテキストに対するヒューリスティックです。台帳は追記専用で、Merkleルートのもとでシールされます。エントリの時刻はIntramedial自身のクロックによるもので、署名付きバンドルは公開鍵を使ってオフラインで確認できます。
MCPゲートウェイが確認した呼び出し元を読み取り、1つをIDとして承認するか、シャドーとして追跡し続けます。
mcp.shadowidentity.enroll接続されたSaaSソースに対してエージェントが操作してよいかをプレーンに尋ね、何かが送信される前に判定を読み取ります。
saas.admitエージェントによるリポジトリへの書き込みをIntralock経由で許可し、判定をチェック実行またはステータスとしてコミットに投稿します。
github.enforceレシピ集にレシピを追加したときだけ、短いメールを1通。ほかのメールは送らず、どのメールからも配信停止できます。
アカウントは不要です。attestルートで7日間に35回まで呼び出せ、レシートはテストレシートとして明示されます。続けたくなったら、そのときに登録してください。