{"name":"onyx_perm_check","tier":"free","price_usdc":"0.00","endpoint":"https://onyx-actions.onrender.com/v1/onyx_perm_check","method":"POST","input_schema":{"type":"object","properties":{"action":{"type":"object","description":"The proposed action: {type, amount_usdc?, merchant?, domain?}","properties":{"type":{"type":"string","description":"e.g. transact, verify, read"},"amount_usdc":{"type":"number"},"merchant":{"type":"string"},"domain":{"type":"string"}}},"grant":{"type":"object","description":"The agent's permission grant (onyx-perm-grant/v0): allowed_actions, allowed_merchants, allowed_domains, spend_max_usdc, spend_window_usdc, spend_window_sec, velocity_max, per_counterparty_budget, principal, consent_ref, expires_at"},"history":{"type":"array","description":"Optional: recent settled actions for window/velocity checks, each {amount_usdc, ts (unix), counterparty?}. Stateless — the caller supplies the tally; the fact binds to it.","items":{"type":"object"}}},"required":["action","grant"]},"description":"Check whether an agent's proposed action stays inside its declared permission grant (allowed action, allowed merchant/domain, spend cap, rolling-window + velocity + per-counterparty budgets, expiry, principal, consent). Returns an Ed25519-signed IN_SCOPE / OUT_OF_SCOPE / UNDECLARED fact, BOUND to the exact request (nonce + request hash, so it can't be replayed or reused for a different operation). Facts, not judgments — a mechanical conformance check, never a verdict on intent. Verify free with onyx_attestation_verify.","when_to_use":null,"vs_alternatives":null,"example_request":null,"example_response":null,"settle_to":"0x3fD9ee1373562f894D322B37DFFAd7a5D2b2d78f","network":"base","facilitator":"https://facilitator.xpay.sh","payment_required":false,"free_introspection":true,"note":"GET this URL = free introspection card. POST with x402 payment header to call."}