最初のレシートを発行する。
無料のテストキーを取得し、content.attestでハッシュを証明して、返ってきた署名付きレシートを検証します。
coordination.admit
無料のテストキーを取得し、content.attestでハッシュを証明して、返ってきた署名付きレシートを検証します。
coordination.admit何かを作る前に、一連の流れを一度通して見たい場合です。ハッシュを送り、署名付きレシートを受け取り、署名が有効か確認します。ここにある手順はすべて、アカウントなしで無料のテストキーで動きます。
curlとjq、Node 18以降、またはrequestsを入れたPythonコードはキーをINTRAMEDIAL_KEYから読み取ります。キーはシェルやシークレットストアに保管し、コミットするファイルには入れないでください。サインインした人が必要な呼び出しにはキーを使えず、コンソールが実行します。
モジュールページを開いて「試す」を実行します。キーもアカウントも不要で、実際のカーネルがブラウザー内で動作します。動詞やリソースを変えると、理由が変わるのを確認できます。
アクター、リソース、動詞を送ります。書き込みまたは削除には確認トークンが必要で、なければ拒否されます。先にワークスペースのキーをINTRAMEDIAL_KEYとしてエクスポートしてください。
attestの呼び出しは201 Createdと署名付きレシートを返します。本文は送った内容をそのまま繰り返し、environmentがテストレシートであることを示します。
{
"result": { "allow": false, "reason": "confirmation_required", "approvalId": "apr_7f3a" },
"llm": false
}issuedAtに存在した。coordination.admitcoordination-admitcurl -sS -X POST https://api.intramedial.com/api/v1/acp/coordination/admit \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"actorDid": "did:web:acme.example:agent:billing",
"resource": "repo:payments/main",
"action": "write"
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/coordination/admit", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
actorDid: "did:web:acme.example:agent:billing",
resource: "repo:payments/main",
action: "write",
}),
});
const body = await res.json();
console.log(res.status, body);import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/coordination/admit",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"actorDid": "did:web:acme.example:agent:billing",
"resource": "repo:payments/main",
"action": "write",
},
timeout=30,
)
body = res.json()
print(res.status_code, body)レシートを公開の検証ルートに送ります。キーは不要で、応答は常に200です。ステータスコードではなく、本文のokを読んでください。
curl -sS -X POST https://api.intramedial.com/api/v1/acp/coordination/admit \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{"actorDid":"did:web:acme.example:agent:billing","resource":"repo:payments/main","action":"write"}' \
| jq '.result'const { result } = body;
if (result.allow) {
console.log("admitted");
} else {
console.log("refused:", result.reason, result.approvalId ?? "");
}result = body["result"]
if result["allow"]:
print("admitted")
else:
print("refused:", result["reason"], result.get("approvalId", ""))テストレシートは署名対象のデータ内でenvironmentがtestになっているため、本番の証拠として通用しません。本物のレシートが必要になったら、無料アカウントを作成してワークスペースキーを使います。リクエストはそのままです。
転載元の資料: /docs/coordination-admit
台帳は追記専用で、Merkleルートのもとでシールされます。エントリの時刻はIntramedial自身のクロックによるもので、署名付きバンドルは公開鍵を使ってオフラインで確認できます。
coordination.leaseでリソースの排他リースを取得し、誰が保持しているかを確認し、終わったら手放します。
coordination.lease拒否された書き込みを承認キューで待機させ、サインインした人が承認したら、トークンを付けて再試行します。
coordination.approveエージェントのツール呼び出しに対するIntralockの判定をMCPゲートウェイに尋ね、理由を読み取り、確認された呼び出し元を一覧します。
mcp.enforceレシピ集にレシピを追加したときだけ、短いメールを1通。ほかのメールは送らず、どのメールからも配信停止できます。
アカウントは不要です。attestルートで7日間に35回まで呼び出せ、レシートはテストレシートとして明示されます。続けたくなったら、そのときに登録してください。