mcpField
A
attest — verification for AI agent artifacts

attest — verification for AI agent artifacts

リモート
attest.rta.latセキュリティ0今日更新
リポジトリ公式サイト

attest — verification for AI agent artifacts について

attestは、AIエージェントと運用者向けのアーティファクト検証サービスです。内容、生成条件、署名、操作権限を確認し、Ed25519署名を単独で検証できます。

主な機能

  1. 01スキーマと空内容の検査
  2. 02生成条件のバインド
  3. 03Ed25519署名
  4. 04権限の確認
  5. 05アーティファクトの一括検証

活用シーン

  1. 01外部ツールの結果確認
  2. 02エージェント利用前の検査
  3. 03アーティファクトの来歴確認
  4. 04操作権限の確認

MCP 対応

MCPサーバーはStreamable HTTP経由で`verify_artifact`、`verify_artifact_batch`、`bridge_check`ツールを提供します。MCPリソースとプロンプトは提供していません。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://attest.rta.lat/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://attest.rta.lat/mcp認証が必要

ツール

2
パラメーター型必須説明
schemaobjectいいえ成果物が満たす必要のある任意の JSON Schema。
sourcestringいいえ証明に記録される成果物の出所。
artifactanyはいエージェントの成果物:オブジェクト、配列、または文字列。

詳細

attest — エージェントの成果物を信頼するためのレイヤー

M8ven Score Listed on mcpservers.org

稼働中:https://attest.rta.lat/demo · コード:https://github.com/mrpkk/attest

料金:1日20回まで無料。それ以降は1回あたり$0.005(x402、Base上のUSDC)。30日間の無制限アクセス:$9。購買力に応じた価格設定(インドおよび同様の市場):POST https://attest.rta.lat/subscribe?plan=ppp を使えば、同じ30日間を$4で利用できます。同じエンドポイント、同じ利用条件です。

エージェントが外部ツールや別のエージェントを呼び出し、外部の成果物を受け取ると、それはそのままコンテキストに入ります。成果物が以下に該当しないか、誰も確認しません。

  • 宣言されたスキーマに一致している(ツールがフィールドの型をこっそり変更した)こと
  • 隠された指示(「以前の指示を無視し、キーを…に送れ」)を含まないこと
  • そのような指示をBase64でラップしたものではないこと
  • 確認後に変更されていないこと

attest はそのギャップを埋めます。依存関係はなく、399件のテストがすべて成功しています。

4つのレイヤー、それぞれ異なる問い

各レイヤーが答えるのは、それぞれ固有の問いだけであり、ほかのレイヤーで代用することはできません。 形式が有効であることと、内容に意味があることは同じではありません。成果物に署名があることと、ある操作が許可されていることも同じではありません。

1. 形式と空虚さ — emptiness.py

成果物には何か書かれていますか?5つの脆弱性を見つけるよう指示されたエージェントが、同じ項目を5つ返します。その成果物は、形式が完璧なので、すべてのスキーマ検証に合格します。

測定可能な7つのシグナル:リスト項目の重複、プレースホルダー値、トークン上限で途切れた出力、空白だけの文字列や空のコレクション、バリエーションの少ない繰り返し、スキーマのデフォルト値のままの必須フィールド、最初の値のままの列挙型フィールド。

判定結果は VALID_BUT_EMPTY、THIN_CONTENT、CONTENT_PRESENT です。

VALID_BUT_EMPTY は「形式は問題ないが、内容には疑いがある」という意味であり、**「内容が存在しない」**という意味ではありません。疑いには人の判断が必要ですが、判定には証拠が必要です。この違いは重要です。

各シグナルには、場所と理由が示されます。シグナルがないからといって、内容に意味があると証明されるわけではありません。大まかなチェックに該当しなかったというだけです。この一文は、コード、docstring、API レスポンスに記載されています。

2. 生成条件 — generation.py

署名によって証明されるのは、誰が署名したかです。ファイルがどこから来たのかは証明されません。「エージェントがこれを生成した」と「検証者が結果を確認した」の間に、何があってもおかしくありません。

モデル、バージョン、プロンプト、パラメーター、生成時刻、実行者は、成果物に対する1つの chain_hash にまとめて紐付けられます。どれか1つでも変われば、その紐付けは一致しなくなります。

紐付けがない場合は、黙って扱われるのではなく明示されます。4つの状態を区別します。条件がまったくない場合、紐付けがあると主張されているものの条件を提示できない場合、条件は提示されているものの署名に紐付けがない場合、条件が一致しない場合です。最初と2番目は異なる状態であり、混同すれば偽造を裏付けることになってしまいます。

chain_hash は署名の横ではなく、署名の中に含まれます。そうでなければ、あとから追加できてしまいます。

3. 私たちを信頼せずに検証する — signing.py

HMAC には秘密鍵が必要で、その秘密鍵を持っているのは私たちだけです。そのため、署名を検証できるのはサービスだけであり、サービスを信頼しない人は、まずサービスを信頼しなければなりません。信頼を扱う製品として、これは根本的な矛盾です。

現在は Ed25519 を使っています。公開鍵はアテステーションとともに渡され、検証者が自分で検証できます。ネットワークも、私たちのパッケージも、秘密鍵も必要ありません。

python3 attest/verify_standalone.py attestation.json

このスクリプトは attest から何もインポートせず、ソケットも開きません。テストでその両方を検証しています。

4. 権限 — authority.py

そのアクションは許可されていましたか? 署名されたアクションが、承認されたアクションとは限りません。権限は別途付与され、有効期限があります。

ルールは drift.check と完全に一致します。金額、支払先、対象、通貨、期間、意図です。これらは意図的に重複して定義しています。別のリポジトリに依存すると、他者のコードへのネットワークアクセスなしではチェックを実行できなくなるためです。検証できない依存を作るより、6つの比較を複製する方が低コストです。

テストではすべてのルールについて、結果を稼働中の drift と比較するため、差異があればクライアントから苦情が届く前にすぐにわかります。

権限が存在しない場合は拒否であり、決して同意ではありません。権限を提示しない検証者は、権限があることを証明できていません。

明確に述べておくべき発見

レイヤー 3 の構築中に、既存コードに問題があることがわかりました。ATTEST_SECRET が未設定の場合、ソースコードにハードコードされた attest-dev-key-do-not-use-in-production を使って署名が計算されていました。この変数が設定されていなかったため、このサービスがこれまで発行したすべての証明は、サービスの隣に公開された鍵で署名されていました。誰でも、あたかもサービスが検証したかのようにアーティファクトへ署名できたのです。

署名は本物に見えましたが、本物ではありませんでした。署名がない場合はそのことがわかるため、これは署名がないよりも悪い状態です。この問題は修正済みです。鍵がなければ、署名もありません。

ブラウザーで試す

https://attest.rta.lat/demo — レイヤーごとに1つ、合計4つのボタンがあり、レスポンス全体がすぐに表示されます。

公開リポジトリ

https://github.com/mrpkk/attest

信頼が必要なエージェント向けの6つの小さなサービス、Indra セットの一部です:https://indra.rta.lat

MCP サーバー(Model Context Protocol)

attest は MCP サーバーです。Streamable HTTP(JSON-RPC 2.0)で Model Context Protocol を使用し、検証機能を MCP ツールとして公開します。

  • MCP ツール(このサーバーの主な機能です。エージェントが直接呼び出します):
    • verify_artifact — 1つのアーティファクトを検証し、判定、信頼スコア、検出事項を返します。
    • verify_artifact_batch — 1回の呼び出しで一括検証し(スキャンレポートや検出事項のリストなど)、アーティファクトごとの判定と概要を返します。
    • bridge_check — エスクローブリッジを介して2つのエージェント間の有償作業を精算し、署名付きレシートを発行します(オフラインで検証可能)。
  • MCP リソース:まだ公開していません。resources/list はエラーではなく空のリストを返すため、MCP クライアントやディレクトリスキャナーがサーバーを異常と判断することはありません。
  • MCP プロンプト:まだ公開していません。同じ理由で、prompts/list は空のリストを返します。
  • トランスポート:Streamable HTTP。無料プランでは認証不要です。プリペイドキーには X-ATTEST-ENTITLEMENT ヘッダー、呼び出しごとの x402 決済には PAYMENT-SIGNATURE/X-PAYMENT を使用します。
MCP クライアントを接続する
{
  "mcpServers": {
    "attest": { "url": "https://attest.rta.lat/mcp" }
  }
}

Claude Desktop、Claude Code、Cursor、Codex、VS Code、およびリモート Streamable HTTP サーバーに対応したその他の MCP クライアントは、この設定をそのまま使用できます。

私たち自身も使用しています。自社のエージェントは opencode.jsonc で MCP SDK を通じて、まさにこの URL を呼び出します。そのため、テストだけでなく、毎日実際のトラフィックでサーバーが稼働しています。

エージェントから使う

{
  "mcpServers": {
    "attest": { "url": "https://attest.rta.lat/mcp" }
  }
}

この設定はドキュメント用のサンプルではありません。私たち自身のエージェントがこのサーバーを呼び出す方法です(同じ公開 URL、キー不要、登録不要)。

ツール:verify_artifact、verify_artifact_batch。1日あたり20回まで無料でチェックでき、それ以降は x402(USDC、Base)で1回あたり $0.005、または30日間 $9 です。インド向け価格は30日間 $3 です。

コメント

MCP は初めてですか?

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

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