Flario について
Flario は、FTSO 価格、FDC アテステーション、FAssets など、Flare Network のプロトコルを扱うエージェント向け MCP サーバーです。オンチェーンのルートに照らして証明をローカル検証し、x402 による従量課金と検証可能なレシートに対応します。
主な機能
- 01FTSO 価格の取得と証明検証
- 02FDC アテステーション処理
- 03FAssets と清算リスクの確認
- 04Flare ポートフォリオ情報の取得
- 05x402 の従量課金とレシート
活用シーン
- 01価格を取得して証明をローカル検証
- 02FAssets の担保と清算リスクを確認
- 03x402 の決済を検証
- 04証拠をまとめて独立検証
MCP 対応
Flario は、Flare プロトコルの照会、証明付きデータの検証、有料呼び出しを行うツールとガイド付きプロンプトを提供します。stdio 接続または HTTP ハブとして動作します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y flarioFLARE_RPCFlare mainnet C-chain RPC. Defaults to the public endpoint https://flare-api.flare.network/ext/C/rpc.FLARE_RPC_TESTNETCoston2 testnet RPC. Defaults to the public endpoint https://coston2-api.flare.network/ext/C/rpc.FLARE_PRIVATE_KEYシークレットOnly needed to submit FDC attestation requests on-chain or to broadcast an x402 settlement. Every read tool works without it.X402_ENABLEDSet to true to turn on the x402 paywall for the two premium tools. Off by default, so premium tools are free.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
24掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| address | string | はい | |
| network | enum | はい | mainnet | coston2 | songbird | coston |
詳細
Flario
Flare Network 向けの MCP サーバーです。 Flario を使うと、AI エージェントは(Claude、Cursor、VS Code、または任意の Model Context Protocol クライアントから)自然な言葉で Flare の組み込みプロトコルにアクセスできます。FTSO 価格フィード、FDC クロスチェーンアテステーション、FAssets に対応しています。また、エージェントにウォレットも提供します。プレミアムツールは x402 を使って呼び出しごとに課金され、Flare 上で決済されます。すべての支払いには、チェーン自体が証明できるレシートが付与されます。
npx flario でインストールするか、HTTP ハブとして実行できます。公開 Flare RPC にそのまま接続でき、読み取りにはアカウントもキーも不要で、資金を保有したり転送したりすることはありません。
Flario は組み込みスタック全体をカバーします。FTSO 価格(証明付きアンカーフィードを含む)、ローカルでの Merkle 証明検証を伴う FDC アテステーションのワークフロー、詳細な FAssets の状態(エージェントごとの担保、清算リスク、システム全体の合計、償還キュー)、Flare ポートフォリオの読み取り(委任、投票力、請求可能な報酬)、Songbird と Coston のサポート、Flare Confidential Compute コントラクトのウォッチャーに対応しています。読み取りは信頼を最小限に抑えています。FDC と FTSO の証明は、API を無条件に信頼せず、オンチェーンの Relay ルートに対してローカルで検証します。唯一の書き込み操作である fdc_request_attestation は、FLARE_PRIVATE_KEY を設定した場合にのみトランザクションを送信します。設定していない場合は、自分で署名できるよう、準備済みのリクエストを渡します。
これは Flare 公式 MCP サーバーを置き換えるものではなく、補完するものです。 公式サーバー(
dev.flare.network/mcp)はドキュメント検索を行い、エージェントに知識を提供します。Flario はエージェントに手段とウォレットを提供します。組み込みプロトコルを呼び出し、計算結果のためにエージェントが支払えるようにし、チェーンで検証可能なレシートを返します。両方をお使いください。
x402 エコシステムにおける位置づけ
Flario は標準の x402 ワイヤーフォーマットに対応しているため、独自の方言ではありません。支払い要件は一般的な形式で返され、支払いペイロードは HTTP ハブ上の X-Payment ヘッダーで base64 エンコードされて送信され、決済の概要は X-Payment-Response で返されます。既存の x402 クライアントは MCP を知らなくても Flario エンドポイントに支払うことができ、MCP エージェントは HTTP を知らなくても支払うことができます。
Flario がさらに加えるのは、証明レイヤーです。一般的な x402 の導入では、決済が完了したことをクライアントが知る根拠は、ファシリテーターの説明と、ファシリテーターが示すトランザクションです。Flare にはデータコネクターがチェーンに組み込まれているため、Flario はさらに踏み込めます。fdc_verify_settlement は決済トランザクションに関する FDC アテステーションを取得し、オンチェーンの Relay ルートに対して Merkle 証明をローカルで検証し、実際の ERC-20 送金と紐付けます。そのため、ファシリテーターを信頼しなくてもレシート自体で証明できます。この手順はチェーンに組み込まれたプロトコルに依存しており、そのため他の場所へ移植するのは困難です。
DELICTI:行動の前に委任を
flario は、DELICTI を話す初のエフェクターです。支払いを行うエージェントは、x402 ペイロードに mandate_id(任意で mandate_registry)を追加できます。サーバーはこれをレシート(flario-receipt/2、フィールド mandate_ref)に結び付けるため、第三者は誰でも、その行為をオンチェーンの委任と照合できます。また、Flare の FDC を第二の証人として、レシートが偽りであることや予算超過を証明できます。
任意のブレーキ — サーバーで設定します:
DELICTI_REGISTRY=0x… # MandateRegistry address on X402_NETWORK
DELICTI_REQUIRE_MANDATE=1 # refuse payments that carry no mandate_id
DELICTI_REGISTRY を設定すると、委任が有効でない支払い、または支払者が委任されたエージェントではない支払いは、資金が移動する前に拒否されます。ここでは EIP-712 の承認には一切触れません。誤った委任によって資金が移動することはなく、行為が拒否されるか、後から偽りであると証明されるだけです。
Flario を選ぶ理由
- Flare に組み込まれたプロトコルを深く扱います。 FTSO、FDC、FAssets はチェーンに深く組み込まれており、Flario の 24 個のツールも同様です。汎用的なマルチチェーン MCP サーバーではこれらにアクセスできず、その深い対応を別のチェーンに移すこともできません。
- 回答には証明が付くため、私の言葉を鵜呑みにする必要はありません。 価格やクロスチェーンの事実には、Flario がオンチェーンのルートと照合してローカルで検証する Merkle 証明が付属します。エージェントやスマートコントラクトは、どの API も信頼することなく回答を利用できます。
- エージェントは支払いができ、レシートも受け取れます。 プレミアムツールは Flare 上の x402 を通じて呼び出しごとに決済され、各支払いでは、ファシリテーターの言葉だけでなく、Flare 独自の FDC が証明できるポータブルなレシートが返されます。現在、x402 エコシステムに属する他のチェーンには、これを実現できるものはありません。
- セルフホスト可能で、資産を預かりません。 公開 RPC を使って動作し、データの読み取りにアカウントやキーを要求せず、資金に触れることもありません。
例
Flario を MCP クライアントに追加したら(インストールを参照)、自然な言葉で尋ねるだけです。
| エージェントへの質問 | Flario が実行するもの |
|---|---|
| 「Flare 上の FLR/USD 価格は? 検証できる証明も付けてください」 | get_ftso_anchor_feed |
| 「今、清算が最も近い FXRP エージェントはどれですか?」 | fassets_liquidation_scanner |
「0x... の FLR ポートフォリオを表示してください。残高、委任、請求可能な報酬をお願いします」 | get_flr_stake_info |
「FXRP エージェント 0x... の運営者は誰ですか?」 | fassets_agent_details |
| 「Flare の FDC を使って、この決済が実際に行われたことを証明してください」 | fdc_verify_settlement |
| 「この API のデータを証明付きでオンチェーンに記録し、信頼するホストからのものだけを受け付けてください」 | fdc_web2json_request、続けて fdc_verify_web2json |
証明付きの価格は、値と、エージェントが独自に検証できる証明を併せて返します(抜粋)。
{
"verified": true,
"verification": "Local: keccak256(abi.encode(feed body)) folded through the Merkle proof equals Relay.merkleRoots(100, round) read on-chain.",
"name": "FLR/USD",
"price": 0.006786,
"voting_round_id": 1402671,
"merkle_root": "0x...",
"proof": ["0x...", "0x..."]
}
インストール
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または %APPDATA%\Claude\claude_desktop_config.json(Windows)を編集して、次を追加します。
{
"mcpServers": {
"flario": {
"command": "npx",
"args": ["-y", "flario"],
"env": {
"FLARE_RPC": "https://flare-api.flare.network/ext/C/rpc",
"FLARE_RPC_TESTNET": "https://coston2-api.flare.network/ext/C/rpc"
}
}
}
}
Claude Desktop を再起動してから、「Flare 上の FLR/USD 価格は?」や「現在、FXRP はどれくらい発行されていますか?」などと尋ねてください。
Cursor
~/.cursor/mcp.json(グローバル)または .cursor/mcp.json(プロジェクトごと)を編集して、次を追加します。
{
"mcpServers": {
"flario": {
"command": "npx",
"args": ["-y", "flario"]
}
}
}
同じ設定ブロックは、stdio をサポートするあらゆる MCP クライアント(VS Code、Windsurf、Zed など)で使えます。デフォルトで公開 Flare RPC を使用するため、env ブロックは任意です。
動作確認(クライアント不要、約10秒)
# List all 24 tools straight from the published package:
npx -y @modelcontextprotocol/inspector --cli npx -y flario --method tools/list
# Or call one, a proof-carrying FLR/USD price on mainnet:
npx -y @modelcontextprotocol/inspector --cli npx -y flario \
--method tools/call --tool-name get_ftso_anchor_feed \
--tool-arg feed_id=FLR/USD --tool-arg network=mainnet
まずはここから:Flare の知識がなくても使える 7 つのプロンプト
ツールは質問に答えます。プロンプトは、そもそも何を尋ねればよいかを教えてくれます。Flario には 7 つのプロンプトが用意されており、接続すると MCP クライアントのプロンプト一覧に表示されます。Claude Desktop では、メッセージボックスの + メニューに表示されます。
| プロンプト | 内容 |
|---|---|
| Flare でできることを見せて | 実際の呼び出しを通じて、価格、ローカルで検証できる証明付きの同じ価格、FAssets の状態を順に見ていきます。Flare が初めてなら、ここから始めてください。 |
| 誰も信頼せずに価格を検証する | 1 つのフィードを通常の形式と証明付きの形式で 2 回読み取り、verified: true の根拠となったもの(どのリーフか、どのフォールドか、ルートの由来となったコントラクト)を詳しく説明します。 |
| Web API の情報を証明可能な事実に変える | Web2Json を最初から最後まで説明します。注意点も取り上げます。有効な証明が証明するのは、データがその中に含まれる URL から取得されたことだけであり、その URL が信頼に値することではありません。 |
| FAssets システムの健全性を確認する | FAssets の仕組みを説明するのではなく、稼働中の価格に基づいて、稼働中のエージェントの担保を実際にリスク評価します。 |
| エージェントが判断に使った情報を証明する | 判断の根拠となった事実をまとめたうえで、そのまとめに細工を加え、偽造されたものを検証で見破る様子を確認できます。 |
| Flare 2.0 の展開状況を見る | 展開が進行中の Flare 2.0 について、どのネットワークに導入されているか、何ができるかなど、機密コンピューティングの展開状況をチェーンから読み取ります。 |
| エージェントを構築する人に向けた Flare の魅力 | マーケティングサイトではなく実際の呼び出しを根拠に、Flare を選ぶ理由と選ばない理由を示します。エコシステムの弱点も含みます。 |
すべてのプロンプトは、モデルに対し、稼働中のネットワークで実際に呼び出しを実行してから、何が起きたかを説明するよう指示します。そのため、実際の数値を得ながら、同時に全体像もつかめます。また、まだ稼働していないものについては、曖昧な説明でごまかさず、そのことを認めるよう意図的に設計されています。
Flare 2.0 の登場を見守る
Flare の機密コンピューティングは現在、ネットワークごとに順次展開されています。Flare はまだ ABI を公開しておらず、アルファ版のリリースも含め、周辺アーティファクトに FlareTeeManager は存在しません。それでも fcc_deployment_status は状況を読み取ります。興味深い事実を知るのに ABI は必要ないからです。
2026 年 9 月 1 日時点で、次の情報が報告されています。
Confidential compute is registered on: coston.
Not yet on: mainnet, songbird, coston2.
coston: FlareTeeManager @ 0xc4885998f5D792ed88C5Af7a3AaCBe333f017658
ERC-2535 diamond, 18 facets, 198 selectors, 0 unrecognised
live state: 11 governance signers, machine allowlist revised 4 times
fdc2Hub() -> 0x064C7B68B0e2BC87e7bE34e89741485Fcb48FA2F (has code)
fdc2Verification() -> 0x21D3842E39A3b62ba15CD8A5D2ED5cEDea931502 (has code)
機能はセレクターから読み取れます。Protocol Managed Wallets、TEE マシンとそのコードハッシュのリモート認証、マシン許可リストに対するマルチシグガバナンス、エンクレーブ内で生成される乱数、そして FDC V2 との接続です。
関数呼び出しではなくセレクターを使う理由
推測した関数シグネチャをもとに構築したツールは、Flare がインターフェースを確定した瞬間に壊れます。セレクターはダイヤモンド内部のルーティングテーブルです。オンチェーン上の事実であり、名前が変わっても移動しません。そのため、このツールは正確な情報(ファセット、セレクター、アドレス、接続状況、ガバナンスの状態)を報告し、推定した情報にはその旨を明記します。人が読める名前は公開シグネチャデータベースから取得しており、名前を表示するたびにそのことを伝えます。198 個すべてのセレクターが解決され、テーマにも一貫性があるため、この対応付けはほぼ確実に正しいと考えられます。しかし、表示されるのは「ほぼ確実」であり、それ以上の確信を装った表現ではありません。
これは未完成のシステムをテストネットに展開したもので、その中のあらゆる要素が変わる可能性があります。それこそが、統合ではなくモニターを使う理由です。
エージェントが何に基づいて行動したかを証明する
ここにあるほかのツールは、問い合わせた時点で事実を検証しますが、その検証結果はすぐに消えてしまいます。あとから誰も再確認できないツールの応答内の一文として残るだけです。エビデンスバンドルがこのギャップを埋めます。
evidence_bundle は、証明を伴う事実を集めて、ひとつのポータブルなオブジェクトにします。evidence_verify は受け取り側の処理です。各リーフをそれ自体の本文から再構築し、Merkle プルーフをたどって折りたたみ、その結果を、その時点でオンチェーンから読み取った Relay.merkleRoots(protocol, round) と比較します。検証する人は、バンドルを生成したエージェント、このサーバー、データ可用性レイヤー、いずれの API も信頼する必要はありません。必要なのは RPC エンドポイントだけです。
バンドルに格納する前に、事実を検証します。検証に失敗した事実はフラグを付けるのではなく、拒否します。内容が偽かもしれないバンドルは、バンドルがない状態よりも悪いためです。同じ理由から、expect_source のない Web2Json の事実も拒否します。紐付けられていないプルーフは、その中にある URL が何であれ、それを証明してしまうからです。
ハッシュはセキュリティ境界ではありません
bundle_hash は改ざんの検出に使われます。偶発的な破損や軽微な編集は検出できますが、意図的にバンドルを編集する攻撃者は、ハッシュを再計算するだけです。それで問題ありません。そもそも、ハッシュがセキュリティを担っているわけではないからです。実際にメインネットで実行した、注目すべきケースを紹介します。
podmieniona wartosc 7116 -> 21348, hash przeliczony na nowo
verified: false | bundle_hash_intact: true | facts_failed: 1
reason: the proof does not fold to the on-chain FTSO Scaling root
攻撃者は価格を3倍にし、整合性チェックを通過するようハッシュも再計算しました。それでも検証は失敗します。Flare のバリデーターがすでに署名したルートに折りたたまれる Merkle プルーフを作ることは、JSON ファイルを編集するだけではできないからです。
バンドルが証明しないこと
エージェントが推論について正直だったこと、確認した事実がこれだけだったこと、あるいはその結論がそれらの事実から導かれることは証明しません。特定の投票ラウンドにおいて、これらの事実が真実だったことを証明します。これは「監査証跡」よりも限定的な主張であり、その限定性は意図的なものです。
また、ほとんどの検証可能なツール呼び出しの取り組みが主張することとも異なります。TEE、実行に対する ZK、あるいはサーバー署名を通じてサーバーが「正しく実行した」と証明しても、運用者やそのハードウェアを信頼する必要があります。これはコンセンサスに対して「事実そのもの」を証明します。そのためには、誰かがデプロイしたコントラクトではなく、オラクルがプロトコルの一部になっているチェーンが必要です。
ツール
すべてのツールは zod で入力を検証し、RPC 呼び出しやデータソースが停止している場合もクラッシュせず、明確なエラーを返します。22 個のツールは無料です。2 個のプレミアムツールは、運用者が有効にした場合は Flare 上の x402 で決済され、それ以外の場合は無料です。
| ツール | ネットワーク | ティア | 機能 |
|---|---|---|---|
get_flr_balance | mainnet, coston2, songbird, coston | 無料 | アドレスのネイティブ FLR とラップ済み WFLR(WNat)の残高 |
get_flr_stake_info | mainnet, coston2, songbird, coston | 無料 | ポートフォリオ:FLR と WFLR、投票権、委任、ソース別の請求可能な報酬、FlareDrops |
get_ftso_feed | mainnet, coston2, songbird, coston | 無料 | 1 つの FTSO フィード("FLR/USD" または bytes21 ID)の最新価格 |
get_ftso_feeds_all | mainnet, coston2, songbird, coston | 無料 | すべてのバンドル済みフィードの最新価格 |
get_ftso_providers | mainnet, coston2(注を参照) | 無料 | アクティブな FTSO データプロバイダー |
get_ftso_anchor_feed | mainnet, coston2, songbird, coston | 無料 | Merkle 証明付きの FTSO Scaling 価格。オンチェーンの Relay ルートとローカルで照合します |
get_ftso_history | mainnet, coston2, songbird, coston | 無料 | パブリック DA レイヤーから取得する最近の FTSO Scaling アンカーフィード履歴。各データポイントは Merkle 検証済みです |
get_fassets_status | mainnet, coston2 | 無料 | FAssets の総ミント量とエージェント数(簡易サマリー。fassets_system_state を参照) |
get_fdc_proof_status | mainnet, coston2, songbird, coston | 無料 | ラウンドの FDC Merkle ルートとファイナライズ状況 |
get_smart_account_info | mainnet, coston2(注を参照) | 無料 | XRPL アカウントの Flare アドレスを解決します |
fdc_request_attestation | mainnet, coston2, songbird, coston | 無料 | FDC アテステーションリクエストを準備し、任意で送信します。トランザクションハッシュと投票ラウンド ID を返します |
fdc_get_attestation_proof | mainnet, coston2, songbird, coston | 無料 | DA レイヤーから証明を取得し、オンチェーンの Relay ルートとローカルで照合します |
fassets_agent_status | mainnet, coston2, songbird | 無料 | エージェントごとの担保比率、ミント容量、清算状況(リスクの高い順) |
fassets_system_state | mainnet, coston2, songbird | 無料 | 総ミント量、ロットサイズ、ミント上限と一時停止状況、総担保、償還キュー |
fassets_agent_details | mainnet, coston2, songbird | 無料 | エージェント名、説明、ロゴ、利用規約、ホワイトリスト状況(AgentOwnerRegistry) |
songbird_fcc_registry | songbird(デフォルト)、all | 無料 | 稼働中のコントラクトレジストリをスキャンし、Flare Confidential Compute(PMW、TEE)のデプロイを検出します |
fdc_verify_settlement | mainnet, coston2, songbird, coston | 無料 | 組み込みの FDC(EVMTransaction アテステーション)で x402 決済を証明し、決済に紐付けます |
fdc_web2json_request | mainnet, coston2, songbird, coston | 無料 | Flare の検証者を通じて準備し、任意のパブリック Web API を検証可能な事実に変換します:URL、jq フィルター、ABI シグネチャ |
fdc_verify_web2json | mainnet, coston2, songbird, coston | 無料 | Web2Json の証明をローカルで検証し、期待するソースにも紐付けてからペイロードをデコードします |
fassets_liquidation_scanner | mainnet, coston2, songbird | プレミアム(x402) | FAssets エージェントとリアルタイムの FTSO 価格を組み合わせ、エージェントごとの清算価格とその価格までの差を表示します |
fdc_bulk_proof_bundle | mainnet, coston2, songbird, coston | プレミアム(x402) | 最大 20 件の FDC 証明を一括取得し、ローカルで検証します |
一部のツールに関する注記:
- 運用者が
X402_ENABLED=trueを設定しない限り、プレミアムツールも無料で実行されます。決済の仕組み を参照してください。 get_ftso_providersには外部インデクサーのエンドポイントが必要です(下記の環境変数で設定)。読み取り専用の stdio サーバーでプロバイダーをオンチェーンから集約するのは現実的ではありません。get_smart_account_infoはベストエフォートです。MasterAccountController ABI はまだ periphery アーティファクトで公開されていないため、解決できない場合はhas_account: falseという通知を返します。
FDC アテステーションのフロー
1. fdc_request_attestation (type: Payment | AddressValidity | EVMTransaction,
source_chain: xrp | btc | doge | eth | flr | sgb)
-> verifier prepareRequest -> fee quote -> FdcHub.requestAttestation
-> { tx_hash, voting_round_id, abi_encoded_request }
2. wait ~90 to 180 s for the voting round to finalize
3. fdc_get_attestation_proof (voting_round_id, abi_encoded_request)
-> DA-layer proof -> local keccak256 Merkle fold -> must equal
Relay.merkleRoots(200, round) read on-chain -> verified response
FLARE_PRIVATE_KEY が設定されていない場合、ステップ 1 はエンコード済みのリクエスト、手数料、FdcHub のアドレスを含む mode: "prepared_only" を返すため、お手持ちの署名者を使って送信できます。キーを設定した場合でも、署名は常にローカルでのみ行われます。
支払いの仕組み(x402)
Flario は、MCP 上で x402 支払いプロトコル を実装しています。私の知る限り、有料ツールの決済を、サービスを提供するのと同じチェーン上で行う初の MCP サーバーです。HTTP の 402 ステータスと X-Payment ヘッダーは、ツールの結果とツール引数に対応します。
1. call a paid tool -> result: { x402_payment_required: true,
accepts: [requirements] }
2. sign an EIP-3009 TransferWithAuthorization off-chain (gasless for the payer)
3. retry the SAME call with -> x402_payment: base64(JSON payload)
4. the server checks the EIP-712 signature locally, checks the nonce on-chain,
settles transferWithAuthorization on Flare, runs the tool
-> result includes x402_payment_receipt (settlement summary) and
x402_receipt (a portable, ZK-ready receipt; see RECEIPT_SPEC.md)
組み込みのファシリテーターが資金を預かることはありません。transferWithAuthorization はトークンを支払者から受取人へ直接移動させ、オペレーターキーが支払うのは、クライアントがすでに署名したオーソリゼーションをブロードキャストするためのガス代だけです。リプレイは二重に防止されます。EIP-3009 のノンスはオンチェーンで消費され、決済済みのノンスもプロセス内にキャッシュされます。
有料の呼び出しはすべて、ポータブルな x402_receipt を返します。これは固定スキーマの自己記述型レコードで、支払者は Poseidon コミットメントとしてのみ示され、平文で記録されることはありません。また、keccak256 の receipt_hash が含まれており、誰でも再計算して改ざんがないか確認できます。支払者は、任意の commitment_salt を支払いペイロードに含めてコミットメントをブラインド化できます。完全な仕様については、RECEIPT_SPEC.md を参照してください。
Web 上のあらゆる事実を証明する(Web2Json)
FDC の Web2Json 型は、URL から JSON を取得し、jq フィルターを適用して、ABI エンコードされたデータを返します。つまり、公開 API 上のあらゆる情報を、スマートコントラクトが検証できる事実にできます。Flario はこの一連の流れをエージェント向けにまとめています。
1. fdc_web2json_request (url + post_process_jq + abi_signature)
-> a Flare verifier validates it and quotes the fee
-> submit to FdcHub (your key), get a voting round id
2. wait ~90 to 180 s for the round to finalize
3. fdc_verify_web2json (voting_round_id + abi_encoded_request + expect_source)
-> Merkle proof checked locally against Relay.merkleRoots(200, round)
-> attested URL bound to the source you expected
-> payload decoded with the request's own ABI signature
expect_source が重要な理由
Flare の公式ガイドでは、この落とし穴について明確に説明されています(URL parsing security)。
有効な FDC 証明が保証するのは、データが証明内の URL から取得されたということだけです。その URL が信頼できることまでは保証しません。
したがって、マークル検証に合格した証明は、説明の半分にすぎません。攻撃者は独自のエンドポイントを立ち上げ、そこに対する完全に有効なアテステーションを取得して、その証明を渡すことができます。そのため、fdc_verify_web2json は証明を検証するだけでなく、証明を実際に意図したソースに結び付けます。
{
"expect_source": {
"hosts": ["api.coingecko.com"],
"path_prefix": "/api/v3/simple/price",
"require_https": true,
"http_method": "GET"
}
}
アテステーションされた URL が一致しない場合、暗号学的には問題がなくても、呼び出しは明確に失敗します。expect_source を省略しても証明は取得できますが、攻撃者が悪用できる経路であるため、レスポンスには警告とともに source_bound: false と表示されます。
結び付けには、文字列のプレフィックス照合ではなく実際の URL パーサーを使用しているため、単純なチェックでは見逃される次の 3 つの回避手段を防げます。
| 攻撃 | 見た目 | プレフィックス照合が失敗する理由 |
|---|---|---|
| ユーザー情報 | https://[email protected]/price | 信頼できる文字列で始まっていますが、ホストは evil.com です |
| ホモグラフ | https://аpi.coingecko.com/price(キリル文字の а) | 見た目は同一ですが、ホストが異なります |
| パス注入 | https://api.coingecko.com/evil/api/v3/simple/price | 期待するパスを含んでいますが、そのパスで始まっていません |
これらはそれぞれ test/web2json.test.ts にテストがあります。
以下は、Flare の Web2Json ガイドと同じ API を使用した、Coston2 の実際の検証済みレスポンスです(一部省略)。
{
"verified": true,
"source_bound": true,
"verification": "Two checks passed. The Merkle proof folds to Relay.merkleRoots(200, round) read on-chain, and the attested request matches the source you expected (protocol, host, path, method).",
"voting_round_id": 1409295,
"source": {
"url": "https://swapi.info/api/people/3",
"http_method": "GET",
"parsed": { "protocol": "https", "host": "swapi.info", "path": "/api/people/3" }
},
"data": { "name": "R2-D2", "height": "96", "mass": "32" }
}
同じ証明を別のホストを期待してリクエストすると、暗号学的には完全に有効であっても、意図どおり呼び出しは失敗します。
The FDC proof is VALID (Merkle-verified against the on-chain Relay root) but it
does NOT come from the source you expected: attested host "swapi.info" is not in
the expected list (api.coingecko.com). Treat this data as untrusted.
FDC による検証済みの決済(最も誇りに思っている部分です)
レシートには決済が完了したと記載されています。Flare では、チェーンに組み込まれたデータコネクターを使って、それが事実であることを証明できます。fdc_verify_settlement は決済トランザクションを受け取り、そのトランザクションに関する FDC EVMTransaction アテステーションを取得します。次に、オンチェーンの Relay ルートに対する Merkle 証明をローカルで検証し、アテステーションを決済に紐付けます。具体的には、アテステーション対象のトランザクションに、受取人宛てに指定額以上の資産を送金する ERC-20 Transfer が実際に含まれていることを確認します。その結果、fdc_attestation_ref によって、ファシリテーターを信頼しなくても決済を証明できるレシートが得られます。x402 エコシステムの他のチェーンでは、このようなプロトコルレベルのレシートは生成されません。このツール自体はトランザクションを送信しません(アテステーション要求はパーミッションレスのため、保有者が送信します)。そのため、ホスト型ハブがだまされてガスを消費させられることはありません。
オペレーターのセットアップ:
X402_ENABLED=true
X402_NETWORK=coston2 # mainnet also needs X402_ALLOW_MAINNET=true
X402_PAY_TO=0xYourPayeeAddress
FLARE_PRIVATE_KEY=0x... # operator gas key for settlements
# optional: X402_TOKEN_ADDRESS, X402_PRICE_DEFAULT=0.001,
# X402_PRICE_FASSETS_LIQUIDATION_SCANNER=0.005 (whole-token units)
決済トークン(EIP-3009、2026年7月にオンチェーンで確認済み):Coston2 のデフォルトは 0xce13911D4896200b543a61E4ae8E829E661Dd8EB(テスト用 USDT0)で、メインネットのデフォルトは公式の USD₮0(0xe7cd86e13AC4309349F30B3435a9d337750fC82D)です。npx tsx scripts/x402-demo-client.ts を使って、エージェントのフロー全体を試すことができます。
ハブとして実行する
Flario は、ローカルの stdio プロセスではなく、ネットワークサービスとして実行できます。
npx flario --http 8402 # or FLARIO_HTTP_PORT=8402
# to expose it beyond localhost:
FLARIO_HTTP_HOST=0.0.0.0 npx flario --http 8402
| エンドポイント | 提供内容 |
|---|---|
POST /mcp | Streamable HTTP(ステートレス)による完全な MCP サーバー。全 24 個のツールを提供し、x402 に対応 |
GET /api/premium/liquidation-scanner?asset=FXRP&network=mainnet | HTTP x402:402 と accepts[] を返します。X-Payment ヘッダーを付けて再試行すると、結果と X-Payment-Response を取得できます |
POST /api/premium/proof-bundle | 同じ x402 フローです。本文:{"requests":[{"voting_round_id":N,"abi_encoded_request":"0x..."}],"network":"..."} |
GET / | ディスカバリー:エンドポイント、x402 の設定、価格 |
GET /healthz | 稼働状況 |
REST エンドポイントは標準の x402 ワイヤーフォーマット(X-Payment 内の Base64 JSON)を使用しているため、MCP 以外のエージェントや既存の x402 クライアントも支払いができます。リポジトリには Dockerfile があります。
docker build -t flario-hub . && docker run -p 8402:8402 \
-e X402_ENABLED=true -e X402_PAY_TO=0xYou -e FLARE_PRIVATE_KEY=0x... flario-hub
ネットワーク
| ネットワーク | チェーン ID | デフォルト RPC | 上書き用環境変数 |
|---|---|---|---|
| Flare メインネット | 14 | https://flare-api.flare.network/ext/C/rpc | FLARE_RPC |
| Coston2 テストネット | 114 | https://coston2-api.flare.network/ext/C/rpc | FLARE_RPC_TESTNET |
| Songbird カナリア | 19 | https://songbird-api.flare.network/ext/C/rpc | FLARE_RPC_SONGBIRD |
| Coston テストネット | 16 | https://coston-api.flare.network/ext/C/rpc | FLARE_RPC_COSTON |
コントラクトアドレスはハードコードされません。実行時に、4 つすべてのネットワークで同じアドレス 0xaD67FE66660Fb8dFE9d6b1b4240d8650e30F6019 にある Flare の ContractRegistry を通じて解決されます。FDC 検証サービスと Data Availability エンドポイントのデフォルトには、dev.flare.network/network/overview に記載されている Flare 提供のパブリックサービスが使用されます。
設定
ここに記載されている項目はすべて任意です。設定がなくても、サーバーはパブリック RPC と Flare がホストする FDC サービスを利用して動作します。
| 変数 | 使用箇所 | 目的 |
|---|---|---|
FLARE_RPC | すべてのメインネット呼び出し | メインネットの RPC エンドポイントを上書きします。 |
FLARE_RPC_TESTNET | すべての Coston2 呼び出し | Coston2 の RPC エンドポイントを上書きします。 |
FLARE_RPC_SONGBIRD | すべての Songbird 呼び出し | Songbird の RPC エンドポイントを上書きします。 |
FLARE_RPC_COSTON | すべての Coston 呼び出し | Coston の RPC エンドポイントを上書きします。 |
FLARE_PRIVATE_KEY | fdc_request_attestation、fdc_web2json_request | アテステーションリクエストの送信に使うローカル署名鍵です。ログに記録されず、署名済みトランザクション以外の形でプロセス外に出ることはありません。準備のみのモードでは設定しないでください。 |
FLARIO_HUB_ALLOW_SUBMIT | ハブモード | ハブモードでのオンチェーンアテステーション送信を許可します。匿名の呼び出し元が運用者のガス代を使えないよう、デフォルトでは無効です。セキュリティの方針を参照してください。 |
FDC_VERIFIER_API_KEY | fdc_request_attestation | Verifier API キーです。デフォルトは公開鍵 00000000-0000-0000-0000-000000000000 です。 |
FLARE_DA_API_KEY | fdc_get_attestation_proof | DA レイヤーの API キーです。デフォルトは公開鍵です。 |
FLARE_DA_URL | fdc_get_attestation_proof | DA レイヤーのベース URL を上書きします(セルフホストインスタンスなど)。 |
X402_ENABLED | プレミアムツール | true にすると、プレミアムツールの x402 ペイウォールが有効になります。デフォルトでは無効のため、プレミアムツールは無料です。 |
X402_NETWORK | x402 | 決済ネットワークです(デフォルトは coston2。mainnet では X402_ALLOW_MAINNET=true も必要です)。 |
X402_PAY_TO | x402 | 支払いの受取先アドレスです(有効にする場合は必須)。 |
X402_TOKEN_ADDRESS | x402 | EIP-3009 決済トークンの上書き設定です(デフォルト:Coston2 ではテスト用 USDT0、メインネットでは USD₮0)。 |
X402_PRICE_DEFAULT / X402_PRICE_<TOOL> | x402 | トークン単位での価格です(デフォルトは 0.001)。 |
FLARE_PROVIDERS_API | get_ftso_providers | プロバイダーの JSON 配列(または { "providers": [...] })を返すインデクサーのエンドポイントです。 |
FLARE_METRICS_API | get_fassets_status | オプションのフォールバック用メトリクス API です。オンチェーン読み取りに失敗した場合にのみ使用されます。 |
コピーして使えるテンプレートについては、.env.exampleを参照してください。
セキュリティ体制
お金を扱うため、デフォルトでは慎重な設定にしています。
- 資金は一切預かりません。 Flario が資金を保有したり、転送したりすることはありません。x402 の決済では、
transferWithAuthorization内で支払者から受取人へトークンが直接移動します。オペレーターキーは、クライアントがすでに署名したオーソリゼーションをブロードキャストするためのガス代のみを支払います。 - 検証したうえで対象を照合します。 証明を受け取る各ツールは、1つではなく2つの処理を行います。検証に通る Merkle 証明は必要ですが、それだけでは不十分です。
fdc_verify_settlementはアテステーションを実際の ERC-20Transferと照合し、fdc_verify_web2jsonはアテステーションを想定していたソースと照合します。証明が有効でも対象が異なる場合は、明確な理由を示して拒否します。 - ハブモードでは、デフォルトで送信しません。 stdio モードでは呼び出し元はあなただけなので、アテステーションリクエストのために自分のガス代を使うのは、あなたが求めた処理です。ハブモードでは、ポートにアクセスできる人なら誰でも呼び出し元になり、オペレーターキーは x402 の決済に使われるため、見知らぬ人が有料のオンチェーンリクエストを実行できるようにすると、キーの資金が使い果たされるおそれがあります。そのため、ハブモードではオンチェーンへの送信を拒否し、準備済みのリクエストを返します。ただし、オペレーターが
FLARIO_HUB_ALLOW_SUBMIT=trueを設定した場合を除きます。 - キーはローカルに保管されます。
FLARE_PRIVATE_KEYは環境変数から読み込まれ、プロセス内で署名に使用されます。ログに記録されたり、設定した RPC へ署名済みトランザクションとして送信される以外の形で送信されたりすることはありません。 - リプレイ保護を二重にしています。 EIP-3009 のノンスはオンチェーンで消費され、決済済みのノンスも、ブロードキャスト後にオンチェーンで確認できるようになるまでの時間差を埋めるため、プロセス内にキャッシュされます。
- ユーザーごとのデータは収集も保存もしません。 アナリティクス、データベース、トランザクショングラフのログ記録はありません。レシートは、保有する人のものです。
- コントラクトアドレスはハードコードされていません。 実行時に Flare の
ContractRegistryを通じて解決され、ソース内のプロトコル定数にはすべて、参照元の Flare ドキュメントが記載されています。
何か見つけましたか? イシューを作成するか、機密性の高い内容であれば非公開でご連絡ください。
開発
git clone https://github.com/dziuba0x/flario.git
cd flario
npm install
npm run dev # watch mode via tsx, no build step
npm run build # type-check and compile to dist/
npm test # offline test suite, recorded fixtures, no network
npm start # run the compiled server
npm run inspect # open the MCP Inspector against the built server
npx tsx scripts/live-check.ts # live checks against public RPCs (mainnet, Coston2, Songbird)
スタック:TypeScript(ESM、Node 18 以降)、@modelcontextprotocol/sdk、viem、zod、@flarenetwork/flare-periphery-contract-artifacts。
ビルドでは、flario bin に接続された実行可能な dist/index.js(#!/usr/bin/env node シバン付き)が生成されます。Inspector CLI を使えば、クライアントなしで個別のツールをテストできます。
npx @modelcontextprotocol/inspector --cli node dist/index.js \
--method tools/call --tool-name get_ftso_feed \
--tool-arg feed_id=FLR/USD --tool-arg network=mainnet
ライセンス
MIT、Dziuba Technology / Alan Dziuba。
Flare Network 上に構築されています。イシューやコントリビューションを歓迎します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。