{"openapi":"3.1.0","info":{"title":"Meridian","version":"0.8.0","description":"mio_dio_defi_risk_passport: read-only x402 pay-per-call DeFi risk cards. Paid routes require x402 v2 Exact USDC.","x-guidance":"Paid routes use x402 v2 Exact USDC. Unpaid calls return HTTP 402: the JSON body and PAYMENT-REQUIRED header are the same PaymentRequired object (x402Version, accepts, resource). Empty or invalid POST bodies without a payment header still 402. With a payment header, invalid input is 400 and is not settled (settlement runs only when the handler status is below 400). Free routes declare security: []. Catalog: /.well-known/x402.","contact":{"name":"MioDio LLC","email":"corp@miodiollc.com"}},"servers":[{"url":"https://meridian.miodiollc.com"}],"paths":{"/health":{"get":{"summary":"Liveness and catalog pointers","responses":{"200":{"description":"Health JSON"}},"security":[]}},"/v1/receipt":{"get":{"summary":"Public scanner receipt","responses":{"200":{"description":"Receipt JSON"}},"security":[]}},"/v1/receipt/{id}":{"get":{"summary":"Look up a signed per-call receipt","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Bearer secret: rcpt_ plus 32 hex characters from the Meridian-Receipt header. Do not share. Anyone who has the id can read the stored receipt."}],"responses":{"200":{"description":"Signed receipt JSON (no-store)"},"404":{"description":"Not in this replica; not proof it was never issued."}},"security":[]}},"/.well-known/meridian-receipt-keys.json":{"get":{"summary":"Ed25519 public keys for Meridian-Receipt","responses":{"200":{"description":"JWKS-like key list"}},"security":[]}},"/v1/payment/status":{"get":{"summary":"Meridian payment status (own payments only)","parameters":[{"name":"tx","in":"query","schema":{"type":"string"}},{"name":"payer","in":"query","schema":{"type":"string"}},{"name":"nonce","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"settled | seen_not_settled | not_found | unknown. Never includes receipt_id. On a miss, use paid POST /v1/payment-check."},"429":{"description":"30 requests per minute per IP"}},"security":[]}},"/v1/demo/risk":{"get":{"summary":"Free Aave demo card","responses":{"200":{"description":"Demo JSON"}},"security":[]}},"/v1/demo/vault":{"get":{"summary":"Free vault demo card","responses":{"200":{"description":"Demo JSON"}},"security":[]}},"/v1/demo/sanctions":{"get":{"summary":"Free SDN demo card","responses":{"200":{"description":"Demo JSON"}},"security":[]}},"/v1/demo/drift":{"get":{"summary":"Free parameter-drift demo card","responses":{"200":{"description":"Demo JSON"}},"security":[]}},"/v1/demo/simulate":{"get":{"summary":"Free transaction-simulation demo card","responses":{"200":{"description":"Demo JSON"}},"security":[]}},"/.well-known/x402":{"get":{"summary":"x402 resource-server catalog","responses":{"200":{"description":"Capability manifest"}},"security":[]}},"/.well-known/x402list.txt":{"get":{"summary":"Optional x402-list ownership token","description":"Plain-text token from X402LIST_VERIFY_TOKEN when set. HTTP 404 when the env var is unset or blank.","responses":{"200":{"description":"text/plain token"},"404":{"description":"Token is not configured"}},"security":[]}},"/.well-known/agent-card.json":{"get":{"summary":"A2A agent card","responses":{"200":{"description":"Agent Card JSON"}},"security":[]}},"/robots.txt":{"get":{"summary":"robots.txt","responses":{"200":{"description":"text/plain"}},"security":[]}},"/llms.txt":{"get":{"summary":"Plain-text agent summary","responses":{"200":{"description":"text/plain"}},"security":[]}},"/openapi.json":{"get":{"summary":"This OpenAPI document","responses":{"200":{"description":"OpenAPI 3.1 JSON"}},"security":[]}},"/docs":{"get":{"summary":"Human-readable docs","responses":{"200":{"description":"HTML"}},"security":[]}},"/sitemap.xml":{"get":{"summary":"XML sitemap","responses":{"200":{"description":"application/xml"}},"security":[]}},"/terms":{"get":{"summary":"Terms of Service","responses":{"200":{"description":"HTML"}},"security":[]}},"/privacy":{"get":{"summary":"Privacy policy","responses":{"200":{"description":"HTML"}},"security":[]}},"/disclaimer":{"get":{"summary":"Disclaimer","responses":{"200":{"description":"HTML"}},"security":[]}},"/v1/risk/{address}":{"get":{"summary":"Pre-sign check: agents call Meridian before they sign","description":"Pre-sign check: agents call Meridian before they sign. MioDio Meridian Aave v3 risk card for an EVM address: health factor, collateral, debt and liquidation distance (~$0.005 USDC Exact on Base). Errors: 400 invalid_address or unsupported_chain (chain must be base or ethereum), 402 payment required, failed upstream reads return 200 with status partial/error (unexpected 5xx is not charged). MioDio x402 DeFi. Terms: https://meridian.miodiollc.com/terms Unpaid requests return HTTP 402 with PAYMENT-REQUIRED and the same x402 v2 PaymentRequired object in the JSON body (x402Version, accepts, resource; 5000 atomic, network eip155:8453). Empty or invalid POST bodies without a payment header still 402; with a payment header, invalid input is 400 and is not settled. Example unpaid URL: GET /v1/risk/0x0000000000000000000000000000000000000001.","x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"x402":{}}]},"parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string"},"description":"EVM address (0x-prefixed hex)."}],"responses":{"200":{"description":"JSON card after a valid payment.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Validation failed before the pay gate."},"402":{"description":"Payment required. The JSON body and the PAYMENT-REQUIRED header carry the same x402 v2 PaymentRequired object (x402Version, accepts, resource). Decode either."}}}},"/v1/lido/exit-risk":{"get":{"summary":"Pre-sign check: agents call Meridian before they sign","description":"Pre-sign check: agents call Meridian before they sign. MioDio Meridian Lido exit-risk card: stETH/ETH Curve peg, withdrawal-queue ETA and exit liquidity for a stETH amount (~$0.005 USDC Exact on Base). Errors: 400 amount_required or invalid_amount, 402 payment required, failed upstream reads return 200 with status partial/error (unexpected 5xx is not charged). MioDio x402 DeFi. Terms: https://meridian.miodiollc.com/terms Unpaid requests return HTTP 402 with PAYMENT-REQUIRED and the same x402 v2 PaymentRequired object in the JSON body (x402Version, accepts, resource; 5000 atomic, network eip155:8453). Empty or invalid POST bodies without a payment header still 402; with a payment header, invalid input is 400 and is not settled. Example unpaid URL: GET /v1/lido/exit-risk?amount=32.","x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"x402":{}}]},"parameters":[{"name":"amount","in":"query","required":true,"schema":{"type":"string"},"example":"32","description":"stETH amount in human units. Example unpaid 402 probe: GET /v1/lido/exit-risk?amount=32."}],"responses":{"200":{"description":"JSON card after a valid payment.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Validation failed before the pay gate."},"402":{"description":"Payment required. The JSON body and the PAYMENT-REQUIRED header carry the same x402 v2 PaymentRequired object (x402Version, accepts, resource). Decode either."}}}},"/v1/vault/{address}":{"get":{"summary":"Pre-sign check: agents call Meridian before they sign","description":"Pre-sign check: agents call Meridian before they sign. MioDio Meridian ERC-4626 vault risk card: share price, drawdown, APY lookback and idle cash for one vault (~$0.005 USDC Exact on Base). Errors: 400 invalid_address, unsupported_chain or invalid_amount, 402 payment required, failed upstream reads return 200 with status partial/error (unexpected 5xx is not charged). MioDio x402 DeFi. Terms: https://meridian.miodiollc.com/terms Unpaid requests return HTTP 402 with PAYMENT-REQUIRED and the same x402 v2 PaymentRequired object in the JSON body (x402Version, accepts, resource; 5000 atomic, network eip155:8453). Empty or invalid POST bodies without a payment header still 402; with a payment header, invalid input is 400 and is not settled. Example unpaid URL: GET /v1/vault/0xc1256Ae5FF1cf2719D4937adb3bbCCab2E00A2Ca.","x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"x402":{}}]},"parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string"},"description":"EVM address (0x-prefixed hex)."}],"responses":{"200":{"description":"JSON card after a valid payment.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Validation failed before the pay gate."},"402":{"description":"Payment required. The JSON body and the PAYMENT-REQUIRED header carry the same x402 v2 PaymentRequired object (x402Version, accepts, resource). Decode either."}}}},"/v1/passport/{address}":{"get":{"summary":"Pre-sign check: agents call Meridian before they sign","description":"Pre-sign check: agents call Meridian before they sign. MioDio Meridian deep passport: one decision card joining Aave v3, Lido exit and optional ERC-4626 vault reads for an EVM address (~$0.02 USDC Exact on Base). Errors: 400 invalid_address, unsupported_chain or invalid_amount, 402 payment required, failed upstream reads return 200 with status partial/error (unexpected 5xx is not charged). MioDio x402 DeFi. Terms: https://meridian.miodiollc.com/terms Unpaid requests return HTTP 402 with PAYMENT-REQUIRED and the same x402 v2 PaymentRequired object in the JSON body (x402Version, accepts, resource; 20000 atomic, network eip155:8453). Empty or invalid POST bodies without a payment header still 402; with a payment header, invalid input is 400 and is not settled. Example unpaid URL: GET /v1/passport/0x0000000000000000000000000000000000000001.","x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.02"},"protocols":[{"x402":{}}]},"parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string"},"description":"EVM address (0x-prefixed hex)."}],"responses":{"200":{"description":"JSON card after a valid payment.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Validation failed before the pay gate."},"402":{"description":"Payment required. The JSON body and the PAYMENT-REQUIRED header carry the same x402 v2 PaymentRequired object (x402Version, accepts, resource). Decode either."}}}},"/v1/sanctions/{address}":{"get":{"summary":"Pre-sign check: agents call Meridian before they sign","description":"Pre-sign check: agents call Meridian before they sign. MioDio Meridian OFAC SDN screen: exact match of one digital-currency address against public SDN Digital Currency Address entries (~$0.005 USDC Exact on Base). Informational only. Errors: 400 invalid_address or unsupported_chain, 402 payment required, unexpected 5xx is not charged. MioDio x402 DeFi. Terms: https://meridian.miodiollc.com/terms Unpaid requests return HTTP 402 with PAYMENT-REQUIRED and the same x402 v2 PaymentRequired object in the JSON body (x402Version, accepts, resource; 5000 atomic, network eip155:8453). Empty or invalid POST bodies without a payment header still 402; with a payment header, invalid input is 400 and is not settled. Example unpaid URL: GET /v1/sanctions/0x0000000000000000000000000000000000000001.","x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"x402":{}}]},"parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string"},"description":"EVM address (0x-prefixed hex)."}],"responses":{"200":{"description":"JSON card after a valid payment.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Validation failed before the pay gate."},"402":{"description":"Payment required. The JSON body and the PAYMENT-REQUIRED header carry the same x402 v2 PaymentRequired object (x402Version, accepts, resource). Decode either."}}}},"/v1/passport-sanctions/{address}":{"get":{"summary":"Pre-sign check: agents call Meridian before they sign","description":"Pre-sign check: agents call Meridian before they sign. MioDio Meridian bundle: deep passport plus OFAC SDN exact-match screen for one EVM address (~$0.02 USDC Exact on Base). Informational only. Errors: 400 invalid_address, unsupported_chain or invalid_amount, 402 payment required, failed upstream reads return 200 with status partial/error (unexpected 5xx is not charged). MioDio x402 DeFi. Terms: https://meridian.miodiollc.com/terms Unpaid requests return HTTP 402 with PAYMENT-REQUIRED and the same x402 v2 PaymentRequired object in the JSON body (x402Version, accepts, resource; 20000 atomic, network eip155:8453). Empty or invalid POST bodies without a payment header still 402; with a payment header, invalid input is 400 and is not settled. Example unpaid URL: GET /v1/passport-sanctions/0x0000000000000000000000000000000000000001.","x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.02"},"protocols":[{"x402":{}}]},"parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string"},"description":"EVM address (0x-prefixed hex)."}],"responses":{"200":{"description":"JSON card after a valid payment.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Validation failed before the pay gate."},"402":{"description":"Payment required. The JSON body and the PAYMENT-REQUIRED header carry the same x402 v2 PaymentRequired object (x402Version, accepts, resource). Decode either."}}}},"/v1/sanctions/batch":{"post":{"summary":"Pre-sign check: agents call Meridian before they sign","description":"Pre-sign check: agents call Meridian before they sign. MioDio Meridian OFAC SDN batch screen: exact match of 1-50 digital-currency addresses against public SDN Digital Currency Address entries (~$0.10 USDC Exact on Base). Informational only. Errors: 400 invalid_body, invalid_address or unsupported_chain, 402 payment required, unexpected 5xx is not charged. MioDio x402 DeFi. Terms: https://meridian.miodiollc.com/terms Unpaid requests return HTTP 402 with PAYMENT-REQUIRED and the same x402 v2 PaymentRequired object in the JSON body (x402Version, accepts, resource; 100000 atomic, network eip155:8453). Empty or invalid POST bodies without a payment header still 402; with a payment header, invalid input is 400 and is not settled.","x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.10"},"protocols":[{"x402":{}}]},"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string"},"maxItems":50},"chain":{"type":"string"}}}}}},"responses":{"200":{"description":"JSON card after a valid payment.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Validation failed before the pay gate."},"402":{"description":"Payment required. The JSON body and the PAYMENT-REQUIRED header carry the same x402 v2 PaymentRequired object (x402Version, accepts, resource). Decode either."}}}},"/v1/drift":{"post":{"summary":"Pre-sign check: agents call Meridian before they sign","description":"Pre-sign check: agents call Meridian before they sign. MioDio Meridian parameter-drift check: diffs a declared intent against the exact unsigned tx or EIP-712 payload (~$0.005 USDC Exact on Base). Verdict match, drift or cannot_verify. Unknown calldata is cannot_verify, never match. A match is not a guarantee. Errors: 400 invalid_body or unsupported_chain, 402 payment required. MioDio x402 DeFi. Terms: https://meridian.miodiollc.com/terms Unpaid requests return HTTP 402 with PAYMENT-REQUIRED and the same x402 v2 PaymentRequired object in the JSON body (x402Version, accepts, resource; 5000 atomic, network eip155:8453). Empty or invalid POST bodies without a payment header still 402; with a payment header, invalid input is 400 and is not settled.","x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"x402":{}}]},"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"chain":{"type":"string","enum":["base","ethereum"]},"intent":{"type":"object"},"tx":{"type":"object"},"typed_data":{"type":"object"}},"required":["intent"]}}}},"responses":{"200":{"description":"JSON card after a valid payment.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Validation failed before the pay gate."},"402":{"description":"Payment required. The JSON body and the PAYMENT-REQUIRED header carry the same x402 v2 PaymentRequired object (x402Version, accepts, resource). Decode either."}}}},"/v1/simulate":{"post":{"summary":"Pre-sign check: agents call Meridian before they sign","description":"Pre-sign check: agents call Meridian before they sign. MioDio Meridian transaction simulation: dry-run of an unsigned tx against latest Base/Ethereum state (~$0.01 USDC Exact on Base). Returns success or revert, gas, balances, approvals and warnings. A simulation is a point-in-time dry run, not a guarantee. Never signs or moves funds. Errors: 400 invalid_body or unsupported_chain, 402 payment required. MioDio x402 DeFi. Terms: https://meridian.miodiollc.com/terms Unpaid requests return HTTP 402 with PAYMENT-REQUIRED and the same x402 v2 PaymentRequired object in the JSON body (x402Version, accepts, resource; 10000 atomic, network eip155:8453). Empty or invalid POST bodies without a payment header still 402; with a payment header, invalid input is 400 and is not settled.","x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"chain":{"type":"string","enum":["base","ethereum"]},"tx":{"type":"object"},"intent":{"type":"object"}},"required":["tx"]}}}},"responses":{"200":{"description":"JSON card after a valid payment.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Validation failed before the pay gate."},"402":{"description":"Payment required. The JSON body and the PAYMENT-REQUIRED header carry the same x402 v2 PaymentRequired object (x402Version, accepts, resource). Decode either."}}}},"/v1/payment-check":{"post":{"summary":"Pre-sign check: agents call Meridian before they sign","description":"Pre-sign check: agents call Meridian before they sign. MioDio Meridian payment-check: on-chain read of a Base USDC Exact authorization or Transfer (~$0.005 USDC Exact). Reports nonce used, matching transfers in a ≤120 minute window, and confirmations. Informational. 503 and not settled if every read fails. Never signs or moves funds. Errors: 400 invalid_body, 402 payment required, 503 upstream_unavailable. MioDio x402 DeFi. Terms: https://meridian.miodiollc.com/terms Unpaid requests return HTTP 402 with PAYMENT-REQUIRED and the same x402 v2 PaymentRequired object in the JSON body (x402Version, accepts, resource; 5000 atomic, network eip155:8453). Empty or invalid POST bodies without a payment header still 402; with a payment header, invalid input is 400 and is not settled.","x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"x402":{}}]},"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"payer":{"type":"string"},"nonce":{"type":"string"},"pay_to":{"type":"string"},"amount":{"type":"string"},"window_minutes":{"type":"integer","minimum":1,"maximum":120},"tx":{"type":"string"}}}}}},"responses":{"200":{"description":"JSON card after a valid payment.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Validation failed before the pay gate."},"402":{"description":"Payment required. The JSON body and the PAYMENT-REQUIRED header carry the same x402 v2 PaymentRequired object (x402Version, accepts, resource). Decode either."}}}}}}