关于 Flario
Flario 是供 Agent 使用 Flare Network 协议的 MCP 服务,涵盖 FTSO 价格、FDC 证明和 FAssets。它会在本地依据链上根验证证明,并支持按次 x402 付款及可验证回执。
主要功能
- 01读取 FTSO 价格并验证证明
- 02处理 FDC 证明工作流
- 03检查 FAssets 与清算风险
- 04读取 Flare 投资组合数据
- 05通过 x402 按次付款并获取回执
适用场景
- 01查询并本地验证价格证明
- 02检查 FAssets 抵押品与清算风险
- 03验证 x402 结算
- 04汇总并独立验证证据
MCP 相关
Flario 提供查询 Flare 协议、验证携带证明的数据和付费调用的工具及引导式提示词。它可通过 stdio 或作为 HTTP hub 运行。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 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 Agent(在 Claude、Cursor、VS Code 或任何 Model Context Protocol 客户端中)通过日常语言访问 Flare 的内置协议:FTSO 价格馈送、FDC 跨链证明和 FAssets。它还为 Agent 提供钱包。高级工具按调用次数付费,使用在 Flare 上结算的 x402,每笔付款都会附带一张可由链本身验证的收据。
使用 npx flario 安装,也可以将它作为 HTTP 中枢运行。它开箱即用地支持 Flare 公共 RPC,读取数据无需账户或密钥,也绝不会持有或转发资金。
Flario 覆盖了完整的内置协议栈:FTSO 价格(包括携带证明的锚定价格馈送)、带本地 Merkle 证明验证的 FDC 证明工作流、深入的 FAssets 状态(每个 Agent 的抵押品、清算风险、系统总量、赎回队列)、Flare 投资组合读取(委托、投票权、可领取的奖励)、Songbird 和 Coston 支持,以及 Flare Confidential Compute 合约的监视器。读取操作将信任降至最低:FDC 和 FTSO 证明会在本地根据链上 Relay 根进行验证,而不会盲目信任 API。唯一的写入操作 fdc_request_attestation 只有在设置了 FLARE_PRIVATE_KEY 后才会提交交易;否则,它会提供一个准备好的请求,供你自行签名。
这是对 Flare 官方 MCP 服务的补充,而非替代品。他们的服务(
dev.flare.network/mcp)提供文档搜索,为 Agent 提供知识。Flario 则为 Agent 提供操作能力和钱包:它调用内置协议,并让 Agent 为计算结果付费,同时附上可由链验证的收据。两者可以同时使用。
Flario 在 x402 生态系统中的位置
Flario 使用标准 x402 线路格式,因此它不是一种私有方言。付款要求会以常见格式返回,付款载荷会在 HTTP 中枢上以 Base64 编码的形式通过 X-Payment 标头传输,结算摘要则会通过 X-Payment-Response 返回。现有的 x402 客户端无需了解 MCP,即可向 Flario 端点付款;MCP Agent 也无需了解 HTTP,即可付款。
Flario 在此基础上增加了证明层。在典型的 x402 部署中,客户端会因为 Facilitator 的说明并指向某笔交易,而得知付款已结算。由于 Flare 将数据连接器内置于链中,Flario 可以更进一步:fdc_verify_settlement 会获取关于结算交易的 FDC 证明,在本地根据链上 Relay 根验证 Merkle 证明,并将其绑定到实际的 ERC-20 转账,因此这张收据本身即可独立成立,无需信任 Facilitator。这一步依赖于链内置的协议,因此很难移植到其他地方。
DELICTI:行动前先取得授权
flario 是首个支持 DELICTI 的执行者。付费 Agent 可以在其 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 后,如果授权未生效,或付款方不是受授权的 Agent,则付款会在任何资金转移前被拒绝。这里的任何操作都不会影响 EIP-712 授权;错误的授权绝不会导致资金转移,只会导致行为被拒绝,或之后被证明无效。
为什么选择 Flario
- 深入支持 Flare 内置的协议。 FTSO、FDC 和 FAssets 都是链的内置功能,Flario 的 24 个工具也是如此。通用的多链 MCP 服务无法触及这些功能,这种深度也无法移植到其他链上。
- 回答附带证明,因此你不必只听我说。 价格和跨链事实都附带 Merkle 证明,Flario 会在本地根据链上根进行验证。Agent,甚至智能合约,都可以依赖这些回答,而无需信任任何 API。
- Agent 可以付款,并获得回执。 高级工具通过 x402 在 Flare 上按调用结算,每笔付款都会返回可移植的回执,Flare 自己的 FDC 可以对其进行证明,而不只是依赖协调器的说法。目前 x402 生态中的其他链都做不到这一点。
- 可自托管,无资金托管。 它通过公共 RPC 运行,读取数据时无需账户或密钥,也绝不会触碰你的资金。
示例
将 Flario 添加到 MCP 客户端后(请参阅安装),只需用日常语言提问:
| 向 Agent 提问 | Flario 运行 |
|---|---|
| “Flare 上的 FLR/USD 价格是多少?附上我可以验证的证明。” | get_ftso_anchor_feed |
| “现在距离清算最近的 FXRP Agent 是哪些?” | fassets_liquidation_scanner |
“显示 0x... 的 FLR 投资组合:余额、委托和可领取奖励。” | get_flr_stake_info |
“谁在运营 FXRP Agent 0x...?” | fassets_agent_details |
| “使用 Flare 的 FDC 证明这笔结算确实发生过。” | fdc_verify_settlement |
| “将此 API 的数据连同证明写入链上,并且只接受来自我信任的主机的数据。” | fdc_web2json_request 然后 fdc_verify_web2json |
附带证明的价格会返回数值,以及 Agent 可以自行验证的证明(内容已精简):
{
"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 等)。env 块是可选的,因为默认使用 Flare 公共 RPC。
检查是否正常(无需客户端,约 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
工具回答问题。提示词告诉你该先问什么。Flario 提供了七个提示词;连接后,它们会显示在 MCP 客户端的提示词列表中——在 Claude Desktop 中,位于消息框的 + 菜单里。
| 提示词 | 功能 |
|---|---|
| 看看 Flare 能做什么 | 通过实时调用进行引导式介绍:一个价格、同一价格及其携带的证明(你可以在本地验证),以及 FAssets 状态。如果你刚接触 Flare,就从这里开始。 |
| 无需信任任何人即可验证价格 | 对一个数据源读取两次,一次为普通读取,一次为携带证明的读取,然后逐步说明为何 verified: true:用了哪个叶节点、哪个折叠步骤,以及根来自哪个合约。 |
| 将 Web API 转化为可证明的事实 | 端到端演示 Web2Json,并揭示其中的陷阱:有效证明只能证明数据来自其中的网址,不能证明该网址值得信任。 |
| 检查 FAssets 系统健康状况 | 对实时 Agent 抵押品和实时价格进行实际风险评估,而非介绍 FAssets 的工作原理。 |
| 证明 Agent 据以行动的内容 | 汇总某项决策背后的事实,然后攻击这个汇总包,让你看到验证过程如何识破伪造的汇总包。 |
| 关注 Flare 2.0 的部署进展 | 从链上读取机密计算的部署情况——哪些网络已部署、它能做什么——即使部署仍在进行中也能读取。 |
| 面向 Agent 构建者:为什么选择 Flare | 基于实际调用而非营销网站,阐述支持和反对选择 Flare 的理由,并指出生态系统薄弱之处。 |
每个提示词都会指示模型针对实时网络实际执行调用,然后解释结果,因此你既能获得实际数据,也能同时建立起整体认知。它们刻意设计成在某项功能尚未上线时如实说明,而不是含糊其辞。
关注 Flare 2.0 的到来
Flare 的机密计算目前正在逐个网络部署,而 Flare 尚未发布其 ABI——外围构件中没有 FlareTeeManager,包括 alpha 版本。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)
从选择器中可以看出其功能:协议托管钱包、对 TEE 机器及其代码哈希进行远程证明、针对机器允许列表的多重签名治理、在安全飞地内生成随机数,以及 FDC V2 接线。
为什么使用选择器,而不是函数调用
基于猜测的函数签名构建工具,一旦 Flare 确定接口就会失效。选择器是钻石合约内部的路由表——它们是链上的事实,重命名不会改变它们。因此,该工具会报告准确的信息(facet、选择器、地址、接线和治理状态),并标明推断所得的信息:人类可读的名称来自公开的签名数据库,每次打印时报告都会说明这一点。198 个选择器均已解析,且主题一致,因此这些映射几乎可以确定是正确的;但打印出来的会是“几乎可以确定”,而不是更肯定的说法。
这是一个未完成系统的测试网部署,其中任何内容都可能发生变化。这正是需要监控工具而非集成工具的原因。
证明 Agent 操作所依据的内容
这里其他每个工具都只会在你提出请求时验证某个事实,之后验证结果便会消失——它只会作为工具响应中的一句话留存下来,没人能在之后重新核验。证据包填补了这一缺口。
evidence_bundle 会将携带证明的事实收集到一个可移植对象中。evidence_verify 则负责接收并验证:它会根据每个叶节点自身的内容重新构建叶节点,通过 Merkle 证明逐层计算,并与当时从链上读取的 Relay.merkleRoots(protocol, round) 结果进行比较。验证者不必信任生成证据包的 Agent、本服务、数据可用性层或任何 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
攻击者将价格提高了三倍,并重新计算哈希,使完整性检查通过。验证仍然失败,因为你无法通过编辑 JSON 文件,生成一个经 Merkle 证明折叠后能得到 Flare 验证者早已签署的根哈希。
证据包无法证明的内容
它无法证明 Agent 的推理是诚实的、它查看的只有这些事实,或它的结论能够由这些事实推出。它能证明的是:这些特定事实在这些投票轮次中为真。这比“审计跟踪”所表达的主张范围更窄,而且这种克制是有意为之。
这也不同于大多数可验证工具调用工作所提出的主张。证明服务端正确执行了操作——通过 TEE、对执行过程进行 ZK 证明,或服务端签名——仍然需要你信任运营方或其硬件。这里证明的是事实本身,依据的是共识;这需要一条将预言机纳入协议、而非由某人部署合约的链。
工具
每个工具都会使用 zod 验证输入,并在 RPC 调用或数据源不可用时返回清晰的错误,而不会崩溃。22 个工具免费。运营方启用后,两个高级工具通过 x402 on Flare 结算;否则免费。
| 工具 | 网络 | 等级 | 功能 |
|---|---|---|---|
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 | 免费 | 查询一个 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 | 免费 | 携带证明的 FTSO Scaling 价格及 Merkle 证明,并在本地根据链上 Relay 根进行验证 |
get_ftso_history | mainnet, coston2, songbird, coston | 免费 | 从公共 DA 层获取近期 FTSO Scaling 锚定数据源历史记录,每个数据点都经过 Merkle 验证 |
get_fassets_status | mainnet, coston2 | 免费 | FAssets 铸造总量和 Agent 数量(简要摘要;参见 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 | 免费 | 按 Agent 列出抵押率、铸造能力和清算状态(风险最高的排在前面) |
fassets_system_state | mainnet, coston2, songbird | 免费 | 铸造总量、批次大小、铸造上限和暂停状态、总体抵押情况、赎回队列 |
fassets_agent_details | mainnet, coston2, songbird | 免费 | Agent 名称、描述、徽标、使用条款、白名单状态(AgentOwnerRegistry) |
songbird_fcc_registry | songbird(默认)、所有 | 免费 | 扫描实时合约注册表,查找 Flare Confidential Compute(PMW、TEE)部署 |
fdc_verify_settlement | mainnet, coston2, songbird, coston | 免费 | 通过内置 FDC(EVMTransaction 证明)证明 x402 结算,并将其与付款绑定 |
fdc_web2json_request | mainnet, coston2, songbird, coston | 免费 | 将任意公共 Web API 转化为可验证事实:URL、jq 筛选器和 ABI 签名,并通过 Flare 验证器准备请求 |
fdc_verify_web2json | mainnet, coston2, songbird, coston | 免费 | 在本地验证 Web2Json 证明,并将其绑定到预期来源,然后解码载荷 |
fassets_liquidation_scanner | mainnet, coston2, songbird | 高级(x402) | 将 FAssets Agent 与实时 FTSO 价格关联:提供每个 Agent 的清算价格及距清算价的差距 |
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 会返回 mode: "prepared_only",其中包含编码后的请求、费用和 FdcHub 地址,因此你可以使用自己的签名者提交请求。设置密钥后,它只会在本地签名。
支付如何运作(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)
内置的 Facilitator 从不持有资金。transferWithAuthorization 会将代币直接从付款方转给收款方,而运营方密钥只负责支付 Gas 费,以广播客户端已签名的授权。重放会受到双重防护:EIP-3009 nonce 会在链上被使用,已结算的 nonce 也会缓存在进程中。
每次付费调用都会返回一个可移植的 x402_receipt。它是一个固定架构、自描述的记录,付款方仅以 Poseidon 承诺的形式出现,不会以明文形式出现;任何持有者都可以重新计算 keccak256 receipt_hash,以检查是否遭到篡改。付款方可以在支付载荷中使用可选的 commitment_salt 对承诺进行盲化。完整规范:RECEIPT_SPEC.md。
证明任何 Web 事实(Web2Json)
FDC 的 Web2Json 类型会从 URL 获取 JSON,对其运行 jq 筛选器,并返回 ABI 编码后的数据。这意味着,任何公共 API 都可以变成智能合约能够验证的事实。Flario 为 Agent 封装了整个流程:
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 解析安全):
有效的 FDC 证明只能保证数据来自证明中的 URL,不能保证该 URL 可信。
因此,通过 Merkle 验证的证明只完成了一半。攻击者可以搭建自己的端点,为其获取完全有效的证明,再把该证明交给你。因此,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 解析器,而不是字符串前缀匹配,因此可以堵住简单检查容易漏掉的三种绕过方式:
| 攻击 | 看起来像 | 前缀匹配为何失效 |
|---|---|---|
| 用户信息 | https://[email protected]/price | 以可信字符串开头,但主机是 evil.com |
| 同形字 | https://аpi.coingecko.com/price(西里尔字母 а) | 外观相同,但主机不同 |
| 路径注入 | https://api.coingecko.com/evil/api/v3/simple/price | 包含预期路径,但不是以它开头 |
test/web2json.test.ts 中为这些情况各编写了一个测试。
下面是来自 Coston2 的真实验证响应,使用的 API 与 Flare 自己的 Web2Json 指南相同(内容已精简):
{
"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 生态系统中的其他链都无法生成这样的协议级收据。该工具本身不会提交交易(证明请求无需许可,因此由持有者提交),这意味着托管式中枢无法被诱骗而白白消耗 Gas。
运营方设置:
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 完整体验 Agent 工作流。
将其作为中枢运行
你可以将 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 Agent 和现有 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 |
合约地址不会硬编码,而是在运行时通过 Flare ContractRegistry 解析;该注册表在全部四个网络上的地址均为 0xaD67FE66660Fb8dFE9d6b1b4240d8650e30F6019。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 | hub 模式 | 允许在 hub 模式下提交链上证明。默认关闭,以免匿名调用者消耗运营方的 Gas。参见安全态势。 |
FDC_VERIFIER_API_KEY | fdc_request_attestation | 验证器 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直接将代币从付款方转给收款方;运营方密钥只用于支付 Gas,以广播客户端已签名的授权。 - 先验证,再绑定。 每个使用证明的工具都会做两件事,而非只做一件。Merkle 证明通过检查是必要条件,但并非充分条件,因此
fdc_verify_settlement会将证明绑定到实际的 ERC-20Transfer,而fdc_verify_web2json会将其绑定到预期来源。针对错误对象的有效证明会被拒绝,并给出明确原因。 - Hub 模式下默认禁用提交。 在 stdio 模式下,调用者只有你,因此用自己的 Gas 费提交证明请求正是你所要求的。在 Hub 模式下,任何能访问端口的人都可以调用,而运营方密钥用于结算 x402 付款,因此允许陌生人触发付费链上请求会耗尽密钥中的资金。因此,Hub 模式会拒绝链上提交,而改为返回已准备好的请求;除非运营方设置
FLARIO_HUB_ALLOW_SUBMIT=true。 - 密钥保留在本地。
FLARE_PRIVATE_KEY从环境变量中读取,在进程内用于签名,绝不会被记录日志或传输;唯一例外是作为已签名交易发送到你配置的 RPC。 - 双重防止重放。 EIP-3009 nonce 会在链上被消耗,已结算的 nonce 也会缓存在进程内,以缩短交易广播到链上可见之间的时间窗口。
- 不收集或存储任何用户数据。 没有分析功能、没有数据库,也不会记录交易图谱。收据归持有者所有。
- 绝不硬编码合约地址。 合约地址会在运行时通过 Flare
ContractRegistry解析,源码中的每个协议常量都注明了其来源的 Flare 文档。
发现问题了吗?欢迎提交 issue;如果涉及敏感信息,也可以私下联系我。
开发
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。
构建会生成可执行文件 dist/index.js(带有 #!/usr/bin/env node shebang),并将其配置为 flario 可执行命令。无需客户端,即可使用 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 构建。欢迎提交 issue 和贡献代码。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。