MioDio LLC · Live API
Your AI agent checks who gets paid, whether the transaction matches its intent, and what it will do first.
USDC on Base · no account · no API key
01 Agent
unsigned tx
02 Meridian checks read-only
Sanctions
Price per call: $0.005
Who is this?
Sample result, no flag:
"match": false
Drift
Price per call: $0.005
Is this what I meant?
Sample result, no flag:
"verdict": "match","chain": "base"
Simulate
Price per call: $0.01
What will this do?
Sample result, no flag:
"result": "success","gas_used": "24000"
If the recipient changed
Drift returns this instead
Alternate result of the same Drift check, not a fourth step:
"verdict": "drift","flags": ["recipient_differs"]
03 Sign or stop
Meridian is an x402-paid HTTP API. It returns best-effort snapshots of public on-chain data
(Aave v3, Lido + Curve contracts, ERC-4626 vaults), an informational exact-match screen
against the public OFAC SDN list, a parameter-drift check that diffs a declared intent
against an unsigned transaction or EIP-712 payload you send, and a transaction simulation
dry-run of an unsigned transaction against latest chain state. It is not financial, investment, legal, or compliance advice.
A vault APY-style field is a reported vault metric — a share-price lookback, not a promise.
A drift match means those two inputs agree on the decoded fields — not that the intent was authentic or safe, and not a recommendation to sign.
A simulation is a point-in-time dry run, not a guarantee of inclusion or the eventual outcome.
Meridian never signs transactions or moves funds.
Do not use a card as the sole basis for lending, borrowing, trading, staking exits, custody,
or compliance decisions. Data can be incomplete, delayed, or wrong. No SDN match does not mean
the wallet is clean. You are responsible for how you use the response. © MioDio LLC.
Thin landing for humans. Agents speak x402.
Try it free, no wallet needed: /v1/demo/risk · /v1/demo/vault · /v1/demo/sanctions · /v1/demo/drift · /v1/demo/simulate (fixed sample inputs; complete cards cached up to 5 min, incomplete cards are not cached).
GET /v1/risk/:address?chain=base|ethereum — Aave v3 snapshot (~$0.005)GET /v1/lido/exit-risk?amount=32 — stETH peg + queue ETA (~$0.005)GET /v1/vault/:address?chain=base — ERC-4626 share price, reported vault metric (APY lookback, not a promise), idle cash (~$0.005)GET /v1/passport/:address?chain=base|ethereum — deep passport decision card (~$0.02)GET /v1/sanctions/:address — OFAC SDN exact-match screen (~$0.005)GET /v1/passport-sanctions/:address — passport + SDN bundle (~$0.02)POST /v1/sanctions/batch — up to 50 addresses (~$0.10)POST /v1/drift — parameter-drift check on an unsigned tx / EIP-712 payload (~$0.005)POST /v1/simulate — unsigned-tx dry run: success/revert, gas, balance changes, approvals (~$0.01)POST /v1/payment-check — on-chain USDC nonce / transfer / tx check on Base (~$0.005)GET /v1/payment/status — free status of a payment to Meridian (30/min per IP)GET /v1/receipt/:id — look up a signed per-call receipt · keys at /.well-known/meridian-receipt-keys.json
~$0.005 USDC per single card via x402.
Deep passport SKU is ~$0.02 USDC.
SDN screen is ~$0.005, bundle ~$0.02, batch ~$0.10.
Transaction simulation is ~$0.01 USDC (10000 atomic).
Payment-check is ~$0.005 USDC (5000 atomic). Paid calls are final; charged-but-failed (5xx) or duplicate calls are refunded on request within 30 days with the tx hash (see Terms §7).
No payment → 402. Valid payment → JSON card.
0x8335…29135000 atomic (~$0.005)20000 atomic (~$0.02)5000 / 20000 / 10000010000 atomic (~$0.01)5000 atomic (~$0.005)base · Facilitator: Coinbase CDPcurl -i "https://meridian.miodiollc.com/v1/risk/0xBA9424d650A4F5c80a0dA641254d1AcCE2A37057?chain=base"
No payment header → 402 with requirements. Paid request → JSON card.
curl -i "https://meridian.miodiollc.com/v1/lido/exit-risk?amount=32"
Peg from Curve stETH/ETH. Queue from Lido withdrawal contracts. Not a health-factor remake.
curl -i "https://meridian.miodiollc.com/v1/vault/0xc1256Ae5FF1cf2719D4937adb3bbCCab2E00A2Ca?chain=base"
curl -i "https://meridian.miodiollc.com/v1/passport/0x0000000000000000000000000000000000000001?chain=base&lido_amount=32"
~$0.02 USDC. Default Lido probe is 32 stETH. Pass ?vault= only when you have a real ERC-4626 address — we do not invent positions.
curl -i -X POST https://meridian.miodiollc.com/v1/drift -H 'content-type: application/json' -d '{"chain":"base","intent":{"action":"transfer","recipient":"0x0000000000000000000000000000000000000001","token":"0x0000000000000000000000000000000000000001","amount":"1000000"},"tx":{"to":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","value":"0x0","data":"0xa9059cbb"}}'
~$0.005 USDC. Send the intent you were given plus the exact unsigned tx (or EIP-712 typed data) before signing. Free sample: GET /v1/demo/drift. A match is not a guarantee.
curl -i -X POST https://meridian.miodiollc.com/v1/simulate -H 'content-type: application/json' -d '{"chain":"base","tx":{"from":"0x4200000000000000000000000000000000000006","to":"0x0000000000000000000000000000000000000001","value":"0x1","data":"0x"}}'
~$0.01 USDC. Send the exact unsigned tx (from, to, value, data) before signing. Free sample: GET /v1/demo/simulate. A simulation is a point-in-time dry run, not a guarantee.
curl -i "https://meridian.miodiollc.com/v1/risk/0xf0e04EdA5b8362Ec7100eA4147df79A94ce75B2c?chain=ethereum"
curl -sS https://meridian.miodiollc.com/health
curl -sS https://meridian.miodiollc.com/v1/receipt
No API keys. Wallet pays. Header proves it.
GET /v1/risk/:address?chain=base with no payment header.PAYMENT-REQUIRED header: accepts[0].amount, asset, network, payTo.PAYMENT-SIGNATURE.{
"scheme": "exact",
"network": "eip155:8453",
"amount": "5000",
"payTo": "0x4DA1…8d7F",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"maxTimeoutSeconds": 120
}
// Pseudocode. Use an x402 client / EIP-3009 payer for production.
const url = "https://meridian.miodiollc.com/v1/risk/0xADDRESS?chain=base";
let res = await fetch(url);
if (res.status === 402) {
const required = JSON.parse(atob(res.headers.get("PAYMENT-REQUIRED")));
const payment = await payExact(required.accepts[0]);
res = await fetch(url, {
headers: { "PAYMENT-SIGNATURE": payment },
});
}
// 200 JSON plus PAYMENT-RESPONSE, and Meridian-Receipt when signing is on.
const passport = await res.json();
Shape when Aave getUserAccountData succeeds.
{
"product": "mio_dio_defi_risk_passport",
"version": "0.7.0",
"status": "ok",
"address": "0x…",
"chain": "base",
"as_of": "2026-09-14T20:00:00.000Z",
"disclaimer": "MioDio DeFi Risk Passport (MVP). Best-effort public on-chain reads only. Not financial, legal, or investment advice. …",
"aave_v3": {
"protocol": "aave_v3",
"pool": "0xA238Dd80C259a72e81d7e4664a9801593F98d1c5",
"total_collateral_usd": "125430.12",
"total_debt_usd": "48210.05",
"available_borrows_usd": "…",
"liquidation_threshold_pct": "…",
"ltv_pct": "…",
"health_factor": "1.84"
},
"hooks": {
"notes": ["MVP uses Aave v3 Pool.getUserAccountData only. No other protocols in this response."]
}
}
Empty or inactive addresses return status: "partial", aave_v3: null, and an errors array.
We never invent balances.
Hit the endpoint. Pay with x402. Get JSON.
No payment header → 402 with requirements. Paid → risk passport. RPC-verified getUserAccountData · 2026-09-14.
Live API and directory listings. Payment terms stay on /.well-known/x402.
workers.miodiollc.com stays a permanent alias)/v1/sanctionsMioDio LLC, corp@miodiollc.com, 755 Monroe Rd, Unit 470067, Sanford, FL 32747 (Florida LLC).