mcpField
A
Agent Mandate Verification

Agent Mandate Verification

ローカル
agentmandate-api.comセキュリティ06 週間前に更新

Agent Mandate Verification について

Agent Mandate Verificationは、署名付きAgent Mandateの認可内容に基づいて操作案を検証するstdio MCPサーバーです。結果を返すだけで、操作の実行やmandate、アカウント、請求状態の変更は行わず、適用は呼び出し元に委ねます。

主な機能

  1. 01署名付きmandateエンベロープに基づく操作検証
  2. 02単一操作または最大500件の一括確認
  3. 03判定と違反内容の返却
  4. 04不正形式や未署名エンベロープの拒否
  5. 05プロバイダーエラーをステータスと許可コードに限定

活用シーン

  1. 01署名付き認可に照らして支払い操作を確認する
  2. 02エージェントの操作案をまとめて検証する
  3. 03検証結果の適用をアプリケーション側で行う

MCP 対応

stdio MCPサーバーは`verify_action`ツールを1つ公開し、操作または操作の配列と完全な署名付きエンベロープをAgent Mandateの検証エンドポイントに送ります。結果を返しますが、操作案は実行しません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"api-disk-integrations-agent-mandate": {
"command": "npx",
"args": [
"-y",
"@api-disk-integrations/agent-mandate-mcp"
],
"env": {
"AGENT_MANDATE_API_KEY": "<AGENT_MANDATE_API_KEY>"
}
}
}
}
起動コマンドnpx -y @api-disk-integrations/agent-mandate-mcp
設定が必要な環境変数
AGENT_MANDATE_API_KEYシークレットCaller-owned Agent Mandate API key.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@api-disk-integrations/agent-mandate-mcp0.1.1

ツール

1

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
actionobjectいいえ
action.atstringいいえ
action.agentstringいいえ
action.actionstringはい
action.currencystringいいえ
action.resourcestringいいえ
action.priorCountintegerいいえ
action.amountMinorintegerいいえ
action.approvalTokenstringいいえ
action.priorSpendMinorintegerいいえ
actionsarrayいいえ
mandateobjectはい
mandate.mandateobjectはい
mandate.signaturestringはい

詳細

MCP を通じて署名済みエージェント委任を検証する

エージェントが主張する権限を信頼する前に、署名済みの認可エンベロープを確認します。

Agent Mandate の MCP ツールは、POST /v1/mandates が返す完全な { mandate, signature } エンベロープを受け付けます。生のクレームは署名済みエンベロープではありません。

チュートリアルの内容: エンベロープを作成し、MCP を通じてアクションを検証してから、署名済みフィールドを 1 つ変更して再度検証します。拒否されるリクエストを含め、各リクエストの実際の検証結果を確認できます。

要件: Node.js 20 以降、および Agent Mandate API キー。

キーの取得: 無料プランには月あたり 500 件の検証済みアクションが含まれ、カードは不要です。委任の発行は無料で、利用枠も消費しません。1 単位で 1 件のアクションを検証できます。有料プランは月額 299 ドルで、検証済みアクション 10,000 件から利用できます。このチュートリアルで消費する無料枠は、最大でも2 単位です。

本番環境で実行しますか? 公開されている料金とともに、署名済み委任が役立つ場合とそうでない場合をご覧ください。要点は次のとおりです。承認ゲートを自分で管理しているなら、自分のサービス内でポリシーを確認するほうがシンプルで安価です。自分以外の人も判断を検証できる必要がある場合に、署名の価値が生まれます。

まず試してみたいだけですか? POST /v1/demo/verify は生のクレームを受け付け、キーは一切不要です。最後に紹介します。ただし、署名は検証しないため、署名済みエンベロープを使うチュートリアルの代わりにはなりません。


チュートリアルを実行する

git clone https://github.com/API-Disk-Integrations/agent-mandate-mcp.git
cd agent-mandate-mcp
git checkout v0.1.1
npm ci
AGENT_MANDATE_API_KEY=your_key node examples/verify-mandate.mjs

サンプルランナーはこのリポジトリから実行しますが、@api-disk-integrations/[email protected] を一時的なプレフィックスに npm からインストールして実行するため、作業ツリーではなく公開済みの成果物を試せます。AGENT_MANDATE_API_KEY を指定しない場合、入力内容を表示せずにプロンプトが表示されます。

出力内容
=== 1. Create a mandate ===
POST /v1/mandates -> 200
envelope keys: mandate, signature, requestId
signature: v1:b63eacaa7… (67 chars)

=== 3. Verify the action against the signed envelope ===
action: payments.transfer 30000 USD, approval required above 25000
decision: requires_approval
  violation: Actions above 25000 minor units need a human approval token.
  digest: c90fd0bc104dce63…

=== 4. Tamper with one signed field, keep the signature ===
raising approvalRequiredAboveMinor 25000 -> 999999, which would turn this into an allow
rejected: Agent Mandate error 400/invalid_request.
The tampered mandate did not buy an allow. The signature is doing its job.

これは本番環境に対する実際の実行結果であり、説明用の出力ではありません。許可は最大 100,000 の最小通貨単位まで認めていますが、25,000 を超える場合は承認が必要です。今回のアクションは 30,000 を要求しているため、requires_approval が正しい回答です。deny や requires_approval は正しい結果であり、失敗ではありません。

検証で結果は報告されますが、その結果を適用する責任は引き続きアプリケーションにあります。

サーバーをインストールする

npx --yes @api-disk-integrations/[email protected]

一般的な stdio クライアントの設定:

{
  "mcpServers": {
    "agent-mandate": {
      "command": "npx",
      "args": ["--yes", "@api-disk-integrations/[email protected]"],
      "env": {
        "AGENT_MANDATE_API_KEY": "${AGENT_MANDATE_API_KEY}"
      }
    }
  }
}

${AGENT_MANDATE_API_KEY} はホストのシークレット参照を表します。構文が異なる場合は、クライアントでドキュメント化されているシークレット機能を使用してください。このパッケージは stdio を使用し、指定された環境変数をそのまま読み取ります。リモートの /mcp エンドポイントはありません。

バージョンを固定してください。 0.1.0 は現在もレジストリにあり、初回使用時の不具合があります。入力スキーマが mandate に任意のオブジェクトを受け付けていたため、キー不要のデモと同じ形式で作成した呼び出しは HTTP 400 を返しました。

チェックサム付きの成果物を検証する場合は、各リリースに tarball とその SHA-256 も添付されています。

curl -fsSLO https://github.com/API-Disk-Integrations/agent-mandate-mcp/releases/download/v0.1.1/api-disk-integrations-agent-mandate-mcp-0.1.1.tgz
shasum -a 256 api-disk-integrations-agent-mandate-mcp-0.1.1.tgz   # compare with the release page
npm install -g ./api-disk-integrations-agent-mandate-mcp-0.1.1.tgz

2 つの形式と、混乱しやすいポイント

エンドポイントキー受け付けるもの
POST /v1/demo/verifyなし{mandate: {…claims…}, action: {…}} — 生のクレーム
POST /v1/verifyあり{mandate: {mandate: {…claims…}, signature: "…"}, action: {…}} — エンベロープ

エンベロープは、POST /v1/mandates のレスポンスボディ全体です。 {mandate, signature, requestId}。変更せずにそのまま渡してください。

"mandate.mandate" must be the claims object は、エンベロープを渡す場所に生のクレームを渡したことを意味します。先に POST /v1/mandates を実行し、そのレスポンス全体を渡してください。

2 つの呼び出しを手動で行う

ステップ 1 — 委任を作成します。 発行は無料で、利用枠を消費しません。

curl -X POST https://agentmandate-api.com/v1/mandates \
  -H "authorization: Bearer $AGENT_MANDATE_API_KEY" \
  -H 'content-type: application/json' \
  -d '{
    "principal": "user_8814",
    "agent": "agent_procurement_v3",
    "expiresAt": "2026-12-31T23:59:59Z",
    "currency": "USD",
    "totalSpendCapMinor": 500000,
    "grants": [{
      "action": "payments.transfer",
      "resources": ["vendor.acme"],
      "maxAmountMinor": 100000,
      "approvalRequiredAboveMinor": 25000
    }]
  }'

{"mandate": {…}, "signature": "…", "requestId": "…"} を返して 200 になります。 ボディ全体がエンベロープです。

ステップ 2 — その委任に対してアクションを検証します。 エンベロープを mandate として verify_action を呼び出します。

{
  "mandate": { "mandate": { "…": "…" }, "signature": "…" },
  "action": {
    "agent": "agent_procurement_v3",
    "action": "payments.transfer",
    "resource": "vendor.acme",
    "amountMinor": 30000,
    "currency": "USD"
  }
}
キーがまったくない場合
curl -X POST https://agentmandate-api.com/v1/demo/verify \
  -H 'content-type: application/json' \
  -d '{"mandate":{"principal":"user_8814","agent":"a1","expiresAt":"2026-12-31T23:59:59Z","currency":"USD","totalSpendCapMinor":500000,"grants":[{"action":"payments.transfer","resources":["vendor.acme"],"maxAmountMinor":100000,"approvalRequiredAboveMinor":25000}]},"action":{"agent":"a1","action":"payments.transfer","resource":"vendor.acme","amountMinor":30000,"currency":"USD"}}'

このルートはエンベロープではなく生のクレームを受け付け、署名は検証しません。

このサーバーが行わないこと

指示を発行または取り消したり、アクションを実行したり、アカウントを変更したり、請求処理を呼び出したりすることはありません。ツール呼び出しごとに行う API リクエストは最大 1 回で、自動的に再試行することはありません。

  • npm:@api-disk-integrations/agent-mandate-mcp
  • 公式 MCP Registry:io.github.API-Disk-Integrations/agent-mandate
  • ソース:API-Disk-Integrations/agent-mandate-mcp

ツールの仕様

ツールは verify_action の 1 つだけです。action を 1 つ、または actions 配列のいずれかを指定し、両方を指定することはできません。バッチに含められるアクションは 1~500 件です。金額は 0 以上の整数の最小通貨単位で指定し、currency が必要です。

入力例:

{
  "mandate": {
    "mandate": {"id": "mnd_example"},
    "signature": "caller-supplied-signature"
  },
  "action": {
    "agent": "procurement-agent",
    "action": "payments.transfer",
    "resource": "vendor.acme",
    "amountMinor": 2500,
    "currency": "USD",
    "at": "2026-09-05T20:00:00Z"
  }
}

成功時の構造化出力の例:

{
  "count": 1,
  "receipts": [
    {
      "decision": "deny",
      "mandateId": "mnd_example",
      "violations": [{"code": "action_not_granted", "detail": "No matching grant"}]
    }
  ]
}

3 つの判定はすべて文字どおりに解釈してください。特に、allow も requires_approval も、提案されたアクションを実行するものではありません。

エラー、制限、安全性

  • AGENT_MANDATE_API_KEY が設定されていない場合、ツールはリクエストを行う前に MCP エラーを返します。
  • プロバイダーエラーは、数値の HTTP ステータスと許可リストに含まれるコードに絞り込まれます。プロバイダーが制御するメッセージやリクエスト ID のテキストがモデルに返されることはありません。
  • ツール呼び出し 1 回につき、固定された https://agentmandate-api.com/v1/verify エンドポイントへの HTTPS リクエストは最大 1 回です。自動再試行はありません。Fetch では明示的に redirect: error を使用し、リダイレクト応答は後続のリクエストを行わずに拒否されます。
  • UTF-8 にシリアライズしたリクエストとデコードしたレスポンス本文には、それぞれ 1 MiB(1,048,576 バイト)の厳格な上限があります。リクエストは Fetch の前に計測されます。レスポンスは JSON 解析の前にストリーミング中にカウントされます。Content-Length が欠落している場合、誤解を招く値である場合、チャンク形式である場合も同様です。
  • リクエストのタイムアウトはデフォルトで 30 秒です。バッチの上限も 500 件です。プロバイダーアカウントのレート制限と月間使用量制限は引き続き適用されます。本番環境で使用する前に、最新の製品料金とドキュメントを確認してください。
  • このサーバーは、指示、アカウント、請求の状態に対して読み取り専用ですが、API 検証を行うと呼び出し元の従量制の利用枠を消費します。
  • Node.js 20 以降が必要です。このリリースは MCP プロトコルのリビジョン 2026-07-28 でテストされており、SDK に記載された 2025 年の互換リビジョンも引き続きサポートします。

リンク

ソースへのリンクは、npm パッケージまたは Registry の掲載が利用可能であることの証拠にはなりません。これら 2 つのリリースには、それぞれ独自の公開読み戻しが必要です。クローン、インストール、ダウンロード、ツール呼び出し、掲載のいずれも、顧客の利用開始や収益の証拠にはなりません。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。