flare-mcp
Flario is an MCP server that gives AI agents plain-language access to Flare Network's enshrined protocols (FTSO, FDC, FAssets), a wallet, and verified cross-chain data with cryptographic proofs.
FTSO Price Feeds
Get latest prices, all feeds, anchor feeds with Merkle proofs verified against the on-chain Relay root, historical data, and data provider info (vote power, fees, reward rates).
FDC Cross-Chain Attestations
Request attestations (Payment, AddressValidity, EVMTransaction) for XRP, BTC, DOGE, ETH, FLR, SGB — optionally signing and submitting on-chain.
Fetch and locally verify proofs, check Merkle root/finalization status, and verify settlements via EVMTransaction attestations.
Web2Json: Turn any public web API into a verifiable on-chain fact with source-bound proof to prevent spoofing.
Bulk proof bundle ⭐ Premium: Batch-fetch and verify up to 20 FDC attestation proofs at once.
FAssets (FXRP, FBTC, FDOGE)
Query status summaries, full system state (lot size, minting cap, redemption queue), agent collateral ratios/minting capacity/liquidation status, and agent metadata.
Liquidation scanner ⭐ Premium: Rank agents by liquidation risk joined with live FTSO prices, showing CR headroom and liquidation trigger prices.
Wallet & Portfolio
Check FLR/WFLR balances for any EVM address.
View full stake info: vote power, delegation, claimable rewards, and FlareDrops.
Smart Accounts & Infrastructure
Resolve deterministic Flare EVM addresses for XRPL accounts via MasterAccountController.
Scan the FlareContractRegistry for Flare Confidential Compute (FCC/TEE) deployments on Songbird.
x402 Payments
Premium tools settle via x402 using gasless EIP-3009
TransferWithAuthorization, producing portable, chain-provable receipts.
Network Support: Flare mainnet, Coston2, Songbird, and Coston testnets.
Security: Trust-minimized local Merkle verification, no custody, local key signing, replay protection, no hardcoded addresses.
Resolve XRPL accounts to Flare smart accounts via the MasterAccountController, enabling cross-chain identity mapping.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@flare-mcpGet the current FLR/USD price."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Flario
An MCP server for Flare Network. Flario gives an AI agent (in Claude, Cursor, VS Code, or any Model Context Protocol client) plain-language access to Flare's enshrined protocols: FTSO price feeds, FDC cross-chain attestations, and FAssets. It also gives the agent a wallet. Premium tools are paid per call with x402 settled on Flare, and every payment comes back with a receipt the chain itself can prove.
Install it with npx flario, or run it as an HTTP hub. It works against the public Flare RPCs out of the box, needs no account or key for reads, and never holds or forwards funds.
Flario covers the whole enshrined stack: FTSO prices (including proof-carrying anchor feeds), FDC attestation workflows with local Merkle-proof verification, deep FAssets state (per-agent collateral, liquidation risk, system totals, the redemption queue), a Flare portfolio read (delegation, vote power, claimable rewards), Songbird and Coston support, and a watcher for Flare Confidential Compute contracts. Reads are trust-minimized: FDC and FTSO proofs are checked locally against the on-chain Relay root, never taken from an API on faith. The one write, fdc_request_attestation, only submits a transaction if you set FLARE_PRIVATE_KEY; otherwise it hands you a prepared request to sign yourself.
This is complementary to Flare's official MCP server, not a replacement. Their server (
dev.flare.network/mcp) does documentation search, so it gives an agent knowledge. Flario gives an agent hands and a wallet: it calls the enshrined protocols and lets the agent pay for computed results, with receipts the chain can verify. Use both.
Where this sits in the x402 ecosystem
Flario speaks the standard x402 wire format, so it is not a private dialect. Payment requirements come back in the usual shape, the payment payload travels base64-encoded in the X-Payment header on the HTTP hub, and the settlement summary comes back in X-Payment-Response. An existing x402 client can pay a Flario endpoint without knowing anything about MCP, and an MCP agent can pay without knowing anything about HTTP.
What Flario adds on top is a proof layer. In a typical x402 deployment, the client learns that a payment settled because the facilitator says so and points at a transaction. Because Flare has a data connector enshrined in the chain, Flario can go further: fdc_verify_settlement obtains an FDC attestation over the settlement transaction, verifies the Merkle proof locally against the on-chain Relay root, and binds it to the actual ERC-20 transfer, so the receipt stands on its own without trusting the facilitator. That step depends on a protocol built into the chain, which is why it is hard to port elsewhere.
Why Flario
It goes deep on the protocols that are built into Flare. FTSO, FDC, and FAssets are enshrined in the chain, and so are Flario's 24 tools. A generic multi-chain MCP server can't reach any of this, and the depth doesn't port to another chain.
Answers carry a proof, so you don't have to take my word for it. Prices and cross-chain facts come with a Merkle proof that Flario checks locally against the on-chain root. An agent, or even a smart contract, can rely on the answer without trusting any API.
Agents can pay, and they get a receipt. Premium tools settle per call over x402 on Flare, and each payment returns a portable receipt that Flare's own FDC can prove, not just the facilitator's word for it. No other chain in the x402 ecosystem can do that today.
Self-hostable, no custody. It runs on public RPCs, asks for no account or key to read data, and never touches your funds.
Related MCP server: Hermes Blockchain Oracle
Examples
Once Flario is in your MCP client (see Install), you just ask in plain language:
Ask your agent | Flario runs |
"What's the FLR/USD price on Flare, with a proof I can check?" |
|
"Which FXRP agents are closest to liquidation right now?" |
|
"Show the FLR portfolio for |
|
"Who runs FXRP agent |
|
"Prove this settlement actually happened, using Flare's FDC." |
|
"Put this API's data on-chain with a proof, and only accept it from the host I trust." |
|
A proof-carrying price comes back with the value and a proof the agent can verify on its own (trimmed):
{
"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..."]
}Install
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows) and add:
{
"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"
}
}
}
}Restart Claude Desktop, then ask something like "What's the FLR/USD price on Flare?" or "How much FXRP is minted right now?".
Cursor
Edit ~/.cursor/mcp.json (global) or .cursor/mcp.json (per project) and add:
{
"mcpServers": {
"flario": {
"command": "npx",
"args": ["-y", "flario"]
}
}
}The same block works in any MCP client with stdio support (VS Code, Windsurf, Zed, and so on). The env block is optional, since the public Flare RPCs are used by default.
Check it works (no client, ~10 s)
# 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=mainnetStart here: seven prompts, no Flare knowledge required
Tools answer questions. Prompts tell you what to ask in the first place. Flario ships seven, and they show up in your MCP client's prompt list once it is connected — in Claude Desktop, the + menu in the message box.
Prompt | What it does |
Show me what Flare can do | A guided tour through live calls: a price, the same price carrying a proof you verify locally, FAssets state. Start here if Flare is new to you. |
Verify a price without trusting anyone | Reads one feed twice, plain and proof-carrying, then walks through exactly what earned the |
Turn a web API into a provable fact | Web2Json end to end, including the trap: a valid proof only proves the data came from the URL inside it, not that the URL deserves your trust. |
Check FAssets system health | A real risk read on live agent collateral against live prices, not a description of how FAssets works. |
Prove what an agent acted on | Bundles the facts behind a decision, then attacks the bundle so you can watch the verification catch a forged one. |
Watch Flare 2.0 roll out | Reads the confidential-compute deployment off the chain — which networks have it, what it can do — while the rollout is still happening. |
Why Flare, for someone building agents | The case for and against, grounded in calls rather than the marketing site, including where the ecosystem is weak. |
Every prompt instructs the model to run the calls for real against the live network and then explain what happened, so you end up with actual numbers and a mental model at the same time. They are deliberately written to admit when something is not live yet rather than talk around it.
Watch Flare 2.0 arrive
Flare's confidential compute is being deployed right now, one network at a time, and Flare has not published an ABI for it — FlareTeeManager is absent from the periphery artifacts, alpha releases included. fcc_deployment_status reads it anyway, because the interesting facts do not need an ABI.
As of 1 September 2026 it reports:
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)The capabilities come out of the selectors: Protocol Managed Wallets, remote attestation of TEE machines and their code hashes, multi-signature governance over the machine allowlist, randomness generated inside the enclave, and FDC V2 wiring.
Why selectors instead of function calls
A tool built on guessed function signatures breaks the moment Flare finalises the interface. Selectors are the routing table inside the diamond — they are facts on-chain, and a rename does not move them. So the tool reports what is exact (facets, selectors, addresses, wiring, governance state) and flags what is inferred: human-readable names come from a public signature database, and the report says so every time it prints one. All 198 resolved and are thematically coherent, which makes the mapping almost certainly right, but "almost certainly" is what gets printed rather than something firmer.
This is a testnet deployment of an unfinished system and anything in it can change. That is the point of a monitor rather than an integration.
Prove what an agent acted on
Every other tool here verifies a fact at the moment you ask, and then that verification evaporates — it survives as a sentence in a tool response nobody can re-check later. Evidence bundles close that gap.
evidence_bundle collects proof-carrying facts into one portable object. evidence_verify is the receiving end: it rebuilds every leaf from its own body, folds it through its Merkle proof, and compares the result against Relay.merkleRoots(protocol, round) read on-chain right then. The person verifying does not have to trust the agent that produced the bundle, this server, the data-availability layer, or any API. They need an RPC endpoint and nothing else.
Facts are verified before they go into a bundle. A fact that fails is refused, not flagged, because a bundle whose contents might be false is worse than no bundle at all. A Web2Json fact without expect_source is refused for the same reason — an unbound proof attests to whatever URL sits inside it.
The hash is not the security boundary
bundle_hash is tamper-evidence. It catches accidental corruption and casual edits, and an attacker who edits a bundle on purpose can simply recompute it. That is fine, because the hash was never what held. Here is the interesting case, run for real on mainnet:
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 rootThe attacker tripled a price and recomputed the hash so the integrity check passes. Verification still fails, because producing a Merkle proof that folds to a root Flare's validators already signed is not something you can do by editing a JSON file.
What a bundle does not prove
It does not prove the agent was honest about its reasoning, that these were the only facts it looked at, or that its conclusion follows from them. It proves that these specific facts were true, in these voting rounds. That is a narrower claim than "audit trail", and the narrowness is deliberate.
It is also a different claim from the one most verifiable-tool-call work makes. Attesting that a server executed correctly — via TEE, ZK over execution, or a server signature — still asks you to trust the operator or their hardware. This attests to the fact itself, against consensus, which needs a chain where the oracle is part of the protocol rather than a contract someone deployed.
Tools
Every tool validates its input with zod and returns a clear error instead of crashing when an RPC call or data source is down. Twenty-two tools are free. The two premium tools settle via x402 on Flare when the operator turns it on, and are free otherwise.
Tool | Networks | Tier | What it does |
| mainnet, coston2, songbird, coston | Free | Native FLR plus wrapped WFLR (WNat) balance for an address |
| mainnet, coston2, songbird, coston | Free | Portfolio: FLR and WFLR, vote power, delegation, claimable rewards by source, FlareDrops |
| mainnet, coston2, songbird, coston | Free | Latest price for one FTSO feed ( |
| mainnet, coston2, songbird, coston | Free | Latest price for every bundled feed |
| mainnet, coston2 (see note) | Free | Active FTSO data providers |
| mainnet, coston2, songbird, coston | Free | Proof-carrying FTSO Scaling price plus a Merkle proof, checked locally against the on-chain Relay root |
| mainnet, coston2, songbird, coston | Free | Recent FTSO Scaling anchor-feed history from the public DA layer, each point Merkle-verified |
| mainnet, coston2 | Free | FAssets minted total and agent count (short summary; see |
| mainnet, coston2, songbird, coston | Free | FDC Merkle root and finalization for a round |
| mainnet, coston2 (see note) | Free | Resolve the Flare address of an XRPL account |
| mainnet, coston2, songbird, coston | Free | Prepare, and optionally submit, an FDC attestation request. Returns tx hash and voting round id |
| mainnet, coston2, songbird, coston | Free | Fetch a proof from the DA layer and verify it locally against the on-chain Relay root |
| mainnet, coston2, songbird | Free | Per-agent collateral ratios, minting capacity, liquidation status (riskiest first) |
| mainnet, coston2, songbird | Free | Total minted, lot size, minting cap and pause, aggregate collateral, redemption queue |
| mainnet, coston2, songbird | Free | Agent name, description, logo, terms of use, whitelist status (AgentOwnerRegistry) |
| songbird (default), all | Free | Scan the live contract registry for Flare Confidential Compute (PMW, TEE) deployments |
| mainnet, coston2, songbird, coston | Free | Prove an x402 settlement via enshrined FDC (EVMTransaction attestation) and bind it to the payment |
| mainnet, coston2, songbird, coston | Free | Turn any public web API into a verifiable fact: URL plus jq filter plus ABI signature, prepared through a Flare verifier |
| mainnet, coston2, songbird, coston | Free | Verify a Web2Json proof locally AND bind it to the source you expected, then decode the payload |
| mainnet, coston2, songbird | Premium (x402) | FAssets agents joined with live FTSO prices: per-agent liquidation price and how far away it is |
| mainnet, coston2, songbird, coston | Premium (x402) | Batch fetch and local verification of up to 20 FDC proofs |
Notes on a few tools:
Premium tools run free unless the operator sets
X402_ENABLED=true. See How payments work.get_ftso_providersneeds an external indexer endpoint (set with an env var below). Aggregating providers on-chain isn't practical for a read-only stdio server.get_smart_account_infois best-effort. The MasterAccountController ABI isn't published in the periphery artifacts yet, so it returns ahas_account: falsenotice when it can't resolve.
The FDC attestation flow
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 responseWithout FLARE_PRIVATE_KEY, step 1 returns mode: "prepared_only" with the encoded request, the fee, and the FdcHub address, so you can submit it with your own signer. When the key is set, it only ever signs locally.
How payments work (x402)
Flario implements the x402 payment protocol over MCP. As far as I know it's the first MCP server whose paid tools settle on the same chain they serve. HTTP's 402 status and X-Payment header map onto tool results and a tool argument:
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)The built-in facilitator never holds funds. transferWithAuthorization moves the tokens straight from payer to payee, and the operator key only pays gas to broadcast the authorization the client already signed. Replay is blocked twice over: EIP-3009 nonces are consumed on-chain, and settled nonces are also cached in the process.
Every paid call returns a portable x402_receipt. It's a fixed-schema, self-describing record where the payer shows up only as a Poseidon commitment, never in plaintext, with a keccak256 receipt_hash any holder can recompute to check for tampering. A payer can blind the commitment with an optional commitment_salt in the payment payload. Full spec: RECEIPT_SPEC.md.
Prove any web fact (Web2Json)
FDC's Web2Json type fetches JSON from a URL, runs a jq filter over it, and returns ABI-encoded data. That means any public API can become a fact a smart contract is able to check. Flario wraps the whole loop for an 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 signatureWhy expect_source matters
Flare's own guide is blunt about the trap (URL parsing security):
A valid FDC proof only guarantees the data came from the URL in the proof. It does not guarantee the URL is trustworthy.
So a proof that passes Merkle verification is only half the story. An attacker can stand up their own endpoint, get a completely valid attestation for it, and hand you that proof. fdc_verify_web2json therefore does both jobs: it verifies the proof, and it binds the proof to the source you actually meant to use.
{
"expect_source": {
"hosts": ["api.coingecko.com"],
"path_prefix": "/api/v3/simple/price",
"require_https": true,
"http_method": "GET"
}
}If the attested URL does not match, the call fails loudly even though the cryptography is fine. Leave expect_source out and you still get the proof, but the response is marked source_bound: false with a warning, because that is the path an attacker can walk through.
Binding uses a real URL parser instead of string prefix matching, which closes three bypasses that naive checks miss:
Attack | Looks like | Why prefix matching fails |
Userinfo |
| Starts with the trusted string, but the host is |
Homograph |
| Visually identical, different host |
Path injection |
| Contains the expected path, does not start with it |
Each of these has a test in test/web2json.test.ts.
Here is a real verified response from Coston2, using the same API Flare's own Web2Json guide uses (trimmed):
{
"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" }
}Ask for the same proof while expecting a different host and the call fails on purpose, even though the cryptography is perfectly valid:
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-verified settlement (the part I'm proudest of)
A receipt claims a payment settled. Flare can prove it did, using the chain's own enshrined data connector. fdc_verify_settlement takes a settlement tx, gets an FDC EVMTransaction attestation over it, verifies the Merkle proof locally against the on-chain Relay root, and then binds the attestation to the payment: it confirms the attested transaction really contains an ERC-20 Transfer of the asset to the payee for at least the amount. The result is a receipt whose fdc_attestation_ref makes the settlement provable without trusting the facilitator. No other chain in the x402 ecosystem produces a protocol-level receipt like this. The tool never submits a transaction itself (the attestation request is permissionless, so the holder submits it), which means a hosted hub can't be tricked into burning gas.
Operator setup:
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)Payment tokens (EIP-3009, checked on-chain in July 2026): Coston2 defaults to 0xce13911D4896200b543a61E4ae8E829E661Dd8EB (a test USDT0), and mainnet defaults to the official USD₮0 at 0xe7cd86e13AC4309349F30B3435a9d337750fC82D. You can walk the whole agent flow with npx tsx scripts/x402-demo-client.ts.
Run it as a hub
You can run Flario as a network service instead of a local stdio process:
npx flario --http 8402 # or FLARIO_HTTP_PORT=8402
# to expose it beyond localhost:
FLARIO_HTTP_HOST=0.0.0.0 npx flario --http 8402Endpoint | What it serves |
| The full MCP server over Streamable HTTP (stateless), all 24 tools, x402 in-band |
| HTTP x402: |
| Same x402 flow. Body: |
| Discovery: endpoints, x402 config, pricing |
| Liveness |
The REST endpoints use the standard x402 wire format (base64 JSON in X-Payment), so non-MCP agents and existing x402 clients can pay too. There's a Dockerfile in the repo:
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-hubNetworks
Network | Chain ID | Default RPC | Override env var |
Flare Mainnet |
|
|
|
Coston2 Testnet |
|
|
|
Songbird Canary |
|
|
|
Coston Testnet |
|
|
|
Contract addresses are never hardcoded. They're resolved at runtime through the Flare ContractRegistry at 0xaD67FE66660Fb8dFE9d6b1b4240d8650e30F6019 (same address on all four networks). The FDC verifier and Data Availability endpoints default to the Flare-hosted public services listed at dev.flare.network/network/overview.
Configuration
Everything here is optional. The server runs against the public RPCs and Flare-hosted FDC services with no config at all.
Variable | Used by | Purpose |
| all mainnet calls | Override the mainnet RPC endpoint. |
| all Coston2 calls | Override the Coston2 RPC endpoint. |
| all Songbird calls | Override the Songbird RPC endpoint. |
| all Coston calls | Override the Coston RPC endpoint. |
|
| Local signing key for submitting attestation requests. Never logged, never leaves the process except as a signed tx. Leave it out for prepared-only mode. |
| hub mode | Allow on-chain attestation submission in hub mode. Off by default so an anonymous caller cannot spend the operator's gas. See Security posture. |
|
| Verifier API key. Defaults to the public key |
|
| DA-layer API key. Defaults to the public key. |
|
| Override the DA-layer base URL (for example a self-hosted instance). |
| premium tools |
|
| x402 | Settlement network (default |
| x402 | Payee address that receives payments (required when enabled). |
| x402 | EIP-3009 payment token override (defaults: Coston2 test USDT0, mainnet USD₮0). |
| x402 | Prices in whole-token units (default |
|
| An indexer endpoint that returns a JSON array of providers (or |
|
| Optional fallback metrics API, used only if the on-chain read fails. |
See .env.example for a copy-paste template.
Security posture
This thing touches money, so the defaults lean paranoid.
No custody, anywhere. Flario never holds or forwards funds. x402 settlement moves tokens straight from payer to payee inside
transferWithAuthorization; the operator key only pays gas to broadcast an authorization the client already signed.Verify, then bind. Every proof-consuming tool does two things, not one. A Merkle proof that checks out is necessary but not sufficient, so
fdc_verify_settlementbinds the attestation to the actual ERC-20Transfer, andfdc_verify_web2jsonbinds it to the source you expected. A valid proof for the wrong thing is rejected with a precise reason.Submission is off by default in hub mode. In stdio mode you are the only caller, so spending your own gas on an attestation request is what you asked for. In hub mode anyone who reaches the port is a caller, and the operator key exists to settle x402 payments, so letting a stranger trigger paid on-chain requests would drain it. Hub mode therefore refuses on-chain submission and returns the prepared request instead, unless the operator sets
FLARIO_HUB_ALLOW_SUBMIT=true.Keys stay local.
FLARE_PRIVATE_KEYis read from the environment, used to sign in-process, and never logged or transmitted anywhere except as an already-signed transaction to the RPC you configured.Replay protection is doubled. EIP-3009 nonces are consumed on-chain, and settled nonces are also cached in-process to close the window between broadcast and on-chain visibility.
No per-user data is collected or stored. There is no analytics, no database, no transaction-graph logging. Receipts belong to whoever holds them.
Contract addresses are never hardcoded. They resolve at runtime through the Flare
ContractRegistry, and every protocol constant in the source cites the Flare doc it came from.
Found something? Open an issue, or reach me privately if it's sensitive.
Development
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)Stack: TypeScript (ESM, Node 18+), @modelcontextprotocol/sdk, viem, zod, and @flarenetwork/flare-periphery-contract-artifacts.
The build emits an executable dist/index.js (with a #!/usr/bin/env node shebang) wired to the flario bin. You can test a single tool without a client using the 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=mainnetLicense
MIT, Dziuba Technology / Alan Dziuba.
Built on Flare Network. Issues and contributions welcome.
Available Tools
24 toolsevidence_bundleA
Package several proof-carrying facts into one portable bundle that someone else can verify without trusting you. Takes FTSO Scaling anchor feeds and finalized FDC attestations (Web2Json included), folds each Merkle proof against the on-chain Relay root BEFORE including it, and refuses any fact that fails. Use when an agent needs to hand a downstream consumer, an auditor, or another agent the evidence its decision rested on.
| Name | Required | Description | Default |
|---|---|---|---|
| claim | No | Plain-language statement of what these facts are being used to support. | |
| network | Yes | ||
| ftso_feeds | No | Feed names or bytes21 ids to anchor, e.g. ["FLR/USD", "BTC/USD"]. | |
| attestations | No | Finalized FDC attestations to include, by round and request bytes. | |
| voting_round_id | No | Round for the FTSO feeds. Defaults to the latest finalized round. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full behavioral burden, and it delivers: it discloses a validation pipeline ('folds each Merkle proof against the on-chain Relay root BEFORE including it') and a failure mode ('refuses any fact that fails'). It also clarifies that only finalized attestations are accepted, giving the agent a concrete expectation of behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the packaging purpose, the validation behavior, and the intended usage scenario. There is no filler, no repetition of schema details, and the key facts are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has complex, nested input and no output schema, yet the description never states the returned bundle's form or how to pass it to a verifier such as evidence_verify. It also leaves the boundary with fdc_bulk_proof_bundle implicit, so an agent is left to infer when one is preferred over the other.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is about 80%, so the baseline is 3; the schema already documents most parameters. The description adds useful context by linking network/voting_round_id to Relay-root validation and confirming Web2Json attestations are supported, but it does not clarify whether at least one evidence source is required or explain the optional claim parameter beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Package several proof-carrying facts into one portable bundle.' It also names the exact input sources (FTSO Scaling anchor feeds and finalized FDC attestations, including Web2Json) and the Relay-root validation, which separates it clearly from sibling read/verify tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is an explicit use case: 'Use when an agent needs to hand a downstream consumer, an auditor, or another agent the evidence its decision rested on.' It does not, however, state when not to use it or explicitly compare with fdc_bulk_proof_bundle for FDC-only scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evidence_verifyA
Verify an evidence bundle from scratch. Rebuilds every leaf from its own body, folds it through its proof, and compares against Relay.merkleRoots(protocol, round) read on-chain right now. Re-binds Web2Json facts to the source recorded in the bundle. Trusts nothing in the bundle, including its own hash. This is the receiving end: run it on a bundle someone hands you.
| Name | Required | Description | Default |
|---|---|---|---|
| bundle | Yes | An evidence bundle produced by evidence_bundle. | |
| recheck_source_binding | No | Re-bind Web2Json facts to the expect_source recorded in the bundle. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full behavioral disclosure. It explains that the tool rebuilds leaves, folds proofs, compares against on-chain Relay.merkleRoots, re-binds Web2Json facts, and 'trusts nothing in the bundle, including its own hash.' It does not mention return values or failure behavior, but it gives a detailed account of what the tool actually does.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four concise sentences, each adding real value: the core operation, the verification mechanics, the trust model, and the usage context. It is front-loaded with the action and avoids filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex verification tool with no output schema and no annotations, the description is notably complete: it explains the verification algorithm, the on-chain comparison, the trust model, and when to call it. The main gap is not describing what the tool returns or how failure is signaled, but the call itself is well specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds some contextual meaning, such as the bundle coming from evidence_bundle and the re-binding behavior, but it mostly restates what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a highly specific verb and resource: 'Verify an evidence bundle from scratch' and explains the verification pipeline. It clearly differentiates itself from the sibling evidence_bundle by calling itself 'the receiving end,' so an agent can distinguish producer from verifier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: 'This is the receiving end: run it on a bundle someone hands you.' This clearly indicates when to use the tool versus evidence_bundle, though it does not explicitly exclude alternatives like fdc_verify_web2json or fdc_verify_settlement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fassets_agent_detailsA
Human-facing details of a FAssets agent (name, description, icon/logo URL, terms-of-use URL, whitelist status) from the AgentOwnerRegistry. Accepts an agent vault address or an owner management address.
| Name | Required | Description | Default |
|---|---|---|---|
| agent | Yes | ||
| asset | No | FXRP | |
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It adds useful behavioral context by stating the source registry and that the agent parameter accepts either an agent vault address or an owner management address, but it does not disclose lookup behavior, error cases, or whether the operation is strictly read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences carry a dense, useful payload: the tool's purpose, the specific returned fields, the registry, and the accepted input address types. There is no filler or repetition of schema information, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the relatively simple parameter set and lack of an output schema, the description is mostly complete: it names the returned fields and clarifies the agent parameter. It falls slightly short of full completeness by not describing how asset and network affect the lookup or what happens when an address is not found, but these are moderate gaps rather than fatal ones.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate for parameter meaning. It adds real semantics for 'agent' by specifying the two accepted address types, but it does not explain the role of 'asset' or 'network' beyond what the enum values already imply. This is partial compensation, not full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific resource ('FAssets agent') and a clear noun ('details'), then enumerates the exact fields returned (name, description, icon/logo URL, terms-of-use URL, whitelist status). It names the source registry, AgentOwnerRegistry, and clarifies what address inputs are accepted, making it easy to distinguish from siblings such as fassets_agent_status or fassets_system_state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: use this when you need human-facing agent registration details rather than operational status or system state. However, it does not explicitly state when to prefer this tool over alternatives or mention exclusions, leaving some routing guidance to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fassets_agent_statusB
List FAssets agents (FXRP first) with collateral ratios, minting capacity (free lots), minted/reserved amounts and liquidation status, sorted by vault collateral ratio (riskiest first).
| Name | Required | Description | Default |
|---|---|---|---|
| asset | Yes | ||
| network | Yes | ||
| max_agents | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides useful behavioral details: it outputs collateral ratios, minting capacity, minted/reserved amounts, and liquidation status, sorted by risk. It does not disclose side effects (presumably read-only) but adds significant context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence with no wasted words, front-loading the action and key output details. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and three parameters, the description is incomplete. It omits parameter semantics and return structure details, leaving significant gaps for the agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description fails to explain any of the three parameters (asset, network, max_agents). The agent must infer their meaning from names and enums, which is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists FAssets agents with specific fields (collateral ratios, minting capacity, etc.) and sorting (by vault collateral ratio, riskiest first), distinguishing it from sibling tools like fassets_liquidation_scanner or fassets_system_state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives such as fassets_liquidation_scanner or get_fassets_status. The description implies it's for listing agents but doesn't specify exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fassets_liquidation_scannerA
PREMIUM (x402): FAssets agents ranked by liquidation risk, joined with live FTSOv2 prices — per agent: CR headroom, the underlying price at which liquidation starts, and the % price move away from it. Free when the operator has not enabled x402.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | Yes | ||
| network | Yes | ||
| max_agents | No | ||
| x402_payment | No | x402 payment: base64-encoded JSON EIP-3009 authorization payload. Omit to receive payment requirements. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description mentions premium/x402 payment but does not disclose behavioral traits like data freshness, rate limits, side effects, or authentication requirements beyond the payment condition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently written in two sentences, conveying the core purpose and the free condition. The placement of 'PREMIUM (x402)' slightly disrupts flow but is minor.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (scanner, premium, multiple parameters) and lack of output schema, the description omits details on return format, ordering, pagination, and risk interpretation. It covers core metrics but not full context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% (only x402_payment has a description). The description does not elaborate on asset, network, or max_agents parameters, leaving ambiguity despite the enums for asset and network.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it scans liquidation risk for FAssets agents, ranks them, and lists specific per-agent metrics. It distinguishes itself from siblings like fassets_agent_status by focusing on liquidation risk and live prices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions when it is free (x402 not enabled) but does not provide explicit guidance on when to use this tool versus alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fassets_system_stateB
Global FAssets system state for an asset: total minted, agent count, lot size, minting cap/pause, aggregated vault+pool collateral, and the redemption queue (tickets, value, lots).
| Name | Required | Description | Default |
|---|---|---|---|
| asset | Yes | ||
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral disclosure. It only states what data is returned but does not confirm read-only nature, authentication needs, rate limits, or any side effects. As a state query, it is likely read-only, but this is not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that packs multiple key data fields without redundancy. However, it is slightly dense and could benefit from slight restructuring for readability. Still, no filler words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers many return fields but does not specify data types or structure. Enums parameters are simple. For a state query tool, this is adequate but not fully complete—e.g., it omits any notes on performance or consistency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% (no parameter descriptions in schema). The tool description does not add any meaning beyond the enum values—it does not explain what 'asset' or 'network' represent or how they affect the output. The description lists output fields but not parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it provides 'Global FAssets system state for an asset' and enumerates specific data fields (total minted, agent count, lot size, minting cap/pause, collateral, redemption queue). This clearly differentiates it from sibling tools like fassets_agent_status which focuses on individual agents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description does not mention prerequisites, limitations, or scenarios where this tool is preferred. Sibling tools like get_fassets_status exist but no comparison is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fcc_deployment_statusA
Watch Flare 2.0 confidential compute roll out, network by network, while it is still happening. Reads the ContractRegistry for a confidential-compute deployment; if it finds an ERC-2535 diamond it enumerates every facet and function selector, maps them to capabilities (Protocol Managed Wallets, enclave VRF, machine remote-attestation, TEE governance, FDC V2), reads what it is wired to, and reports whether the system has live governance state or is an empty shell. Flare has not published an ABI for these contracts, so names come from signature matching while selectors, facets, addresses and wiring are read exactly from the chain.
| Name | Required | Description | Default |
|---|---|---|---|
| network | No | A single network, or all four to see the rollout front. | all |
| include_deployment_block | No | Binary-search the first block where the contract had code. Accurate, but ~30 extra RPC calls per contract. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description alone must disclose behavior, and it does so thoroughly. It reveals that the tool reads on-chain data, enumerates facets and selectors, maps them to capabilities, and warns that names are signature-matched because no ABI exists while selectors/addresses/wiring are read exactly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than average but each sentence earns its place: one sets the rollout context, one details the inspection logic, one provides the ABI caveat. The second sentence is dense but not fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description needs to communicate what the agent should expect back. It names the reported dimensions: capabilities, facets, selectors, addresses, wiring, and whether governance is live or the shell is empty. It does not specify the exact response shape or behavior when no diamond is found, but for an exploratory chain-reading tool this is a strong level of completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters have full schema descriptions, so the baseline is 3. The tool description adds rollout context, such as 'network by network' and 'all four,' but does not meaningfully expand on parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and action: monitoring Flare 2.0 confidential compute deployment status across networks. It explains exactly what the tool does beyond the name, and the behavior is unmistakably distinct from siblings like fdc_proof_status or songbird_fcc_registry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: use this while the rollout is still happening, network by network, to see whether a deployment is live or an empty shell. It does not explicitly name alternatives or exclusions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fdc_bulk_proof_bundleA
PREMIUM (x402): batch retrieval of up to 20 FDC attestation proofs with local Merkle verification of each against the on-chain Relay root. Free when the operator has not enabled x402.
| Name | Required | Description | Default |
|---|---|---|---|
| network | Yes | ||
| requests | Yes | ||
| x402_payment | No | x402 payment: base64-encoded JSON EIP-3009 authorization payload. Omit to receive payment requirements. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses batch retrieval, local Merkle verification, and payment conditions. However, it does not mention error behavior or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no fluff, front-loading key information about batch retrieval, verification, and payment.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema; the description lacks return format details and prerequisites (e.g., need to have requested proofs via sibling tools). Adequate for core behavior but incomplete for full context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 33%, and the description partially compensates by mentioning batch size limit (up to 20) and payment condition, but does not describe 'network' or the request item structure beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool does batch retrieval of up to 20 FDC attestation proofs with local Merkle verification, distinguishing it from the sibling 'fdc_get_attestation_proof' which likely retrieves single proofs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies batch usage via the sibling's name, but does not explicitly state when to use this tool over alternatives or provide exclusions. It mentions the payment model but no when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fdc_get_attestation_proofA
Retrieve an FDC attestation proof from the Data Availability layer for a finalized voting round and verify the Merkle proof locally against the on-chain Relay root (no trust in the DA response).
| Name | Required | Description | Default |
|---|---|---|---|
| network | Yes | ||
| voting_round_id | Yes | ||
| abi_encoded_request | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the local Merkle proof verification and trustlessness regarding the DA response. Without annotations, this provides good behavioral context, though it omits potential errors or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that front-loads the action and includes key details (verification, trustless). Could be split for readability but is acceptably concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the core purpose and verification aspect adequately, but lacks parameter descriptions and any indication of return value or error states. Output schema is absent, so description should compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides no explanation of the three parameters (network, voting_round_id, abi_encoded_request) despite 0% schema coverage. The agent must rely entirely on the schema for parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves and locally verifies an FDC attestation proof from the Data Availability layer, distinguishing it from siblings like fdc_request_attestation (which likely only requests) and fdc_bulk_proof_bundle (bulk).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving and verifying a single proof for a finalized round, but does not explicitly compare to alternatives or provide when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fdc_request_attestationA
Submit an FDC attestation request (Payment, AddressValidity or EVMTransaction). Prepares the request via a Flare-hosted verifier, queries the request fee, and — if FLARE_PRIVATE_KEY is set — submits it to FdcHub, returning the tx hash and voting round id. Without a key it returns the prepared request for external submission.
| Name | Required | Description | Default |
|---|---|---|---|
| network | Yes | ||
| request_body | Yes | ||
| source_chain | Yes | ||
| attestation_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the preparation via Flare-hosted verifier, fee query, and conditional submission. It also mentions return values (tx hash, voting round id) or prepared request. Missing details on error handling or rate limits, but core behavior is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the main action, no redundant information. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite clear purpose and behavior, the description lacks essential details about the request_body parameter, which is a nested object with no schema explanation. Without this, the tool cannot be used correctly. Output schema is absent, adding to the incompleteness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It lists the three attestation types but provides no guidance on the required request_body format or how to structure the nested object. This is a significant gap for correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Submit an FDC attestation request') and specifies the three attestation types (Payment, AddressValidity, EVMTransaction). It distinguishes from sibling tools like fdc_get_attestation_proof by focusing on submission.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly explains two modes based on whether FLARE_PRIVATE_KEY is set, which guides when to expect automatic submission vs. external submission. However, it does not explicitly state when not to use this tool or compare with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fdc_verify_settlementA
Prove an x402 settlement via Flare's enshrined FDC (trust-minimized, not the facilitator's word). Given a settlement tx hash it prepares an EVMTransaction attestation request (phase 1, free, no chain write); given a finalized voting_round_id + abi_encoded_request it locally Merkle-verifies the attestation AND binds it to the payment — confirming the attested tx contains an ERC-20 Transfer of >= amount of asset to payee. Never submits on-chain itself.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | Yes | ||
| payee | Yes | ||
| payer | No | ||
| amount | Yes | ||
| network | Yes | ||
| voting_round_id | No | ||
| settlement_tx_hash | Yes | ||
| abi_encoded_request | No | ||
| required_confirmations | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the behavioral disclosure burden. It explicitly states phase 1 is 'free, no chain write', that verification is done locally via Merkle proof, that it 'binds it to the payment', and that it 'Never submits on-chain itself.' These are strong, non-obvious behavioral guarantees.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but each sentence earns its place: purpose, phase-1 behavior, phase-2 verification, and the on-chain neutrality guarantee. It could be more scannable with separate sentences for each mode, but it is not padded or repetitive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nine-parameter, two-phase tool with no output schema and no annotations, the description covers the core protocol and safety model well. It still omits the tool's return value, how an agent should obtain abi_encoded_request, and the precise role of required_confirmations and network, leaving some non-obvious invocation details underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds real meaning for amount ('>= amount'), asset and payee (ERC-20 Transfer check), and voting_round_id/abi_encoded_request (finalized proof inputs). However, network, required_confirmations, and payer are not explained, leaving partial gaps that the schema alone does not fill.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and resource: 'Prove an x402 settlement via Flare's enshrined FDC' and contrasts it with 'not the facilitator's word.' It lays out the two operation modes clearly, so the tool's purpose is unambiguous even among similar-sounding FDC siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete usage context: 'Given a settlement tx hash' triggers the phase-1 attestation request, while a 'finalized voting_round_id + abi_encoded_request' triggers local verification. It does not explicitly name sibling alternatives or state when not to use the tool, but the conditional guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fdc_verify_web2jsonA
Verify a Web2Json attestation AND bind it to the source you expected. Checks the Merkle proof locally against the on-chain Relay root, confirms the attested URL matches your expected host / path / protocol / method, then decodes the payload with the request's ABI signature. Without expect_source the proof is verified but NOT bound, which an attacker can exploit with a valid proof from their own endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| network | Yes | ||
| expect_source | No | The source you expected. Without it the proof is verified but NOT bound, which leaves you open to a valid proof from an attacker's endpoint. | |
| voting_round_id | Yes | ||
| abi_encoded_request | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full behavioral burden and largely succeeds: it states that verification happens locally, what is checked, and the consequence of omitting expect_source. It stops short of describing return values or error behavior, but the core operational behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler. Purpose, method, and the security-relevant caveat are front-loaded, and every sentence contributes distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex verification tool with no output schema, the description covers what verification means, how the proof is checked, and why expect_source matters for safe use. It leaves some gaps around return values and edge cases, and the schema marks expect_source optional even though the description presents it as security-critical, but overall an agent can invoke this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, so the description must compensate. It does add real meaning for expect_source by explaining host/path/protocol/method binding and for abi_encoded_request by mentioning ABI decoding. However, voting_round_id and network are left to inference from their names and types, so parameter semantics are only partially enriched.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and object: 'Verify a Web2Json attestation AND bind it to the source you expected.' It then breaks verification into concrete steps—local Merkle check against the on-chain Relay root, URL component matching, and ABI payload decoding—so the tool's purpose is unambiguous and distinct from proof-request siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on when the tool is safe and when it is not: without expect_source, the proof is verified but not bound, leaving an attack vector. It does not explicitly name an alternative tool for other attestation types, but the verifier-vs-request context is clear enough to avoid the obvious siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fdc_web2json_requestB
Turn any public web API into a fact a smart contract can verify. Prepares an FDC Web2Json attestation request (URL + jq filter + ABI signature) through a Flare-hosted verifier and quotes the request fee. Submits on-chain only if FLARE_PRIVATE_KEY is set and submission is permitted; otherwise returns the prepared request for your own signer.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| body | No | {} | |
| headers | No | {} | |
| network | Yes | ||
| http_method | No | GET | |
| query_params | No | {} | |
| abi_signature | Yes | JSON ABI tuple describing the decoded struct, e.g. {"components":[{"internalType":"uint256","name":"price","type":"uint256"}],"name":"dto","type":"tuple"} | |
| post_process_jq | Yes | jq filter applied to the JSON response, e.g. "{price: .price|tonumber}" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does well by disclosing that the tool quotes a fee, submits on-chain only under specific conditions, and otherwise returns a prepared request. It could add more on side effects or failure modes, but the conditional submission behavior is clearly communicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler: the first states the purpose, the second explains the preparation and fee quote, and the third covers the conditional submission behavior. Information is front-loaded and each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 8 parameters, no output schema, and no annotations, yet the description does not explain the response format beyond 'returns the prepared request,' nor does it cover most request parameters or connect the tool to the broader FDC attestation/proof lifecycle. An agent would need significant additional context to invoke this correctly in all cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, so the description must compensate, but it only names three of eight parameter categories: URL, jq filter, and ABI signature. It leaves network, body, headers, http_method, and query_params unexplained, and does not clarify how the jq filter and ABI signature interact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool prepares an FDC Web2Json attestation request (URL + jq filter + ABI signature) through a Flare-hosted verifier, which is a specific verb and resource. It does not explicitly name sibling tools or contrast itself with them, but the Web2Json scope and 'request' vs. 'verify' distinction make it reasonably distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when turning any public web API into a verifiable fact. It also gives useful conditional behavior around FLARE_PRIVATE_KEY and submission permission, but it does not state when not to use it or mention alternatives such as the generic fdc_request_attestation or fdc_verify_web2json.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fassets_statusA
Get FAssets status (total minted, active agent count) for FXRP, FBTC or FDOGE on the given network, via the on-chain AssetManager with a flaremetrics.io fallback.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | Yes | ||
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the data source (on-chain AssetManager with a fallback to flaremetrics.io), adding context beyond the simple 'get status' phrasing. However, with no annotations, the description should also indicate read-only nature and potential error scenarios, which are absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that front-loads the purpose, lists the return fields, specifies supported assets and networks, and mentions the data source. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers what the tool does and the key output fields (total minted, active agent count). Missing return format details and error handling info, but the tool is simple and the output is implicitly understood from the description. No output schema exists to compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% parameter descriptions, but the description clarifies the enum values ('FXRP, FBTC or FDOGE' and 'mainnet, coston2'), explaining what the asset and network parameters represent. This compensates for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool retrieves FAssets status (total minted, active agent count) for specific assets (FXRP, FBTC, FDOGE) on a given network. Distinguishes from sibling tools like fassets_agent_status or fassets_system_state by focusing on aggregate asset-level metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus sibling tools like fassets_agent_status or fassets_liquidation_scanner. The description does not specify prerequisites, preferred use cases, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fdc_proof_statusA
Get the FDC (protocol id 200) Merkle root and finalization status for a voting round from the Flare Relay contract.
| Name | Required | Description | Default |
|---|---|---|---|
| network | Yes | ||
| voting_round_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It indicates a read operation ('Get'), which is clear. However, it does not disclose potential side effects or error behaviors, nor does it mention any authentication or rate limits. For a simple getter, this is minimally adequate but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 20 words, front-loaded with the action and key result. Every word earns its place, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity (two parameters, no output schema), the description states what is returned (Merkle root and finalization status) but not the format. It omits constraints like the positive integer requirement for voting_round_id. It is partially complete but leaves gaps that could confuse an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, meaning no parameter descriptions in schema. The description adds no additional meaning to the parameters 'voting_round_id' and 'network'. It mentions 'voting round' but does not specify that the ID must be a positive integer, nor does it explain the network enum. The description fails to compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'FDC (protocol id 200) Merkle root and finalization status for a voting round', and the source 'Flare Relay contract'. It distinguishes from sibling tools like 'fdc_get_attestation_proof' by focusing on proof status rather than requesting or proving attestations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context for use is implied: when needing Merkle root and finalization status for a voting round. However, there is no explicit guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. Given the sibling tool names, an agent could infer usage, but the description does not provide explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_flr_balanceB
Get native FLR balance and wrapped WFLR (WNat) balance for an EVM address on Flare mainnet or Coston2 testnet.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | ||
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description correctly identifies it as a read operation. It does not disclose potential errors, response format, or other behavioral traits like rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, front-loaded sentence with no wasted words. Highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description omits the output format, which is crucial since there is no output schema. It also inaccurately restricts network options, making it incomplete for the full range of supported networks.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description mentions both parameters ('EVM address', 'Flare mainnet or Coston2 testnet'), adding context beyond the schema. However, it doesn't fully clarify the network options.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves native FLR and wrapped WFLR balances for an EVM address. However, it only mentions two networks (Flare mainnet, Coston2 testnet) while the schema supports four (including songbird and coston), causing a mismatch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for balance queries but provides no guidance on when not to use or alternatives among sibling tools. Context is clear but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_flr_stake_infoA
One-call Flare portfolio for an address: native FLR + wrapped WFLR, FTSO vote power and delegation, claimable protocol rewards (by source), and FlareDrops. All four networks.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | ||
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden. It transparently lists the data categories returned and the network scope, and implies a read-only aggregation behavior. It does not mention caching, freshness, or failure modes, but for a pure getter the output inventory is fairly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that opens with the core value proposition and then enumerates the included data elements. There is no filler, redundancy, or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only getter with only two schema-constrained parameters, the description provides a strong high-level inventory of returned categories. However, with no output schema and no annotations, it omits response shape, units, and potential error behavior, leaving some ambiguity for an agent consuming the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must help interpret parameters. It maps 'address' to the portfolio subject and 'network' to all four networks, but does not explain address format or network value syntax. The schema's regex and enum already provide those constraints, so the description adds only minimal semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a specific aggregate getter for an address's Flare portfolio and enumerates the exact contents: native FLR, WFLR, FTSO vote power, delegation, claimable rewards by source, and FlareDrops. It also notes coverage of all four networks, which distinguishes it from simpler siblings like get_flr_balance or get_ftso_feed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'One-call Flare portfolio' phrasing implies this tool is the consolidated option when multiple stake-related data points are needed at once. However, it does not explicitly state when to prefer this over alternatives such as get_flr_balance, nor does it mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ftso_anchor_feedA
Get a proof-carrying FTSO Scaling anchor feed: the price plus a Merkle proof verified LOCALLY against the on-chain Relay root (FTSO Scaling protocol 100). Trust-minimized — usable by an agent or a smart contract without trusting the DA API. Defaults to the latest finalized round.
| Name | Required | Description | Default |
|---|---|---|---|
| feed_id | Yes | ||
| network | Yes | ||
| voting_round_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden. It reveals the key behavior: the tool returns a price plus a Merkle proof, verifies the proof locally against the Relay root, and defaults to the latest finalized round. It does not cover error cases or response formatting, but for a read-style fetch this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose and key differentiating detail. Each sentence adds useful information, with no filler, though the protocol-specific jargon may make it slightly dense for an unfamiliar agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description gives a strong summary of the returned artifact and trust model, but leaves gaps around parameter formats and the exact response shape. It is adequate for a caller who already understands the FTSO Scaling domain, but not fully self-sufficient for a generic agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needed to compensate. It only indirectly explains voting_round_id via 'Defaults to the latest finalized round.' The meanings and accepted formats of feed_id and network are left entirely to inference, which is a significant gap given three parameters and no schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get ... FTSO Scaling anchor feed') and immediately distinguishes it from ordinary feeds by highlighting the proof-carrying Merkle proof verified against the on-chain Relay root. This makes it clearly distinct from siblings like get_ftso_feed and get_ftso_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear use case: when an agent or smart contract needs a trust-minimized feed and should not trust the DA API. It also notes the default to the latest finalized round, which helps callers decide when to pass voting_round_id. It does not explicitly name alternatives, but the framing is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ftso_feedA
Get the latest FTSO price feed (value, decimals, timestamp) for a feed by name (e.g. "FLR/USD") or raw bytes21 feed id.
| Name | Required | Description | Default |
|---|---|---|---|
| feed_id | Yes | ||
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, the description partially bears the transparency burden. It reveals the return type (latest value, decimals, timestamp) and input flexibility (name or raw id), but lacks information on authorization, rate limits, error handling, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that immediately conveys the core purpose and key details. No extraneous words, front-loaded with the primary action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential inputs and output shape, but for a tool with no output schema and no annotations, it omits important context such as response structure details (e.g., exact keys), error conditions, and case sensitivity of feed names. It is adequate for simple use but leaves gaps for robust agent interaction.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds that feed_id can be a feed name (e.g., 'FLR/USD') or a bytes21 id, which is meaningful beyond the schema's type-only definition. Network is not elaborated beyond the schema's enum, but overall the description adds significant parameter context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it retrieves the latest FTSO price feed, specifying the returned fields (value, decimals, timestamp) and the two identification methods (name or bytes21 id). This distinctly separates it from siblings like get_ftso_feeds_all or get_ftso_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a single feed's latest data is needed, but does not explicitly state when to use this tool versus alternatives, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ftso_feeds_allA
Get the latest FTSO price for all known feeds on the given network.
| Name | Required | Description | Default |
|---|---|---|---|
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states a basic read operation without disclosing potential behaviors like caching, rate limits, or error handling. For a read tool, additional transparency would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words. It is highly concise and front-loaded with the key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description covers the essential: what it does and the required input. Missing details about output structure, but acceptable for a straightforward read operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions 'on the given network', adding context to the network parameter beyond the enum values. However, with 0% schema description coverage, it does not fully compensate by explaining format or behavior for invalid inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'latest FTSO price for all known feeds', and the network parameter. It effectively distinguishes from sibling tools like get_ftso_feed which retrieves a single feed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for fetching all feeds, but does not explicitly state when to use this tool versus alternatives like get_ftso_feed or get_ftso_history. No direct guidance on context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ftso_historyA
Get recent FTSO Scaling anchor-feed history for a feed (by name or bytes21 id) from the public Flare Data Availability layer — no external indexer needed. Each point is optionally Merkle-verified against the on-chain Relay root.
| Name | Required | Description | Default |
|---|---|---|---|
| rounds | No | ||
| verify | No | ||
| feed_id | Yes | ||
| network | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It does well by revealing that the data comes from the public Flare DA layer, that no external indexer is required, and that each point is optionally Merkle-verified against the on-chain Relay root. These are meaningful behavioral traits not visible in the schema. It stops short of stating response formatting or recency bounds, but for a read-only getter this is solid transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences with no filler. The main action and key differentiator are front-loaded, and the optional Merkle verification detail is placed in the second sentence. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description tells the agent what the tool returns, where it gets data, and how verification works, so it is invocable with the provided schema. However, there is no output schema and no description of what each history point contains, how far back 'recent' goes, or how rounds maps to returned records. Given the FTSO domain complexity and the number of sibling tools, the description is usable but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It partially does: 'by name or bytes21 id' clarifies feed_id, and 'optionally Merkle-verified' clarifies verify. However, rounds is not explained beyond its name and schema defaults, and network is left entirely to the enum. The description adds value but leaves a real semantic gap around the rounds parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action and resource: 'Get recent FTSO Scaling anchor-feed history for a feed (by name or bytes21 id).' It also names the data source and key capability, so an agent knows what the tool returns and where the data comes from. It does not explicitly differentiate itself from sibling tools such as get_ftso_anchor_feed or get_ftso_feed, but the word 'history' and the reference to the public DA layer distinguish it enough for a 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'no external indexer needed' and 'from the public Flare Data Availability layer' gives useful context about when this direct DA-layer route is appropriate. However, there are no explicit when-to-use or when-not-to-use instructions, and no sibling tool is named as an alternative. Usage guidance is implied rather than stated, so it earns a 3.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ftso_providersB
Get the list of active FTSO data providers (name, address, vote power, fee, reward rate) for the given network.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| network | Yes | ||
| reward_epoch_id | No | Reward epoch to read. Defaults to the current one. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full behavioral disclosure burden. It only says 'get the list of active providers' and does not disclose pagination behavior, ordering, limit effects, reward epoch semantics, or return format details. The word 'active' adds some filtering context, but most behavioral information is left implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It efficiently conveys the resource, scope, and output fields, making it concise while still adding useful information given the absence of an output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description captures the core purpose and output fields, which is enough for an agent to attempt a call. However, with no annotations and no output schema, it should also clarify limit behavior, reward epoch selection, and any pagination or ordering expectations. These gaps make it minimally viable but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, and the description adds minimal parameter meaning beyond confirming the network context. It does not explain the limit parameter semantics, the maximum/default behavior, or reward_epoch_id beyond what the schema already states. With low coverage, the description needed to compensate but largely did not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb, 'Get', and identifies the exact resource: 'active FTSO data providers'. It also lists the returned fields (name, address, vote power, fee, reward rate), making the tool's purpose unmistakable and clearly distinct from sibling feed/history tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context by requiring a network and targeting provider data rather than feed data. However, it does not explicitly state when to prefer this tool over siblings like get_ftso_feeds_all or get_ftso_history, and it provides no exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_smart_account_infoA
Resolve between XRPL accounts and Flare Smart Accounts via the on-chain MasterAccountController. Forward: give an XRPL account (r...) to get its deterministic Flare address and whether the account is actually deployed yet. Reverse: give a Flare address (0x...) to find out whether it is a Smart Account and which XRPL account owns it.
| Name | Required | Description | Default |
|---|---|---|---|
| network | Yes | ||
| xrpl_address | No | XRPL account (r...). Resolves forward to its Flare address. | |
| flare_address | No | Flare address (0x...). Resolves backward to its XRPL owner. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It explains the deterministic on-chain resolution, whether a Smart Account is deployed, reverse ownership lookup, and the Smart Account existence check. It does not cover error behavior or what happens when neither or both address parameters are provided, but the core behavior is well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and immediately front-loads the tool's core purpose. Every clause adds useful information: the controller used, the forward resolution behavior, and the reverse resolution behavior. There is no redundant or filler language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the conceptual output well even though no output schema exists. However, it never states that exactly one of xrpl_address or flare_address must be supplied, and the schema marks only network as required, making both addresses appear optional. This is a notable gap for correct invocation, and there is no mention of expected return structure beyond the conceptual resolved values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 67% of parameters with patterns for xrpl_address and flare_address, but the description enriches these by defining exactly what each address resolves to: XRPL goes to deterministic Flare address plus deployment status, Flare goes to Smart Account status plus owner. It does not describe the required network parameter beyond the schema enum, but the directional semantics add real meaning beyond the raw property names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Resolve between XRPL accounts and Flare Smart Accounts via the on-chain MasterAccountController.' It clearly defines two directional behaviors and distinguishes this tool from the FTSO, fassets, and FDC sibling tools, none of which handle account resolution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage direction: use forward resolution when you have an XRPL account (r...) and reverse resolution when you have a Flare address (0x...). It does not name alternatives or state when not to use the tool, but the sibling set makes the intended use clear and the directional guidance is actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
songbird_fcc_registryC
Scan the live FlareContractRegistry (Songbird by default) for Flare Confidential Compute contracts (PMW, TEE, compute extensions). Reports FCC deployment status post-STP.13 and lists FDC/Relay contracts plus the full registry.
| Name | Required | Description | Default |
|---|---|---|---|
| network | No | songbird |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavioral traits. It implies read-only scanning but does not state idempotency, safety, permissions, rate limits, or error behavior. Minimal disclosure beyond listing outputs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 30 words, efficient and front-loaded with the main action. No wasted words, but could be more structured for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description covers main outputs (FCC deployment status, FDC/Relay contracts, full registry) but lacks return format or structure. Without output schema, more detail on what 'reports' looks like would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and description provides no extra meaning for the 'network' parameter beyond repeating the default value. Does not explain enum options or when to choose each network.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Verb 'scan' and 'reports' clearly indicate read operation. Specifies resource (FlareContractRegistry) and contract types (PMW, TEE, compute extensions, FDC/Relay). Distinguishes from sibling tools like fassets_* or fdc_* which handle other Flare subsystems.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. Does not mention prerequisites or exclusion criteria. The reference to 'post-STP.13' provides context but not usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
v1.5.0- Added
evidence_bundle - Added
evidence_verify - Added
fcc_deployment_status
9 tool updates
v1.4.1- Added
fassets_agent_details - Added
fdc_verify_settlement - Added
fdc_verify_web2json - Added
fdc_web2json_request - Added
get_flr_stake_info - Added
get_ftso_anchor_feed - Changed
get_ftso_history4 fields changed- changed
Input schema / properties / network / enumPrevious value: -[ - "mainnet", - "coston2" -]New value: +[ + "mainnet", + "coston2", + "songbird", + "coston" +] - changed
Input schema / properties / rounds / maximumPrevious value: -100New value: +30 - changed
Input schema / properties / rounds / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / verifyAdded value: +{ + "default": true, + "type": "boolean" +}
- Changed
get_ftso_providers2 fields changed- added
Input schema / properties / limitAdded value: +{ + "default": 50, + "maximum": 200, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / reward_epoch_idAdded value: +{ + "description": "Reward epoch to read. Defaults to the current one.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +}
- Changed
get_smart_account_info3 fields changed- added
Input schema / properties / flare_addressAdded value: +{ + "description": "Flare address (0x...). Resolves backward to its XRPL owner.", + "pattern": "^0x.*", + "type": "string" +} - added
Input schema / properties / xrpl_address / descriptionAdded value: +"XRPL account (r...). Resolves forward to its Flare address." - changed
Input schema / requiredPrevious value: -[ - "xrpl_address", - "network" -]New value: +[ + "network" +]
15 tool updates
v0.4.0- First observed
fassets_agent_status - First observed
fassets_liquidation_scanner - First observed
fassets_system_state - First observed
fdc_bulk_proof_bundle - First observed
fdc_get_attestation_proof - First observed
fdc_request_attestation - First observed
get_fassets_status - First observed
get_fdc_proof_status - First observed
get_flr_balance - First observed
get_ftso_feed - First observed
get_ftso_feeds_all - First observed
get_ftso_history - First observed
get_ftso_providers - First observed
get_smart_account_info - First observed
songbird_fcc_registry
TDQS
Scored across 24 tools
Most tools serve clearly distinct purposes, but there is real overlap: get_fassets_status is largely superseded by fassets_system_state, get_flr_balance is a subset of get_flr_stake_info, and get_ftso_feed versus get_ftso_anchor_feed are easy to confuse without reading descriptions. The detailed descriptions help, but the boundaries are not always crisp.
The set is consistently snake_case, but the naming pattern is mixed: some tools start with get_, others use domain prefixes like fdc_/ fassets_/ evidence_, and songbird_fcc_registry does not follow a verb pattern at all. Word order also varies, such as fdc_web2json_request versus fdc_request_attestation.
24 tools is at the heavy end of the acceptable range, and the server covers several protocol families rather than one focused workflow. Each family has useful tools, but the broad scope and near-redundant status/balance tools make the set feel slightly bloated.
Core workflows are well covered: reading state, requesting and retrieving FDC proofs, verifying proofs against the on-chain Relay root, and bundling evidence for downstream verification. Minor gaps exist, such as no dedicated generic verifier for Payment or AddressValidity attestations, but agents can work around them.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for querying Forkast documentation
Official Microsoft MCP Server to query Microsoft Entra data using natural language
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
MCP server connecting AI agents to non-custodial staking data across 130+ networks.
Related MCP Servers
- AlicenseAqualityDmaintenanceSolana DeFi Intelligence MCP server enabling natural language queries for wallet analytics, DeFi positions, protocol metrics, and token prices.81MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that connects Hermes Agent to the Solana blockchain, enabling natural language queries for wallets, tokens, NFTs, transactions, whale movements, and network health.6MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for fal model discovery, execution, pricing, and local media processing, enabling AI model workflows via natural language.85MIT
- AlicenseNot gradedqualityDmaintenanceMCP server providing tools to search, get, and aggregate Merkl opportunities. Enables querying campaign data, APRs, TVL, and more through natural language.81MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dziuba0x/flario'
If you have feedback or need assistance with the MCP directory API, please join our Discord server